@genexus/genexus-ide-ui 0.0.57 → 0.0.58

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 (73) hide show
  1. package/dist/cjs/{ch-checkbox_4.cjs.entry.js → ch-checkbox_3.cjs.entry.js} +54 -43
  2. package/dist/cjs/ch-suggest_4.cjs.entry.js +2 -2
  3. package/dist/cjs/ch-test-suggest.cjs.entry.js +84 -0
  4. package/dist/cjs/ch-test-tree-x.cjs.entry.js +31 -16
  5. package/dist/cjs/ch-tooltip.cjs.entry.js +85 -0
  6. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  7. package/dist/cjs/gx-ide-references.cjs.entry.js +76 -116
  8. package/dist/cjs/gx-ide-test.cjs.entry.js +51 -5
  9. package/dist/cjs/gxg-label_2.cjs.entry.js +15 -2
  10. package/dist/cjs/gxg-tree-view.cjs.entry.js +36 -14
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/collection/collection-manifest.json +2 -1
  13. package/dist/collection/common/helpers.js +3 -0
  14. package/dist/collection/components/references/helpers.js +16 -19
  15. package/dist/collection/components/references/references.css +8 -0
  16. package/dist/collection/components/references/references.js +60 -98
  17. package/dist/components/ch-suggest2.js +2 -2
  18. package/dist/components/ch-test-suggest.js +119 -0
  19. package/dist/components/ch-test-tree-x.js +38 -28
  20. package/dist/components/ch-tooltip.js +115 -0
  21. package/dist/components/gx-ide-references.js +122 -150
  22. package/dist/components/gx-ide-test.js +48 -2
  23. package/dist/components/gxg-tree-view.js +1 -434
  24. package/dist/components/index.js +2 -1
  25. package/dist/components/tooltip.js +17 -3
  26. package/dist/components/tree-view.js +453 -0
  27. package/dist/components/tree-x-list-item.js +35 -23
  28. package/dist/components/tree-x.js +21 -7
  29. package/dist/esm/{ch-checkbox_4.entry.js → ch-checkbox_3.entry.js} +55 -43
  30. package/dist/esm/ch-suggest_4.entry.js +2 -2
  31. package/dist/esm/ch-test-suggest.entry.js +80 -0
  32. package/dist/esm/ch-test-tree-x.entry.js +32 -17
  33. package/dist/esm/ch-tooltip.entry.js +81 -0
  34. package/dist/esm/genexus-ide-ui.js +1 -1
  35. package/dist/esm/gx-ide-references.entry.js +76 -116
  36. package/dist/esm/gx-ide-test.entry.js +48 -2
  37. package/dist/esm/gxg-label_2.entry.js +15 -2
  38. package/dist/esm/gxg-tree-view.entry.js +37 -15
  39. package/dist/esm/loader.js +1 -1
  40. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  41. package/dist/genexus-ide-ui/p-109209dc.entry.js +1 -0
  42. package/dist/genexus-ide-ui/p-123b8351.entry.js +1 -0
  43. package/dist/genexus-ide-ui/p-71c6da54.entry.js +1 -0
  44. package/dist/genexus-ide-ui/p-86b98a99.entry.js +1 -0
  45. package/dist/genexus-ide-ui/p-cd00ba19.entry.js +1 -0
  46. package/dist/genexus-ide-ui/p-ce9fef1a.entry.js +1 -0
  47. package/dist/genexus-ide-ui/p-d47ed4e3.entry.js +1 -0
  48. package/dist/genexus-ide-ui/p-d7b452ef.entry.js +1 -0
  49. package/dist/genexus-ide-ui/p-f62d9b6d.entry.js +1 -0
  50. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-suggest/test-suggest.css +114 -0
  51. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tooltip/tooltip.css +120 -0
  52. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/{tree-x → tree-view/tree-x}/tree-x.css +2 -3
  53. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/{tree-x-list-item → tree-view/tree-x-list-item}/tree-x-list-item.css +3 -6
  54. package/dist/node_modules/@genexus/gemini/dist/collection/components/tooltip/tooltip.css +11 -0
  55. package/dist/node_modules/@genexus/gemini/dist/collection/components/tree-view/tree-view.css +58 -12
  56. package/dist/types/common/helpers.d.ts +1 -0
  57. package/dist/types/components/references/helpers.d.ts +3 -3
  58. package/dist/types/components/references/references.d.ts +7 -19
  59. package/package.json +3 -3
  60. package/dist/cjs/update-tree-model-8b154db1.js +0 -53
  61. package/dist/components/ch-tree-x-list.js +0 -6
  62. package/dist/components/tree-x-list.js +0 -31
  63. package/dist/components/update-tree-model.js +0 -50
  64. package/dist/esm/update-tree-model-6c612f05.js +0 -50
  65. package/dist/genexus-ide-ui/p-1f3a81e3.entry.js +0 -1
  66. package/dist/genexus-ide-ui/p-46d393f5.entry.js +0 -1
  67. package/dist/genexus-ide-ui/p-5669baf5.entry.js +0 -1
  68. package/dist/genexus-ide-ui/p-60b2bd2f.entry.js +0 -1
  69. package/dist/genexus-ide-ui/p-71ecc7fd.js +0 -1
  70. package/dist/genexus-ide-ui/p-c7425416.entry.js +0 -1
  71. package/dist/genexus-ide-ui/p-dd2e0590.entry.js +0 -1
  72. package/dist/genexus-ide-ui/p-ed5cf480.entry.js +0 -1
  73. package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-x-list/tree-x-list.css +0 -6
@@ -15,7 +15,7 @@ const scrollToEdge = (event, container, scrollSpeed, scrollThreshold) => {
15
15
  }
16
16
  };
17
17
 
18
- const treeXCss = "ch-tree-x{display:flex;position:relative;width:100%;overflow:auto}ch-tree-x>.ch-tree-x-container{position:absolute;inset:0}ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list-item{pointer-events:var(--ch-tree-x-pointer-events, all)}ch-tree-x.ch-tree-x-dragging-item .ch-tree-x-list-item--deny-drop,ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list{pointer-events:none}ch-tree-x.ch-tree-x--dragging-selected-items ch-tree-x-list-item[selected]{--ch-tree-x-pointer-events:none}ch-tree-x.ch-tree-x-waiting-drop-processing{cursor:wait}ch-tree-x.ch-tree-x-waiting-drop-processing>ch-tree-x-list{pointer-events:none}.ch-tree-x-drag-info{--rtl-offset:16px;position:fixed;left:0;top:0;transform:translate(calc(var(--ch-tree-x-dragging-item-x) + var(--rtl-offset)), calc(var(--ch-tree-x-dragging-item-y) + 8px));pointer-events:none;z-index:1;animation:ch-tree-x-drag-info-fade-in 10ms}@keyframes ch-tree-x-drag-info-fade-in{0%,100%{opacity:0}}html[dir=rtl] .ch-tree-x-drag-info{--rtl-offset:-100%}";
18
+ const treeXCss = "ch-tree-x{display:flex;position:relative;width:100%;overflow:auto}ch-tree-x>.ch-tree-x-container{position:absolute;inset:0}ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list-item{pointer-events:var(--ch-tree-x-pointer-events, all)}ch-tree-x.ch-tree-x-dragging-item .ch-tree-x-list-item--deny-drop{pointer-events:none}ch-tree-x.ch-tree-x--dragging-selected-items ch-tree-x-list-item[selected]{--ch-tree-x-pointer-events:none}ch-tree-x.ch-tree-x-waiting-drop-processing{cursor:wait}ch-tree-x.ch-tree-x-waiting-drop-processing>.ch-tree-x-container{pointer-events:none}.ch-tree-x-drag-info{--rtl-offset:16px;position:fixed;left:0;top:0;transform:translate(calc(var(--ch-tree-x-dragging-item-x) + var(--rtl-offset)), calc(var(--ch-tree-x-dragging-item-y) + 8px));pointer-events:none;z-index:1;animation:ch-tree-x-drag-info-fade-in 10ms}@keyframes ch-tree-x-drag-info-fade-in{0%,100%{opacity:0}}html[dir=rtl] .ch-tree-x-drag-info{--rtl-offset:-100%}";
19
19
 
20
20
  const TREE_ITEM_TAG_NAME = "ch-tree-x-list-item";
21
21
  const TREE_TAG_NAME = "ch-tree-x";
@@ -37,6 +37,7 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
37
37
  this.__registerHost();
38
38
  this.droppableZoneEnter = createEvent(this, "droppableZoneEnter", 7);
39
39
  this.expandedItemChange = createEvent(this, "expandedItemChange", 7);
40
+ this.itemContextmenu = createEvent(this, "itemContextmenu", 7);
40
41
  this.selectedItemsChange = createEvent(this, "selectedItemsChange", 7);
41
42
  this.itemsDropped = createEvent(this, "itemsDropped", 7);
42
43
  // @todo TODO: Check if key codes works in Safari
@@ -59,7 +60,7 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
59
60
  },
60
61
  [EDIT_KEY]: event => {
61
62
  const treeItem = getFocusedTreeItem();
62
- if (!treeItem) {
63
+ if (!treeItem || !treeItem.editable) {
63
64
  return;
64
65
  }
65
66
  event.preventDefault();
@@ -136,6 +137,19 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
136
137
  // selected: item.selected
137
138
  // }));
138
139
  // }
140
+ handleContextMenuEvent(event) {
141
+ const treeItem = event.target.closest(TREE_ITEM_TAG_NAME);
142
+ if (!treeItem) {
143
+ return;
144
+ }
145
+ event.preventDefault();
146
+ this.itemContextmenu.emit({
147
+ id: treeItem.id,
148
+ itemRef: treeItem,
149
+ metadata: treeItem.metadata,
150
+ contextmenuEvent: event
151
+ });
152
+ }
139
153
  // Set edit mode in items
140
154
  handleKeyDownEvents(event) {
141
155
  const keyHandler = this.keyDownEvents[event.key];
@@ -264,11 +278,11 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
264
278
  if (!itemRef) {
265
279
  return;
266
280
  }
267
- let parentItem = itemRef.parentElement.parentElement;
281
+ let parentItem = itemRef.parentElement;
268
282
  // Expand all parents
269
283
  while (parentItem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME) {
270
284
  parentItem.expanded = true;
271
- parentItem = parentItem.parentElement.parentElement;
285
+ parentItem = parentItem.parentElement;
272
286
  }
273
287
  // Wait until the parents are expanded
274
288
  requestAnimationFrame(() => {
@@ -398,7 +412,7 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
398
412
  }
399
413
  getDirectParentsOfDraggableItems(draggingSelectedItems) {
400
414
  if (!draggingSelectedItems) {
401
- const parentTreeItemElem = this.currentDraggedItem.parentElement.parentElement;
415
+ const parentTreeItemElem = this.currentDraggedItem.parentElement;
402
416
  if (parentTreeItemElem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME) {
403
417
  this.draggedParentIds.push(parentTreeItemElem.id);
404
418
  }
@@ -447,7 +461,7 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
447
461
  "ch-tree-x-not-dragging-item": !this.draggingInTheDocument,
448
462
  "ch-tree-x--dragging-selected-items": this.draggingInTree && this.draggingSelectedItems,
449
463
  "ch-tree-x-waiting-drop-processing": this.waitDropProcessing
450
- } }, h("div", { role: "tree", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-x-container" }, h("slot", null)), this.draggingInTree && (h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
464
+ } }, h("div", { role: "tree", part: "tree-x-container", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-x-container" }, h("slot", null)), this.draggingInTree && (h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
451
465
  }
452
466
  get el() { return this; }
453
467
  static get style() { return treeXCss; }
@@ -461,7 +475,7 @@ const ChTreeX = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
461
475
  "clearSelectedItemsInfo": [64],
462
476
  "scrollIntoVisible": [64],
463
477
  "updateValidDropZone": [64]
464
- }, [[2, "keydown", "handleKeyDownEvents"], [9, "dragstart", "handleDragStart"], [11, "dragend", "handleDragEnd"], [3, "dragenter", "handleDragEnter"], [3, "dragleave", "handleDragLeave"], [1, "drop", "handleItemDrop"], [0, "itemDragStart", "handleItemDragStart"], [0, "itemDragEnd", "handleItemDragEnd"], [0, "selectedItemSync", "handleSelectedItemSync"], [0, "selectedItemChange", "handleSelectedItemChange"]]]);
478
+ }, [[2, "contextmenu", "handleContextMenuEvent"], [2, "keydown", "handleKeyDownEvents"], [9, "dragstart", "handleDragStart"], [11, "dragend", "handleDragEnd"], [3, "dragenter", "handleDragEnter"], [3, "dragleave", "handleDragLeave"], [1, "drop", "handleItemDrop"], [0, "itemDragStart", "handleItemDragStart"], [0, "itemDragEnd", "handleItemDragEnd"], [0, "selectedItemSync", "handleSelectedItemSync"], [0, "selectedItemChange", "handleSelectedItemChange"]]]);
465
479
  function defineCustomElement() {
466
480
  if (typeof customElements === "undefined") {
467
481
  return;
@@ -101,7 +101,7 @@ const scrollToEdge = (event, container, scrollSpeed, scrollThreshold) => {
101
101
  }
102
102
  };
103
103
 
104
- const treeXCss = "ch-tree-x{display:flex;position:relative;width:100%;overflow:auto}ch-tree-x>.ch-tree-x-container{position:absolute;inset:0}ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list-item{pointer-events:var(--ch-tree-x-pointer-events, all)}ch-tree-x.ch-tree-x-dragging-item .ch-tree-x-list-item--deny-drop,ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list{pointer-events:none}ch-tree-x.ch-tree-x--dragging-selected-items ch-tree-x-list-item[selected]{--ch-tree-x-pointer-events:none}ch-tree-x.ch-tree-x-waiting-drop-processing{cursor:wait}ch-tree-x.ch-tree-x-waiting-drop-processing>ch-tree-x-list{pointer-events:none}.ch-tree-x-drag-info{--rtl-offset:16px;position:fixed;left:0;top:0;transform:translate(calc(var(--ch-tree-x-dragging-item-x) + var(--rtl-offset)), calc(var(--ch-tree-x-dragging-item-y) + 8px));pointer-events:none;z-index:1;animation:ch-tree-x-drag-info-fade-in 10ms}@keyframes ch-tree-x-drag-info-fade-in{0%,100%{opacity:0}}html[dir=rtl] .ch-tree-x-drag-info{--rtl-offset:-100%}";
104
+ const treeXCss = "ch-tree-x{display:flex;position:relative;width:100%;overflow:auto}ch-tree-x>.ch-tree-x-container{position:absolute;inset:0}ch-tree-x.ch-tree-x-dragging-item ch-tree-x-list-item{pointer-events:var(--ch-tree-x-pointer-events, all)}ch-tree-x.ch-tree-x-dragging-item .ch-tree-x-list-item--deny-drop{pointer-events:none}ch-tree-x.ch-tree-x--dragging-selected-items ch-tree-x-list-item[selected]{--ch-tree-x-pointer-events:none}ch-tree-x.ch-tree-x-waiting-drop-processing{cursor:wait}ch-tree-x.ch-tree-x-waiting-drop-processing>.ch-tree-x-container{pointer-events:none}.ch-tree-x-drag-info{--rtl-offset:16px;position:fixed;left:0;top:0;transform:translate(calc(var(--ch-tree-x-dragging-item-x) + var(--rtl-offset)), calc(var(--ch-tree-x-dragging-item-y) + 8px));pointer-events:none;z-index:1;animation:ch-tree-x-drag-info-fade-in 10ms}@keyframes ch-tree-x-drag-info-fade-in{0%,100%{opacity:0}}html[dir=rtl] .ch-tree-x-drag-info{--rtl-offset:-100%}";
105
105
 
106
106
  const TREE_ITEM_TAG_NAME$1 = "ch-tree-x-list-item";
107
107
  const TREE_TAG_NAME = "ch-tree-x";
@@ -122,6 +122,7 @@ const ChTreeX = class {
122
122
  registerInstance(this, hostRef);
123
123
  this.droppableZoneEnter = createEvent(this, "droppableZoneEnter", 7);
124
124
  this.expandedItemChange = createEvent(this, "expandedItemChange", 7);
125
+ this.itemContextmenu = createEvent(this, "itemContextmenu", 7);
125
126
  this.selectedItemsChange = createEvent(this, "selectedItemsChange", 7);
126
127
  this.itemsDropped = createEvent(this, "itemsDropped", 7);
127
128
  // @todo TODO: Check if key codes works in Safari
@@ -144,7 +145,7 @@ const ChTreeX = class {
144
145
  },
145
146
  [EDIT_KEY]: event => {
146
147
  const treeItem = getFocusedTreeItem();
147
- if (!treeItem) {
148
+ if (!treeItem || !treeItem.editable) {
148
149
  return;
149
150
  }
150
151
  event.preventDefault();
@@ -221,6 +222,19 @@ const ChTreeX = class {
221
222
  // selected: item.selected
222
223
  // }));
223
224
  // }
225
+ handleContextMenuEvent(event) {
226
+ const treeItem = event.target.closest(TREE_ITEM_TAG_NAME$1);
227
+ if (!treeItem) {
228
+ return;
229
+ }
230
+ event.preventDefault();
231
+ this.itemContextmenu.emit({
232
+ id: treeItem.id,
233
+ itemRef: treeItem,
234
+ metadata: treeItem.metadata,
235
+ contextmenuEvent: event
236
+ });
237
+ }
224
238
  // Set edit mode in items
225
239
  handleKeyDownEvents(event) {
226
240
  const keyHandler = this.keyDownEvents[event.key];
@@ -349,11 +363,11 @@ const ChTreeX = class {
349
363
  if (!itemRef) {
350
364
  return;
351
365
  }
352
- let parentItem = itemRef.parentElement.parentElement;
366
+ let parentItem = itemRef.parentElement;
353
367
  // Expand all parents
354
368
  while (parentItem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
355
369
  parentItem.expanded = true;
356
- parentItem = parentItem.parentElement.parentElement;
370
+ parentItem = parentItem.parentElement;
357
371
  }
358
372
  // Wait until the parents are expanded
359
373
  requestAnimationFrame(() => {
@@ -483,7 +497,7 @@ const ChTreeX = class {
483
497
  }
484
498
  getDirectParentsOfDraggableItems(draggingSelectedItems) {
485
499
  if (!draggingSelectedItems) {
486
- const parentTreeItemElem = this.currentDraggedItem.parentElement.parentElement;
500
+ const parentTreeItemElem = this.currentDraggedItem.parentElement;
487
501
  if (parentTreeItemElem.tagName.toLowerCase() === TREE_ITEM_TAG_NAME$1) {
488
502
  this.draggedParentIds.push(parentTreeItemElem.id);
489
503
  }
@@ -532,34 +546,21 @@ const ChTreeX = class {
532
546
  "ch-tree-x-not-dragging-item": !this.draggingInTheDocument,
533
547
  "ch-tree-x--dragging-selected-items": this.draggingInTree && this.draggingSelectedItems,
534
548
  "ch-tree-x-waiting-drop-processing": this.waitDropProcessing
535
- } }, h("div", { role: "tree", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-x-container" }, h("slot", null)), this.draggingInTree && (h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
549
+ } }, h("div", { role: "tree", part: "tree-x-container", "aria-multiselectable": this.multiSelection.toString(), class: "ch-tree-x-container" }, h("slot", null)), this.draggingInTree && (h("span", { "aria-hidden": "true", class: "ch-tree-x-drag-info" }, this.dragInfo))));
536
550
  }
537
551
  get el() { return getElement(this); }
538
552
  };
539
553
  ChTreeX.style = treeXCss;
540
554
 
541
- const treeXListCss = ":host{display:grid;grid-auto-rows:min-content;position:relative;width:100%}";
542
-
543
- const ChTreeListX = class {
544
- constructor(hostRef) {
545
- registerInstance(this, hostRef);
546
- }
547
- render() {
548
- return (h(Host, { role: "group" }, h("slot", null)));
549
- }
550
- get el() { return getElement(this); }
551
- };
552
- ChTreeListX.style = treeXListCss;
553
-
554
- const treeXListItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--checkbox-size:1em;--expandable-button-width:0.75em;--ch-tree-x-list-item-dashed-line--offset:0px;--tab-width:calc(\n var(--checkbox-size) + var(--expandable-button-width) +\n (5px * 2)\n );display:grid;grid-template-rows:min-content;overflow:hidden}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:var(--padding-inline-start)}.header--disabled{opacity:0.5;pointer-events:none}.header--even{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--even-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--odd-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--level-0{--padding-inline-start:0px}.header--level-0+.expandable{--parent-padding-inline-start--even:0px}.header--expandable-offset{--own-offset:calc(\n var(--expandable-button-width) + 5px\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(var(--expandable-button-width) / 2)}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(var(--checkbox-size) / 2);--parent-negative-checkbox-offset:calc(var(--checkbox-size) / 2)}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-x-list-item-dashed-line--offset) );height:1px;width:calc( var(--tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-x-list-item-dashed-line--offset) - 4px );border:0 dashed color-mix(in srgb, currentColor 65%, transparent);border-block-end-width:1px;pointer-events:none;content-visibility:hidden;z-index:1}.last-all-line{inset-block-start:0;height:calc(100% - var(--distance-to-checkbox));border-inline-start-width:1px;border-end-start-radius:2px}.last-line{inset-block-start:0;height:100%;border-inline-start-width:1px;border-style:solid;border-block-end:unset}.expandable-button{display:grid;place-items:center;width:var(--expandable-button-width);height:var(--expandable-button-width);margin-inline-end:5px;z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc(var(--expandable-button-width) - 2px)}.expandable-button--collapsed::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H8.54v5.61h-1V8.5H1.93v-1H7.54V1.89h1V7.5h5.61Z\"/></svg>')}.expandable-button--expanded::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H1.93v-1H14.15Z\"/></svg>')}.expandable-button:focus-visible{outline:1px solid #000}.checkbox{margin-inline-end:5px}.checkbox::part(container){width:var(--checkbox-size);height:var(--checkbox-size)}.action{display:grid;grid-template:\"left-img text right-img\"/max-content 1fr max-content;align-items:center;height:100%;flex:1;cursor:pointer}.readonly-mode{padding-block:0.75px}.left-img,.right-img{display:block;width:0.875em;height:0.875em;content-visibility:auto;contain-intrinsic-size:auto 0.875em}.left-img{grid-area:left-img;margin-inline-end:5px}.right-img{grid-area:right-img;margin-inline-start:5px}.edit-name{grid-area:text;width:100%;height:100%;padding:0;margin:0;background-color:unset;color:unset;border:1px solid currentColor;font:unset;outline:unset}.downloading{width:0.75em;height:0.75em;margin-inline-start:8px;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;opacity:0.75;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.expandable{--parent-expandable-offset:0px;--parent-negative-checkbox-offset:0px;--parent-checkbox-offset:0px;display:grid;grid-template-rows:0fr;content-visibility:auto;contain-intrinsic-size:auto 100px}.expanded{grid-template-rows:1fr}:not(.expanded) ::slotted([slot=tree]){display:none;overflow:hidden;content-visibility:hidden}";
555
+ const treeXListItemCss = ":where(button){all:unset;display:flex;user-select:none;touch-action:manipulation;-webkit-user-drag:element}*,::before,::after{box-sizing:border-box}:host{--checkbox-size:1em;--expandable-button-width:0.75em;--ch-tree-x-list-item-dashed-line--offset:0px;--tab-width:calc(\n var(--checkbox-size) + var(--expandable-button-width) +\n (5px * 2)\n );display:grid;grid-template-rows:min-content;overflow:hidden}.header{--own-offset:0px;display:flex;align-items:center;min-height:calc(1em + 6px);padding-inline-start:var(--padding-inline-start)}.header--disabled{opacity:0.5;pointer-events:none}.header--even{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width)\n )}.header--even .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--even-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--even-expandable+.expandable{--parent-padding-inline-start--even:calc(\n var(--parent-padding-inline-start--odd, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width)\n )}.header--odd .dashed-line{--inset-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) +\n var(--parent-checkbox-offset) + var(--parent-expandable-offset)\n )}.header--odd-expandable{--padding-inline-start:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--odd-expandable+.expandable{--parent-padding-inline-start--odd:calc(\n var(--parent-padding-inline-start--even, 0px) + var(--tab-width) - calc(\n var(--expandable-button-width) + 5px\n )\n )}.header--level-0{--padding-inline-start:0px}.header--level-0+.expandable{--parent-padding-inline-start--even:0px}.header--expandable-offset{--own-offset:calc(\n var(--expandable-button-width) + 5px\n )}.header--expandable-offset+.expandable{--parent-expandable-offset:calc(var(--expandable-button-width) / 2)}.header--checkbox-offset+.expandable{--parent-checkbox-offset:calc(var(--checkbox-size) / 2);--parent-negative-checkbox-offset:calc(var(--checkbox-size) / 2)}.dashed-line{position:absolute;inset-inline-start:calc( var(--inset-inline-start) + var(--ch-tree-x-list-item-dashed-line--offset) );height:1px;width:calc( var(--tab-width) - var(--parent-checkbox-offset) - var(--parent-expandable-offset) - var(--own-offset) - var(--ch-tree-x-list-item-dashed-line--offset) - 4px );border:0 dashed color-mix(in srgb, currentColor 65%, transparent);border-block-end-width:1px;pointer-events:none;content-visibility:hidden;z-index:1}.last-all-line{inset-block-start:0;height:calc(100% - var(--distance-to-checkbox));border-inline-start-width:1px;border-end-start-radius:2px}.last-line{inset-block-start:0;height:100%;border-inline-start-width:1px;border-style:solid;border-block-end:unset}.expandable-button{display:grid;place-items:center;width:var(--expandable-button-width);height:var(--expandable-button-width);margin-inline-end:5px;z-index:1;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto var(--expandable-button-width)}.expandable-button::before{content:\"\";width:calc(100% - 2px);height:calc(100% - 2px);background-color:currentColor;-webkit-mask-size:calc(var(--expandable-button-width) - 2px)}.expandable-button--collapsed::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H8.54v5.61h-1V8.5H1.93v-1H7.54V1.89h1V7.5h5.61Z\"/></svg>')}.expandable-button--expanded::before{-webkit-mask-image:url('data:image/svg+xml,<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.15,8.5H1.93v-1H14.15Z\"/></svg>')}.expandable-button:focus-visible{outline:1px solid #000}.checkbox{margin-inline-end:5px}.checkbox::part(container){width:var(--checkbox-size);height:var(--checkbox-size)}.action{display:grid;grid-template:\"left-img text right-img\"/max-content 1fr max-content;align-items:center;height:100%;flex:1;cursor:pointer}.readonly-mode{padding-block:0.75px}.left-img,.right-img{display:block;width:0.875em;height:0.875em;content-visibility:auto;contain-intrinsic-size:auto 0.875em}.left-img{grid-area:left-img;margin-inline-end:5px}.right-img{grid-area:right-img;margin-inline-start:5px}.edit-name{grid-area:text;width:100%;height:100%;padding:0;margin:0;background-color:unset;color:unset;border:1px solid currentColor;font:unset;outline:unset}.downloading{width:0.75em;height:0.75em;margin-inline-start:8px;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;opacity:0.75;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.expandable{--parent-expandable-offset:0px;--parent-negative-checkbox-offset:0px;--parent-checkbox-offset:0px;display:grid;grid-auto-rows:min-content;position:relative;content-visibility:auto;contain-intrinsic-size:auto 100px}.expandable--collapsed{display:none;overflow:hidden;content-visibility:hidden}";
555
556
 
556
557
  const resetDragImage = new Image();
557
558
  const INITIAL_LEVEL = 0;
558
559
  // Selectors
559
560
  const TREE_ITEM_TAG_NAME = "ch-tree-x-list-item";
560
- const DIRECT_TREE_ITEM_CHILDREN = `:scope>*>${TREE_ITEM_TAG_NAME}`;
561
+ const DIRECT_TREE_ITEM_CHILDREN = `:scope>${TREE_ITEM_TAG_NAME}`;
561
562
  const FIRST_ENABLED_SUB_ITEM = `${TREE_ITEM_TAG_NAME}:not([disabled])`;
562
- const LAST_SUB_ITEM = `:scope>*>${TREE_ITEM_TAG_NAME}:last-child`;
563
+ const LAST_SUB_ITEM = `:scope>${TREE_ITEM_TAG_NAME}:last-child`;
563
564
  // Keys
564
565
  const EXPANDABLE_ID = "expandable";
565
566
  const ENTER_KEY = "Enter";
@@ -583,6 +584,7 @@ const ChTreeXListItem = class {
583
584
  this.itemDragEnd = createEvent(this, "itemDragEnd", 7);
584
585
  this.loadLazyContent = createEvent(this, "loadLazyContent", 7);
585
586
  this.modifyCaption = createEvent(this, "modifyCaption", 7);
587
+ this.openReference = createEvent(this, "openReference", 7);
586
588
  this.selectedItemChange = createEvent(this, "selectedItemChange", 7);
587
589
  this.selectedItemSync = createEvent(this, "selectedItemSync", 7);
588
590
  /**
@@ -729,16 +731,15 @@ const ChTreeXListItem = class {
729
731
  this.expanded = !this.expanded;
730
732
  }
731
733
  this.selected = true;
732
- this.selectedItemChange.emit(this.getSelectedInfo(mouseEventModifierKey(event), false, true));
734
+ this.selectedItemChange.emit(this.getSelectedInfo(mouseEventModifierKey(event), true));
733
735
  };
734
- this.getSelectedInfo = (ctrlKeyPressed, goToReference, selected) => ({
736
+ this.getSelectedInfo = (ctrlKeyPressed, selected) => ({
735
737
  ctrlKeyPressed: ctrlKeyPressed,
736
738
  expanded: this.expanded,
737
- goToReference: goToReference,
738
739
  id: this.el.id,
739
740
  itemRef: this.el,
740
741
  metadata: this.metadata,
741
- parentId: this.el.parentElement.parentElement.id,
742
+ parentId: this.el.parentElement.id,
742
743
  selected: selected
743
744
  });
744
745
  this.handleActionDblClick = (event) => {
@@ -747,8 +748,11 @@ const ChTreeXListItem = class {
747
748
  this.toggleSelected();
748
749
  return;
749
750
  }
751
+ this.emitOpenReference();
750
752
  // The Control key is not pressed, so the control can be expanded
751
- this.toggleExpand(event);
753
+ if (!this.leaf) {
754
+ this.toggleExpand(event);
755
+ }
752
756
  };
753
757
  /**
754
758
  * Event triggered by the following actions on the main button:
@@ -768,6 +772,7 @@ const ChTreeXListItem = class {
768
772
  this.toggleOrSelect(event);
769
773
  return;
770
774
  }
775
+ this.emitOpenReference();
771
776
  // Enter or space
772
777
  this.toggleExpand(event);
773
778
  };
@@ -853,7 +858,6 @@ const ChTreeXListItem = class {
853
858
  }
854
859
  handleSelectedChange(newValue) {
855
860
  this.selectedItemSync.emit(this.getSelectedInfo(true, // Does not matter in this case
856
- false, // Does not matter in this case
857
861
  newValue));
858
862
  }
859
863
  handleShowLinesChange(newShowLines) {
@@ -917,8 +921,7 @@ const ChTreeXListItem = class {
917
921
  return;
918
922
  }
919
923
  // Otherwise, ask the parent to focus the next sibling
920
- const parentItem = this.el.parentElement
921
- .parentElement;
924
+ const parentItem = this.el.parentElement;
922
925
  parentItem.focusNextSibling(ctrlKeyPressed);
923
926
  }
924
927
  /**
@@ -938,8 +941,7 @@ const ChTreeXListItem = class {
938
941
  return;
939
942
  }
940
943
  // Otherwise, set focus in the parent element
941
- const parentItem = this.el.parentElement
942
- .parentElement;
944
+ const parentItem = this.el.parentElement;
943
945
  // Check if the parent is not disabled
944
946
  if (parentItem.disabled) {
945
947
  parentItem.focusPreviousItem(ctrlKeyPressed);
@@ -977,7 +979,7 @@ const ChTreeXListItem = class {
977
979
  this.headerRef.focus();
978
980
  // Normal navigation auto selects the item.
979
981
  if (!ctrlKeyPressed) {
980
- this.setSelected(false);
982
+ this.setSelected();
981
983
  }
982
984
  }
983
985
  getDirectTreeItems() {
@@ -1010,34 +1012,41 @@ const ChTreeXListItem = class {
1010
1012
  toggleSelected() {
1011
1013
  const selected = !this.selected;
1012
1014
  this.selected = selected;
1013
- this.selectedItemChange.emit(this.getSelectedInfo(true, false, selected));
1015
+ this.selectedItemChange.emit(this.getSelectedInfo(true, selected));
1014
1016
  }
1015
- setSelected(goToReference) {
1017
+ setSelected() {
1016
1018
  this.selected = true;
1017
- this.selectedItemChange.emit(this.getSelectedInfo(false, goToReference, true));
1019
+ this.selectedItemChange.emit(this.getSelectedInfo(false, true));
1018
1020
  }
1019
1021
  toggleOrSelect(event) {
1020
1022
  if (mouseEventModifierKey(event)) {
1021
1023
  this.toggleSelected();
1022
1024
  }
1023
1025
  else {
1024
- this.setSelected(true);
1026
+ this.setSelected();
1025
1027
  }
1026
1028
  }
1029
+ emitOpenReference() {
1030
+ this.openReference.emit({
1031
+ id: this.el.id,
1032
+ leaf: this.leaf,
1033
+ metadata: this.metadata
1034
+ });
1035
+ }
1027
1036
  componentWillLoad() {
1028
- const parentElement = this.el.parentElement;
1037
+ const parentElementItem = this.el
1038
+ .parentElement;
1029
1039
  // Check if must lazy load
1030
1040
  this.lazyLoadItems(this.expanded);
1031
1041
  // Sync selected state with the main tree
1032
1042
  if (this.selected) {
1033
- this.selectedItemChange.emit(this.getSelectedInfo(true, false, true));
1043
+ this.selectedItemChange.emit(this.getSelectedInfo(true, true));
1034
1044
  }
1035
1045
  // No need to update more the status
1036
1046
  if (this.level === INITIAL_LEVEL) {
1037
1047
  return;
1038
1048
  }
1039
1049
  // Update checkbox status
1040
- const parentElementItem = parentElement.parentElement;
1041
1050
  if (parentElementItem.checkbox) {
1042
1051
  this.checked = parentElementItem.checked;
1043
1052
  }
@@ -1093,14 +1102,17 @@ const ChTreeXListItem = class {
1093
1102
  h("div", { class: {
1094
1103
  action: true,
1095
1104
  "readonly-mode": !this.editing
1096
- }, part: `action ${!this.editing ? "readonly-mode" : ""}`, onDblClick: !this.leaf && !this.editing ? this.handleActionDblClick : null }, this.leftImgSrc && this.renderImg("left-img", this.leftImgSrc), this.editing ? (h("input", { class: "edit-name", part: "edit-name", disabled: this.disabled, type: "text", value: this.caption, onBlur: this.removeEditMode(false), onKeyDown: this.checkIfShouldRemoveEditMode, ref: el => (this.inputRef = el) })) : (this.caption), this.rightImgSrc &&
1105
+ }, part: `action${!this.editing ? " readonly-mode" : ""}${!this.leaf && this.expanded ? " expanded" : ""}`, onDblClick: !this.editing ? this.handleActionDblClick : null }, this.leftImgSrc && this.renderImg("left-img", this.leftImgSrc), this.editable && this.editing ? (h("input", { class: "edit-name", part: "edit-name", disabled: this.disabled, type: "text", value: this.caption, onBlur: this.removeEditMode(false), onKeyDown: this.checkIfShouldRemoveEditMode, ref: el => (this.inputRef = el) })) : (this.caption), this.rightImgSrc &&
1097
1106
  this.renderImg("right-img", this.rightImgSrc)),
1098
1107
  this.showDownloadingSpinner && !this.leaf && this.downloading && (h("div", { class: "downloading", part: "downloading" }))
1099
1108
  ]), (showAllLines || showLastLine) && (h("div", { class: {
1100
1109
  "dashed-line": true,
1101
1110
  "last-all-line": showAllLines && this.lastItem,
1102
1111
  "last-line": showLastLine
1103
- }, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (h("div", { "aria-busy": this.downloading.toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: { expandable: true, expanded: this.expanded }, part: `expandable${this.expanded ? " expanded" : ""}` }, h("slot", { name: "tree" })))));
1112
+ }, part: `dashed-line${this.lastItem ? " last-all-line" : ""}` }))), hasContent && (h("div", { role: "group", "aria-busy": this.downloading.toString(), "aria-live": this.downloading ? "polite" : null, id: EXPANDABLE_ID, class: {
1113
+ expandable: true,
1114
+ "expandable--collapsed": !this.expanded
1115
+ }, part: `expandable${this.expanded ? " expanded" : " collapsed"}` }, h("slot", null)))));
1104
1116
  }
1105
1117
  get el() { return getElement(this); }
1106
1118
  static get watchers() { return {
@@ -1114,4 +1126,4 @@ const ChTreeXListItem = class {
1114
1126
  };
1115
1127
  ChTreeXListItem.style = treeXListItemCss;
1116
1128
 
1117
- export { CheckBox as ch_checkbox, ChTreeX as ch_tree_x, ChTreeListX as ch_tree_x_list, ChTreeXListItem as ch_tree_x_list_item };
1129
+ export { CheckBox as ch_checkbox, ChTreeX as ch_tree_x, ChTreeXListItem as ch_tree_x_list_item };
@@ -198,7 +198,7 @@ const ChSuggest = class {
198
198
  windowClosedHandler() {
199
199
  this.textInput.focus();
200
200
  this.windowHidden = true;
201
- this.el.innerHTML = "";
201
+ this.slot.innerHTML = "";
202
202
  }
203
203
  // 9.PUBLIC METHODS API //
204
204
  /**
@@ -210,7 +210,7 @@ const ChSuggest = class {
210
210
  }
211
211
  // 10.RENDER() FUNCTION //
212
212
  render() {
213
- return (h(Host, null, h("div", { class: "main-wrapper", part: "main-wrapper" }, h("div", { class: "label-input-wrapper", part: "label-input-wrapper" }, this.showLabel && this.label && (h("label", { id: "label", htmlFor: "input", part: "label" }, this.label)), h("input", { type: "text", id: "input", part: "input", class: "input", ref: el => (this.textInput = el), onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.onFocusHandler, value: this.value, autocomplete: "off", "aria-controls": "ch-window", "aria-label": !this.showLabel && this.label ? this.label : undefined, "aria-labelledby": this.showLabel && this.label ? "label" : undefined, "aria-expanded": this.windowHidden.toString() })), h("ch-window", { id: "ch-window", container: this.textInput, "close-on-outside-click": true, "close-on-escape": true, xAlign: "inside-start", yAlign: "outside-end", ref: el => (this.chWindow = el), showHeader: this.showHeader, caption: this.suggestTitle, exportparts: "\n header:header, \n caption:title, \n close:close-button,\n window:dropdown" }, h("slot", { onSlotchange: this.evaluateSlotIsEmpty })))));
213
+ return (h(Host, null, h("div", { class: "main-wrapper", part: "main-wrapper" }, h("div", { class: "label-input-wrapper", part: "label-input-wrapper" }, this.showLabel && this.label && (h("label", { id: "label", htmlFor: "input", part: "label" }, this.label)), h("input", { type: "text", id: "input", part: "input", class: "input", ref: el => (this.textInput = el), onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.onFocusHandler, value: this.value, autocomplete: "off", "aria-controls": "ch-window", "aria-label": !this.showLabel && this.label ? this.label : undefined, "aria-labelledby": this.showLabel && this.label ? "label" : undefined, "aria-expanded": this.windowHidden.toString() })), h("ch-window", { id: "ch-window", container: this.textInput, "close-on-outside-click": true, "close-on-escape": true, xAlign: "inside-start", yAlign: "outside-end", ref: el => (this.chWindow = el), showHeader: this.showHeader, caption: this.suggestTitle, exportparts: "\n header:header, \n caption:title, \n close:close-button,\n window:dropdown" }, h("slot", { onSlotchange: this.evaluateSlotIsEmpty, ref: el => (this.slot = el) })))));
214
214
  }
215
215
  static get delegatesFocus() { return true; }
216
216
  get el() { return getElement(this); }
@@ -0,0 +1,80 @@
1
+ import { h, r as registerInstance, H as Host } from './index-0da01575.js';
2
+
3
+ /**
4
+ * @description This function converts SelectorCategoryData[] SuggestData
5
+ */
6
+ const convertObjectDataToSuggestData = (selectorCategoriesData) => {
7
+ const suggestData = {
8
+ suggestItems: null,
9
+ suggestLists: []
10
+ };
11
+ if (selectorCategoriesData.length) {
12
+ selectorCategoriesData.forEach(selectorCategory => {
13
+ const suggestList = {
14
+ label: selectorCategory.name,
15
+ items: []
16
+ };
17
+ selectorCategory.items.forEach((objectData) => {
18
+ const suggestItem = {
19
+ value: objectData.id,
20
+ description: objectData.description,
21
+ icon: objectData.icon
22
+ };
23
+ suggestList.items.push(suggestItem);
24
+ });
25
+ suggestData.suggestLists.push(suggestList);
26
+ });
27
+ }
28
+ return suggestData;
29
+ };
30
+
31
+ /* eslint-disable @typescript-eslint/no-use-before-define */
32
+ const renderSuggestLists = (suggestData) => {
33
+ if (suggestData === null || suggestData === void 0 ? void 0 : suggestData.suggestLists.length) {
34
+ const randomNumber = Math.random();
35
+ const result = suggestData.suggestLists.map((list) => {
36
+ return (h("ch-suggest-list", { label: list.label, key: randomNumber }, list.items.map((item) => {
37
+ return renderSuggestListsItem(item);
38
+ })));
39
+ });
40
+ return result;
41
+ }
42
+ return null;
43
+ };
44
+ const renderSuggestListsItem = (suggestItem) => {
45
+ return (h("ch-suggest-list-item", { value: suggestItem.value }, [suggestItem.description || suggestItem.value]));
46
+ };
47
+
48
+ const testSuggestCss = ":host{display:block}:root{--highlight-color:rgb(163, 25, 161)}ch-suggest{display:block}ch-suggest::part(title){display:block;font-weight:bold}ch-suggest::part(label){font-weight:500}ch-suggest[label-position=\"start\"]::part(label){margin-inline-end:8px;display:flex;align-items:center}ch-suggest[label-position=\"above\"]::part(label){margin-block-end:4px}ch-suggest::part(close-button){display:block;width:16px;height:16px}ch-suggest::part(close-button)::after{content:\"✖\";line-height:8px;height:100%;display:block;border:1px solid black;cursor:pointer;text-align:center;line-height:16px}ch-suggest::part(header){display:flex;justify-content:space-between;align-items:center;margin-block-end:8px}ch-suggest::part(ch-window-close){width:10px;height:10px}ch-suggest::part(input){padding:4px 8px;border:1px solid black}ch-suggest::part(input):focus{outline:2px solid var(--highlight-color);border-color:var(--highlight-color)}ch-suggest-list{background-color:rgba(234, 234, 234, 0.224);border:1px solid rgba(128, 128, 128, 0.275);border-radius:4px;padding:8px;margin-block-end:4px}ch-suggest-list::part(title){font-size:14px;font-weight:bold;text-transform:uppercase;margin:4px 0 8px 0}ch-suggest-list-item::part(button){padding:4px 8px;cursor:pointer;gap:4px}ch-suggest-list-item ch-icon{--icon-size:16px;margin-inline-end:2px}ch-suggest-list-item:hover{background-color:var(--ch-color--violet-100)}ch-suggest-list-item:focus,ch-suggest-list-item[selected]:focus{outline:2px solid var(--highlight-color)}ch-suggest-list-item[selected]{background-color:rgba(241, 184, 243, 0.42);outline:none}ch-suggest-list-item::part(button):focus{outline:2px solid var(--highlight-color);border-color:var(--highlight-color)}ch-suggest-list-item::part(content-wrapper){display:flex;gap:8px}ch-suggest::part(dropdown){margin-block-start:4px;border:1px solid black;background-color:white;padding:8px}:focus{outline-style:none !important}";
49
+
50
+ const ChTestSuggest = class {
51
+ constructor(hostRef) {
52
+ registerInstance(this, hostRef);
53
+ // 5.EVENTS (EMIT) //
54
+ // 6.COMPONENT LIFECYCLE EVENTS //
55
+ // 7.LISTENERS //
56
+ // 8.PUBLIC METHODS API //
57
+ // 9.LOCAL METHODS //
58
+ /**
59
+ * This handler gets fired every time the value of the 'Select Object' ch-suggest changes.
60
+ */
61
+ this.selectObjectValueChangedHandler = async (e) => {
62
+ const value = e.detail;
63
+ this.selectorSourceCallback(value)
64
+ .then(result => {
65
+ /* show suggestions*/
66
+ this.objectsSuggestions = convertObjectDataToSuggestData(result);
67
+ })
68
+ .catch(() => {
69
+ // to do
70
+ });
71
+ };
72
+ }
73
+ // 10.RENDER() FUNCTION //
74
+ render() {
75
+ return (h(Host, null, h("ch-suggest", { onValueChanged: this.selectObjectValueChangedHandler, part: "object-selector-suggest", exportparts: "dropdown:select-object-dropdown" }, renderSuggestLists(this.objectsSuggestions))));
76
+ }
77
+ };
78
+ ChTestSuggest.style = testSuggestCss;
79
+
80
+ export { ChTestSuggest as ch_test_suggest };
@@ -1,21 +1,25 @@
1
- import { r as registerInstance, h, f as forceUpdate, H as Host } from './index-0da01575.js';
1
+ import { r as registerInstance, c as createEvent, h, f as forceUpdate } from './index-0da01575.js';
2
2
 
3
3
  const testTreeXCss = "ch-test-tree-x{display:contents}";
4
4
 
5
5
  const DEFAULT_DRAG_DISABLED_VALUE = false;
6
6
  const DEFAULT_DROP_DISABLED_VALUE = false;
7
7
  const DEFAULT_CLASS_VALUE = "tree-view-item";
8
+ const DEFAULT_EDITABLE_ITEMS_VALUE = true;
8
9
  const DEFAULT_EXPANDED_VALUE = false;
9
10
  const DEFAULT_INDETERMINATE_VALUE = false;
10
11
  const DEFAULT_LAZY_VALUE = false;
12
+ const DEFAULT_ORDER_VALUE = 0;
11
13
  const DEFAULT_SELECTED_VALUE = false;
12
14
  const ChTestTreeX = class {
13
15
  constructor(hostRef) {
14
16
  registerInstance(this, hostRef);
17
+ this.itemContextmenu = createEvent(this, "itemContextmenu", 7);
18
+ this.itemOpenReference = createEvent(this, "itemOpenReference", 7);
19
+ this.selectedItemsChange = createEvent(this, "selectedItemsChange", 7);
15
20
  // UI Models
16
21
  this.flattenedTreeModel = new Map();
17
22
  this.selectedItems = new Set();
18
- this.flattenedLazyTreeModel = new Map();
19
23
  /**
20
24
  * This property lets you specify if the tree is waiting to process the drop
21
25
  * of items.
@@ -23,12 +27,12 @@ const ChTestTreeX = class {
23
27
  this.waitDropProcessing = false;
24
28
  /**
25
29
  * This attribute lets you specify if the drag operation is disabled in all
26
- * items by default. If `true`, the control can't be dragged.
30
+ * items by default. If `true`, the items can't be dragged.
27
31
  */
28
32
  this.dragDisabled = DEFAULT_DRAG_DISABLED_VALUE;
29
33
  /**
30
34
  * This attribute lets you specify if the drop operation is disabled in all
31
- * items by default. If `true`, the control won't accept any drops.
35
+ * items by default. If `true`, the items won't accept any drops.
32
36
  */
33
37
  this.dropDisabled = DEFAULT_DROP_DISABLED_VALUE;
34
38
  /**
@@ -39,6 +43,11 @@ const ChTestTreeX = class {
39
43
  * Set this attribute if you want to allow multi selection of the items.
40
44
  */
41
45
  this.multiSelection = false;
46
+ /**
47
+ * This attribute lets you specify if the edit operation is enabled in all
48
+ * items by default. If `true`, the items can edit its caption in place.
49
+ */
50
+ this.editableItems = DEFAULT_EDITABLE_ITEMS_VALUE;
42
51
  /**
43
52
  * `true` to display the relation between tree items and tree lists using
44
53
  * lines.
@@ -58,6 +67,7 @@ const ChTestTreeX = class {
58
67
  });
59
68
  };
60
69
  this.handleSelectedItemsChange = (event) => {
70
+ event.stopPropagation();
61
71
  const itemsToProcess = new Map(event.detail);
62
72
  // Remove no longer selected items
63
73
  this.selectedItems.forEach(selectedItemId => {
@@ -81,12 +91,17 @@ const ChTestTreeX = class {
81
91
  newSelectedItem.expanded = newSelectedItemInfo.expanded;
82
92
  this.selectedItems.add(itemId);
83
93
  });
94
+ this.selectedItemsChange.emit(event.detail);
84
95
  };
85
96
  this.handleExpandedItemChange = (event) => {
86
97
  const detail = event.detail;
87
98
  const itemInfo = this.flattenedTreeModel.get(detail.id).item;
88
99
  itemInfo.expanded = detail.expanded;
89
100
  };
101
+ this.handleItemContextmenu = (event) => {
102
+ event.stopPropagation();
103
+ this.itemContextmenu.emit(event.detail);
104
+ };
90
105
  this.handleItemsDropped = (event) => {
91
106
  if (!this.dropItemsCallback) {
92
107
  return;
@@ -151,13 +166,13 @@ const ChTestTreeX = class {
151
166
  itemUIModelExtended.parentItem = newParentUIModel;
152
167
  };
153
168
  this.renderSubModel = (treeSubModel, lastItem, level) => {
154
- var _a, _b;
155
- return (h("ch-tree-x-list-item", { id: treeSubModel.id, caption: treeSubModel.caption, checkbox: treeSubModel.checkbox, checked: treeSubModel.checked, class: treeSubModel.class, disabled: treeSubModel.disabled, downloading: treeSubModel.downloading, dragDisabled: (_a = treeSubModel.dragDisabled) !== null && _a !== void 0 ? _a : this.dragDisabled, dropDisabled: (_b = treeSubModel.dropDisabled) !== null && _b !== void 0 ? _b : this.dropDisabled, expanded: treeSubModel.expanded, indeterminate: treeSubModel.indeterminate, lastItem: lastItem, lazyLoad: treeSubModel.lazy, leaf: treeSubModel.leaf, leftImgSrc: treeSubModel.leftImgSrc, level: level, metadata: treeSubModel.metadata, rightImgSrc: treeSubModel.rightImgSrc, selected: treeSubModel.selected, showExpandableButton: treeSubModel.showExpandableButton, showLines: this.showLines, toggleCheckboxes: treeSubModel.toggleCheckboxes }, !treeSubModel.leaf &&
169
+ var _a, _b, _c;
170
+ return (h("ch-tree-x-list-item", { id: treeSubModel.id, caption: treeSubModel.caption, checkbox: treeSubModel.checkbox, checked: treeSubModel.checked, class: treeSubModel.class, disabled: treeSubModel.disabled, downloading: treeSubModel.downloading, dragDisabled: (_a = treeSubModel.dragDisabled) !== null && _a !== void 0 ? _a : this.dragDisabled, dropDisabled: (_b = treeSubModel.dropDisabled) !== null && _b !== void 0 ? _b : this.dropDisabled, editable: (_c = treeSubModel.editable) !== null && _c !== void 0 ? _c : this.editableItems, expanded: treeSubModel.expanded, indeterminate: treeSubModel.indeterminate, lastItem: lastItem, lazyLoad: treeSubModel.lazy, leaf: treeSubModel.leaf, leftImgSrc: treeSubModel.leftImgSrc, level: level, metadata: treeSubModel.metadata, rightImgSrc: treeSubModel.rightImgSrc, selected: treeSubModel.selected, showExpandableButton: treeSubModel.showExpandableButton, showLines: this.showLines, toggleCheckboxes: treeSubModel.toggleCheckboxes }, !treeSubModel.leaf &&
156
171
  treeSubModel.items != null &&
157
- treeSubModel.items.length !== 0 && (h("ch-tree-x-list", { slot: "tree" }, treeSubModel.items.map((subModel, index) => this.renderSubModel(subModel, this.showLines && index === treeSubModel.items.length - 1, level + 1))))));
172
+ treeSubModel.items.map((subModel, index) => this.renderSubModel(subModel, this.showLines && index === treeSubModel.items.length - 1, level + 1))));
158
173
  };
159
174
  this.flattenItemUIModel = (parentModel) => (item) => {
160
- var _a, _b, _c, _d;
175
+ var _a, _b, _c, _d, _e;
161
176
  this.flattenedTreeModel.set(item.id, {
162
177
  parentItem: parentModel,
163
178
  item: item
@@ -168,10 +183,8 @@ const ChTestTreeX = class {
168
183
  (_a = item.expanded) !== null && _a !== void 0 ? _a : (item.expanded = DEFAULT_EXPANDED_VALUE);
169
184
  (_b = item.indeterminate) !== null && _b !== void 0 ? _b : (item.indeterminate = DEFAULT_INDETERMINATE_VALUE);
170
185
  (_c = item.lazy) !== null && _c !== void 0 ? _c : (item.lazy = DEFAULT_LAZY_VALUE);
171
- (_d = item.selected) !== null && _d !== void 0 ? _d : (item.selected = DEFAULT_SELECTED_VALUE);
172
- if (item.lazy) {
173
- this.flattenedLazyTreeModel.set(item.id, item);
174
- }
186
+ (_d = item.order) !== null && _d !== void 0 ? _d : (item.order = DEFAULT_ORDER_VALUE);
187
+ (_e = item.selected) !== null && _e !== void 0 ? _e : (item.selected = DEFAULT_SELECTED_VALUE);
175
188
  if (item.selected) {
176
189
  this.selectedItems.add(item.id);
177
190
  }
@@ -186,9 +199,8 @@ const ChTestTreeX = class {
186
199
  * lazy state, updates the item's UI Model.
187
200
  */
188
201
  async loadLazyContent(itemId, items, downloading = false, lazy = false) {
189
- const itemToLazyLoadContent = this.flattenedLazyTreeModel.get(itemId);
202
+ const itemToLazyLoadContent = this.flattenedTreeModel.get(itemId).item;
190
203
  // Establish that the content was lazy loaded
191
- this.flattenedLazyTreeModel.delete(itemId);
192
204
  itemToLazyLoadContent.downloading = downloading;
193
205
  itemToLazyLoadContent.lazy = lazy;
194
206
  // Check if there is items to add
@@ -339,11 +351,15 @@ const ChTestTreeX = class {
339
351
  }
340
352
  });
341
353
  }
354
+ handleOpenReference(event) {
355
+ event.stopPropagation();
356
+ this.itemOpenReference.emit(event.detail);
357
+ }
342
358
  flattenSubModel(model) {
343
359
  const items = model.items;
344
360
  if (!items) {
345
361
  // Make sure that subtrees don't have an undefined array
346
- if (model.leaf === false) {
362
+ if (model.leaf !== true) {
347
363
  model.items = [];
348
364
  }
349
365
  return;
@@ -359,14 +375,13 @@ const ChTestTreeX = class {
359
375
  }
360
376
  flattenModel() {
361
377
  this.flattenedTreeModel.clear();
362
- this.flattenedLazyTreeModel.clear();
363
378
  this.flattenSubModel({ id: null, caption: null, items: this.treeModel });
364
379
  }
365
380
  componentWillLoad() {
366
381
  this.flattenModel();
367
382
  }
368
383
  render() {
369
- return (h(Host, null, h("ch-tree-x", { class: this.cssClass || null, multiSelection: this.multiSelection, waitDropProcessing: this.waitDropProcessing, onDroppableZoneEnter: this.handleDroppableZoneEnter, onExpandedItemChange: this.handleExpandedItemChange, onItemsDropped: this.handleItemsDropped, onSelectedItemsChange: this.handleSelectedItemsChange, ref: el => (this.treeRef = el) }, this.treeModel.map((subModel, index) => this.renderSubModel(subModel, this.showLines && index === this.treeModel.length - 1, 0)))));
384
+ return (h("ch-tree-x", { class: this.cssClass || null, multiSelection: this.multiSelection, waitDropProcessing: this.waitDropProcessing, onDroppableZoneEnter: this.handleDroppableZoneEnter, onExpandedItemChange: this.handleExpandedItemChange, onItemContextmenu: this.handleItemContextmenu, onItemsDropped: this.handleItemsDropped, onSelectedItemsChange: this.handleSelectedItemsChange, ref: el => (this.treeRef = el) }, this.treeModel.map((subModel, index) => this.renderSubModel(subModel, this.showLines && index === this.treeModel.length - 1, 0))));
370
385
  }
371
386
  static get watchers() { return {
372
387
  "treeModel": ["handleTreeModelChange"]