@eui/components 17.0.1-snapshot-1701185079748 → 17.0.1-snapshot-1701285551630
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.
- package/directives/eui-smooth-scroll.directive.d.ts +0 -1
- package/directives/eui-smooth-scroll.directive.d.ts.map +1 -1
- package/docs/components/EuiAppTopMessageComponent.html +24 -0
- package/docs/components/EuiButtonComponent.html +24 -0
- package/docs/components/EuiButtonsComponent.html +25 -1
- package/docs/components/EuiCardComponent.html +24 -0
- package/docs/components/EuiChipComponent.html +24 -0
- package/docs/components/EuiChipListComponent.html +24 -0
- package/docs/components/EuiDashboardCardComponent.html +2 -2
- package/docs/components/EuiDatepickerComponent.html +24 -0
- package/docs/components/EuiDialogComponent.html +37 -0
- package/docs/components/EuiDropdownComponent.html +25 -1
- package/docs/components/EuiFeedbackMessageComponent.html +24 -0
- package/docs/components/EuiFooterComponent.html +24 -0
- package/docs/components/EuiIconComponent.html +24 -0
- package/docs/components/EuiIconSvgComponent.html +24 -0
- package/docs/components/EuiLabelComponent.html +24 -0
- package/docs/components/EuiLanguageSelectorComponent.html +24 -0
- package/docs/components/EuiListComponent.html +24 -0
- package/docs/components/EuiListItemComponent.html +24 -0
- package/docs/components/EuiMessageBoxComponent.html +37 -0
- package/docs/components/EuiOverlayBodyComponent.html +24 -0
- package/docs/components/EuiOverlayComponent.html +24 -0
- package/docs/components/EuiOverlayFooterComponent.html +24 -0
- package/docs/components/EuiOverlayHeaderComponent.html +24 -0
- package/docs/components/EuiOverlayHeaderTitleComponent.html +24 -0
- package/docs/components/EuiPageColumnComponent.html +24 -0
- package/docs/components/EuiPageFooterComponent.html +24 -0
- package/docs/components/EuiPageTopContentComponent.html +24 -0
- package/docs/components/EuiPopoverComponent.html +37 -0
- package/docs/components/EuiProgressCircleComponent.html +24 -0
- package/docs/components/EuiSlideToggleComponent.html +24 -0
- package/docs/components/EuiTabComponent.html +37 -0
- package/docs/components/EuiTableComponent.html +24 -0
- package/docs/components/EuiTableFilterComponent.html +24 -0
- package/docs/components/EuiTextareaComponent.html +37 -0
- package/docs/components/EuiToolbarItemsComponent.html +24 -0
- package/docs/components/EuiTreeComponent.html +26 -2
- package/docs/dependencies.html +2 -2
- package/docs/directives/BaseDirective.html +57 -0
- package/docs/directives/BaseStatesDirective.html +57 -0
- package/docs/directives/EuiButtonsActionsContentTagDirective.html +119 -7
- package/docs/directives/EuiButtonsLocalMenuContentTagDirective.html +119 -7
- package/docs/directives/EuiSmoothScrollToDirective.html +0 -13
- package/docs/js/menu-wc.js +18 -18
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/directives/eui-smooth-scroll.directive.mjs +2 -3
- package/esm2022/eui-button/eui-button.component.mjs +3 -3
- package/esm2022/eui-buttons/eui-buttons.component.mjs +19 -7
- package/esm2022/eui-dashboard-button/eui-dashboard-button.component.mjs +2 -2
- package/esm2022/eui-dashboard-card/eui-dashboard-card.component.mjs +10 -6
- package/esm2022/eui-dropdown/eui-dropdown.component.mjs +3 -3
- package/esm2022/eui-fieldset/eui-fieldset.component.mjs +2 -2
- package/esm2022/eui-input-number/eui-input-number.component.mjs +2 -2
- package/esm2022/eui-select/eui-select.component.mjs +2 -1
- package/esm2022/eui-tabs/eui-tab/eui-tab.component.mjs +2 -2
- package/esm2022/eui-tabs/eui-tabs.component.mjs +2 -2
- package/esm2022/eui-tree/eui-tree-helper.mjs +7 -4
- package/esm2022/eui-tree/eui-tree.component.mjs +119 -63
- package/esm2022/eui-tree/eui-tree.model.mjs +1 -1
- package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +2 -2
- package/esm2022/layout/eui-notifications-v2/eui-notifications.component.mjs +2 -2
- package/esm2022/shared/base/base-states.directive.mjs +10 -8
- package/esm2022/shared/base/base.directive.mjs +9 -8
- package/eui-button/eui-button.component.d.ts.map +1 -1
- package/eui-buttons/eui-buttons.component.d.ts +2 -0
- package/eui-buttons/eui-buttons.component.d.ts.map +1 -1
- package/eui-dashboard-card/eui-dashboard-card.component.d.ts +6 -3
- package/eui-dashboard-card/eui-dashboard-card.component.d.ts.map +1 -1
- package/eui-select/eui-select.component.d.ts.map +1 -1
- package/eui-tree/eui-tree-helper.d.ts.map +1 -1
- package/eui-tree/eui-tree.component.d.ts +3 -1
- package/eui-tree/eui-tree.component.d.ts.map +1 -1
- package/eui-tree/eui-tree.model.d.ts +1 -0
- package/eui-tree/eui-tree.model.d.ts.map +1 -1
- package/fesm2022/eui-components-directives.mjs +1 -2
- package/fesm2022/eui-components-directives.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button.mjs +2 -2
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-buttons.mjs +18 -6
- package/fesm2022/eui-components-eui-buttons.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dashboard-button.mjs +2 -2
- package/fesm2022/eui-components-eui-dashboard-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dashboard-card.mjs +9 -5
- package/fesm2022/eui-components-eui-dashboard-card.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +2 -2
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-fieldset.mjs +2 -2
- package/fesm2022/eui-components-eui-fieldset.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-number.mjs +1 -1
- package/fesm2022/eui-components-eui-input-number.mjs.map +1 -1
- package/fesm2022/eui-components-eui-select.mjs +1 -0
- package/fesm2022/eui-components-eui-select.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +4 -4
- package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +124 -65
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +4 -4
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/fesm2022/eui-components-shared-base.mjs +16 -13
- package/fesm2022/eui-components-shared-base.mjs.map +1 -1
- package/package.json +13 -13
- package/shared/base/base-states.directive.d.ts +1 -0
- package/shared/base/base-states.directive.d.ts.map +1 -1
- package/shared/base/base.directive.d.ts +1 -0
- package/shared/base/base.directive.d.ts.map +1 -1
@@ -191,6 +191,10 @@ class EuiTreeComponent {
|
|
191
191
|
if (changes['nodes']?.currentValue !== changes['nodes']?.previousValue) {
|
192
192
|
this.renderTree = false;
|
193
193
|
this.initTree();
|
194
|
+
if (this.treeComponentInstance) {
|
195
|
+
this.treeComponentInstance?.renderNodeChanges([]);
|
196
|
+
this.treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);
|
197
|
+
}
|
194
198
|
}
|
195
199
|
}
|
196
200
|
ngOnDestroy() {
|
@@ -248,9 +252,9 @@ class EuiTreeComponent {
|
|
248
252
|
this.cdkTreeControl.collapseAll();
|
249
253
|
this.changeDetectorRef.markForCheck();
|
250
254
|
}
|
251
|
-
filterTerm(filterInput) {
|
255
|
+
filterTerm(filterInput, filterKey, showChildrenOfMatchedItems) {
|
252
256
|
if (filterInput !== '' && filterInput !== null && typeof filterInput !== 'undefined') {
|
253
|
-
this.treeDataRunTime = this.filterTreeData(structuredClone(this.treeDataRunTimeBackup), 'label', filterInput);
|
257
|
+
this.treeDataRunTime = this.filterTreeData(structuredClone(this.treeDataRunTimeBackup), filterKey || 'label', filterInput, showChildrenOfMatchedItems);
|
254
258
|
this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);
|
255
259
|
this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);
|
256
260
|
this.cdkTreeControl = new NestedTreeControl((node) => node?.children, { trackBy: this.trackByControl });
|
@@ -259,7 +263,8 @@ class EuiTreeComponent {
|
|
259
263
|
this.changeDetectorRef.detectChanges();
|
260
264
|
this.renderTree = true;
|
261
265
|
this.changeDetectorRef.detectChanges();
|
262
|
-
this.
|
266
|
+
this.expandMatched(this.treeDataRunTime);
|
267
|
+
// this.expandAll();
|
263
268
|
}
|
264
269
|
else {
|
265
270
|
this.treeDataRunTime = structuredClone(this.treeDataRunTimeBackup);
|
@@ -278,29 +283,36 @@ class EuiTreeComponent {
|
|
278
283
|
this.changeDetectorRef.markForCheck();
|
279
284
|
}
|
280
285
|
updateTreeItem(treeItem, path) {
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
treeItemRuntime
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
this.
|
299
|
-
|
300
|
-
|
301
|
-
|
286
|
+
if (treeItem && path) {
|
287
|
+
this.setTreeData(path, this.processInputs([treeItem])[0]);
|
288
|
+
const pathArr = path.split('.');
|
289
|
+
const index = parseInt(pathArr.pop(), 10);
|
290
|
+
const treeItemRuntime = this.calculateRunTimeState(treeItem, index, pathArr.join('.'));
|
291
|
+
if (treeItemRuntime?.children?.length > 0) {
|
292
|
+
treeItemRuntime.children = this.applyRunTimeLastItems(treeItemRuntime.children);
|
293
|
+
}
|
294
|
+
this.setTreeDataRunTimeBackup(path, treeItemRuntime);
|
295
|
+
this.setTreeDataRunTime(path, treeItemRuntime);
|
296
|
+
// itemRecursiveSelectionState
|
297
|
+
const itemRecursiveSelectionState = this.calculateItemSelectionRecursiveState(treeItem);
|
298
|
+
this.setRunTimeSelectionRecursiveStateTree(path, itemRecursiveSelectionState);
|
299
|
+
this.syncStateChangesAtPath(path);
|
300
|
+
// Rendering
|
301
|
+
this.changeDetectorRef.detectChanges();
|
302
|
+
this.treeComponentInstance.renderNodeChanges([]);
|
303
|
+
this.treeComponentInstance.renderNodeChanges(this.treeDataRunTime);
|
304
|
+
if (this.cdkTreeControl.isExpanded(treeItemRuntime) && !treeItem.node.isExpanded) {
|
305
|
+
this.cdkTreeControl.toggle(treeItemRuntime);
|
306
|
+
}
|
307
|
+
else if (!this.cdkTreeControl.isExpanded(treeItemRuntime) && treeItem.node.isExpanded) {
|
308
|
+
this.cdkTreeControl.expand(treeItemRuntime);
|
309
|
+
}
|
310
|
+
this.renderInitialExpand(this.getRunTimeTreeItem(path)?.children);
|
311
|
+
this.getInitialSelection(this.getRunTimeTreeItem(path)?.children)?.forEach((runTimeItem) => {
|
312
|
+
this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeItem.path));
|
313
|
+
});
|
314
|
+
this.changeDetectorRef.detectChanges();
|
302
315
|
}
|
303
|
-
this.changeDetectorRef.detectChanges();
|
304
316
|
}
|
305
317
|
onNodeClick(treeRunTimeItem) {
|
306
318
|
this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));
|
@@ -317,7 +329,7 @@ class EuiTreeComponent {
|
|
317
329
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
318
330
|
nodeSelected(evt, path) {
|
319
331
|
const item = this.getTreeItem(path);
|
320
|
-
const
|
332
|
+
const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);
|
321
333
|
const renderedRunTimeTreeItem = this.getRunTimeTreeItem(path);
|
322
334
|
const node = item.node;
|
323
335
|
// console.log(path,item,runTimeTreeItem, renderedRunTimeTreeItem);
|
@@ -332,7 +344,7 @@ class EuiTreeComponent {
|
|
332
344
|
}
|
333
345
|
}
|
334
346
|
this.setRunTimeSelectionRecursiveStateTree(path, this.calculateItemSelectionRecursiveState(structuredClone(this.getTreeItem(path))));
|
335
|
-
if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length
|
347
|
+
if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length >= 0) {
|
336
348
|
if (node?.selectConfig?.recursive) {
|
337
349
|
// this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);
|
338
350
|
this.runStateChangesForAll(renderedRunTimeTreeItem?.children);
|
@@ -342,10 +354,10 @@ class EuiTreeComponent {
|
|
342
354
|
}
|
343
355
|
this.syncStateChangesAtPath(path);
|
344
356
|
if (this.getTreeItem(path).node.isSelected) {
|
345
|
-
this.selectTreeItem(
|
357
|
+
this.selectTreeItem(runTimeBackupTreeItem);
|
346
358
|
}
|
347
359
|
else {
|
348
|
-
this.deselectTreeItem(
|
360
|
+
this.deselectTreeItem(runTimeBackupTreeItem);
|
349
361
|
}
|
350
362
|
const nodePathsSeq = this.getParentPaths(path);
|
351
363
|
if (nodePathsSeq.length > 0) {
|
@@ -369,11 +381,11 @@ class EuiTreeComponent {
|
|
369
381
|
this.selectionModel.deselect(prevItem);
|
370
382
|
}
|
371
383
|
item.node.isSelected = true;
|
372
|
-
this.selectionModel.select(
|
384
|
+
this.selectionModel.select(runTimeBackupTreeItem);
|
373
385
|
}
|
374
386
|
else {
|
375
387
|
item.node.isSelected = false;
|
376
|
-
this.selectionModel.deselect(
|
388
|
+
this.selectionModel.deselect(runTimeBackupTreeItem);
|
377
389
|
}
|
378
390
|
if (this.highlightPath) {
|
379
391
|
if (evt.target.checked && prevItem) {
|
@@ -575,10 +587,10 @@ class EuiTreeComponent {
|
|
575
587
|
getSelectionIndexOfItem(runTimeTreeItem) {
|
576
588
|
return this.selectionModel.selected.findIndex((i) => i?.path === runTimeTreeItem?.path);
|
577
589
|
}
|
578
|
-
selectTreeItem(
|
579
|
-
const indexOfItem = this.getSelectionIndexOfItem(
|
590
|
+
selectTreeItem(runTimeBackupTreeItem) {
|
591
|
+
const indexOfItem = this.getSelectionIndexOfItem(runTimeBackupTreeItem);
|
580
592
|
if (indexOfItem === -1) {
|
581
|
-
this.selectionModel.select(
|
593
|
+
this.selectionModel.select(runTimeBackupTreeItem);
|
582
594
|
}
|
583
595
|
}
|
584
596
|
deselectTreeItem(runTimeTreeItem) {
|
@@ -615,7 +627,7 @@ class EuiTreeComponent {
|
|
615
627
|
return structuredClone(nodes)?.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));
|
616
628
|
}
|
617
629
|
// Creating run time state which includes children selection state for selection tree.
|
618
|
-
calculateItemSelectionRecursiveState(treeItem
|
630
|
+
calculateItemSelectionRecursiveState(treeItem) {
|
619
631
|
const childrenSelectionRecursive = [];
|
620
632
|
if (treeItem.children && treeItem.children.length > 0) {
|
621
633
|
treeItem.children.forEach((child, index) => {
|
@@ -623,7 +635,7 @@ class EuiTreeComponent {
|
|
623
635
|
});
|
624
636
|
}
|
625
637
|
const childStates = childrenSelectionRecursive.map((_) => _.selectionRecursiveState);
|
626
|
-
const itemState = this.decideSelectionRecursiveState(childStates,
|
638
|
+
const itemState = this.decideSelectionRecursiveState(childStates, treeItem.node.isSelected, treeItem.node?.selectConfig?.recursive, treeItem.node?.selectConfig?.noAutoSelectParent);
|
627
639
|
return {
|
628
640
|
selectionRecursiveState: itemState,
|
629
641
|
children: childrenSelectionRecursive,
|
@@ -647,7 +659,7 @@ class EuiTreeComponent {
|
|
647
659
|
}
|
648
660
|
syncStateChangesAtPath(nodePath) {
|
649
661
|
const treeItem = this.getTreeItem(nodePath);
|
650
|
-
const
|
662
|
+
const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(nodePath);
|
651
663
|
const runTimeSelectionRecursiveItem = this.getRunTimeSelectionRecursiveState(nodePath);
|
652
664
|
if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {
|
653
665
|
if (!treeItem.node?.selectConfig?.noAutoSelectParent) {
|
@@ -666,18 +678,18 @@ class EuiTreeComponent {
|
|
666
678
|
};
|
667
679
|
}
|
668
680
|
// console.log(treeItem, treeItem.node.treeContentBlock.label, 'isSelected:' + treeItem.node.isSelected, 'isIndeterminate:' + treeItem.node.isIndeterminate);
|
669
|
-
if (treeItem.node.isSelected === true && !this.selectionModel.isSelected(
|
670
|
-
this.selectTreeItem(
|
681
|
+
if (treeItem.node.isSelected === true && !this.selectionModel.isSelected(runTimeBackupTreeItem)) {
|
682
|
+
this.selectTreeItem(runTimeBackupTreeItem);
|
671
683
|
}
|
672
|
-
else if (treeItem.node.isSelected === false && this.selectionModel.isSelected(
|
673
|
-
this.deselectTreeItem(
|
684
|
+
else if (treeItem.node.isSelected === false && this.selectionModel.isSelected(runTimeBackupTreeItem)) {
|
685
|
+
this.deselectTreeItem(runTimeBackupTreeItem);
|
674
686
|
}
|
675
687
|
}
|
676
688
|
}
|
677
689
|
setTreeData(path, item) {
|
678
690
|
const indexArr = this.resolvePath(path);
|
679
691
|
let itemArr = this.processedNodes;
|
680
|
-
indexArr
|
692
|
+
indexArr?.forEach((pathIndex, index) => {
|
681
693
|
if (index < indexArr.length - 1) {
|
682
694
|
itemArr = itemArr[pathIndex]?.children;
|
683
695
|
}
|
@@ -686,9 +698,9 @@ class EuiTreeComponent {
|
|
686
698
|
}
|
687
699
|
});
|
688
700
|
}
|
689
|
-
|
701
|
+
setTreeDataRunTimeBackup(path, item) {
|
690
702
|
const indexArr = this.resolvePath(path);
|
691
|
-
let itemArr = this.
|
703
|
+
let itemArr = this.treeDataRunTimeBackup;
|
692
704
|
indexArr.forEach((pathIndex, index) => {
|
693
705
|
if (index < indexArr.length - 1) {
|
694
706
|
itemArr = itemArr[pathIndex]?.children;
|
@@ -698,6 +710,15 @@ class EuiTreeComponent {
|
|
698
710
|
}
|
699
711
|
});
|
700
712
|
}
|
713
|
+
setTreeDataRunTime(path, item) {
|
714
|
+
const oldItem = this.getRunTimeTreeItem(path);
|
715
|
+
if (oldItem) {
|
716
|
+
Object.keys(oldItem)?.forEach(key => {
|
717
|
+
oldItem[key] = undefined;
|
718
|
+
});
|
719
|
+
Object.assign(oldItem, item);
|
720
|
+
}
|
721
|
+
}
|
701
722
|
setRunTimeSelectionRecursiveStateTree(path, item) {
|
702
723
|
const indexArr = this.resolvePath(path);
|
703
724
|
let itemArr = this.runTimeSelectionRecursiveState;
|
@@ -727,28 +748,29 @@ class EuiTreeComponent {
|
|
727
748
|
}
|
728
749
|
setIsCheckedForAll(nodeArr, isChecked) {
|
729
750
|
nodeArr.forEach((runTimeItem, index) => {
|
751
|
+
const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(runTimeItem.path);
|
730
752
|
const treeItem = this.getTreeItem(runTimeItem.path);
|
731
753
|
const node = treeItem.node;
|
732
754
|
if (node?.selectable) {
|
733
755
|
node.isSelected = isChecked;
|
734
756
|
node.isIndeterminate = false;
|
735
757
|
if (isChecked) {
|
736
|
-
this.selectTreeItem(
|
758
|
+
this.selectTreeItem(runtimeBackupTreeItem);
|
737
759
|
}
|
738
760
|
else {
|
739
|
-
this.deselectTreeItem(
|
761
|
+
this.deselectTreeItem(runtimeBackupTreeItem);
|
740
762
|
}
|
741
763
|
}
|
742
|
-
if (runTimeItem?.children?.length > 0
|
764
|
+
if (runTimeItem?.children?.length > 0) {
|
743
765
|
this.setIsCheckedForAll(nodeArr[index].children, isChecked);
|
744
766
|
}
|
745
767
|
});
|
746
768
|
}
|
747
769
|
runStateChangesForAll(nodeArr) {
|
748
|
-
nodeArr
|
749
|
-
if (runTimeItem?.children?.length
|
750
|
-
this.syncSelectionAtPath(runTimeItem);
|
770
|
+
nodeArr?.forEach((runTimeItem, index) => {
|
771
|
+
if (runTimeItem?.children?.length >= 0) {
|
751
772
|
this.runStateChangesForAll(nodeArr[index].children);
|
773
|
+
this.syncSelectionAtPath(runTimeItem);
|
752
774
|
}
|
753
775
|
});
|
754
776
|
}
|
@@ -757,10 +779,10 @@ class EuiTreeComponent {
|
|
757
779
|
this.syncStateChangesAtPath(runTimeTreeItem.path);
|
758
780
|
// Sets isSelected change on the control.
|
759
781
|
if (this.getTreeItem(runTimeTreeItem.path).node.isSelected) {
|
760
|
-
this.selectTreeItem(runTimeTreeItem);
|
782
|
+
this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));
|
761
783
|
}
|
762
784
|
else {
|
763
|
-
this.deselectTreeItem(runTimeTreeItem);
|
785
|
+
this.deselectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));
|
764
786
|
}
|
765
787
|
}
|
766
788
|
resolvePath(path) {
|
@@ -800,18 +822,24 @@ class EuiTreeComponent {
|
|
800
822
|
}
|
801
823
|
return runTimeTreeItem;
|
802
824
|
}
|
803
|
-
filterTreeData(runTimeTreeData, key = 'label', filterStr) {
|
825
|
+
filterTreeData(runTimeTreeData, key = 'label', filterStr, showChildren, show) {
|
804
826
|
return runTimeTreeData.filter((runTimeItem) => {
|
805
|
-
|
827
|
+
const targetData = this.getTreeItem(runTimeItem.path).node.treeContentBlock[key];
|
828
|
+
if (targetData && this.normalizedStr(targetData)?.includes(this.normalizedStr(filterStr))) {
|
829
|
+
if (runTimeItem?.children?.length > 0) {
|
830
|
+
runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, showChildren);
|
831
|
+
}
|
832
|
+
Object.assign(runTimeItem, { matched: true });
|
833
|
+
// runTimeItem.matched = true;
|
806
834
|
return true;
|
807
835
|
}
|
808
836
|
else if (runTimeItem?.children?.length > 0) {
|
809
|
-
runTimeItem.children = this.filterTreeData(
|
837
|
+
runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, show);
|
810
838
|
runTimeItem.children = runTimeItem.children.length > 0 ? runTimeItem.children : undefined;
|
811
|
-
return runTimeItem?.children?.length > 0;
|
839
|
+
return runTimeItem?.children?.length > 0 || show;
|
812
840
|
}
|
813
841
|
else {
|
814
|
-
return
|
842
|
+
return show;
|
815
843
|
}
|
816
844
|
});
|
817
845
|
}
|
@@ -838,12 +866,40 @@ class EuiTreeComponent {
|
|
838
866
|
}
|
839
867
|
renderInitialExpand(nodes) {
|
840
868
|
nodes.forEach((item) => {
|
841
|
-
if (this.getTreeItem(item.path).node.isExpanded) {
|
842
|
-
this.expandAt(item.path);
|
843
|
-
}
|
844
869
|
if (item?.children?.length > 0) {
|
845
870
|
this.renderInitialExpand(item.children);
|
846
871
|
}
|
872
|
+
if (typeof this.getTreeItem(item.path).node.isExpanded !== 'undefined') {
|
873
|
+
if (this.getTreeItem(item.path).node.isExpanded && !this.cdkTreeControl.isExpanded(item)) {
|
874
|
+
this.expandAt(item.path);
|
875
|
+
}
|
876
|
+
else if (!this.getTreeItem(item.path).node.isExpanded && this.cdkTreeControl.isExpanded(item)) {
|
877
|
+
this.cdkTreeControl.collapse(item);
|
878
|
+
}
|
879
|
+
}
|
880
|
+
});
|
881
|
+
}
|
882
|
+
expandMatched(nodes) {
|
883
|
+
nodes.forEach((item) => {
|
884
|
+
if (item.matched) {
|
885
|
+
const parentPath = this.getParentPaths(item.path)[0];
|
886
|
+
if (parentPath) {
|
887
|
+
let parentTreeItem = this.getTreeItem(parentPath);
|
888
|
+
parentTreeItem = {
|
889
|
+
...parentTreeItem,
|
890
|
+
node: {
|
891
|
+
...parentTreeItem.node,
|
892
|
+
isExpanded: true,
|
893
|
+
},
|
894
|
+
};
|
895
|
+
// node.isExpanded = true;
|
896
|
+
// console.log("here", parentTreeItem.node.treeContentBlock.label, parentPath, item);
|
897
|
+
this.expandAt(parentPath);
|
898
|
+
}
|
899
|
+
}
|
900
|
+
if (item?.children?.length > 0) {
|
901
|
+
this.expandMatched(item.children);
|
902
|
+
}
|
847
903
|
});
|
848
904
|
}
|
849
905
|
getRunTimeTreeItem(path) {
|
@@ -902,11 +958,11 @@ class EuiTreeComponent {
|
|
902
958
|
return scrolled.getElementRef().nativeElement === this.cdkScrollableRef.getElementRef().nativeElement;
|
903
959
|
}
|
904
960
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: EuiTreeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScrollDispatcher }], target: i0.ɵɵFactoryTarget.Component }); }
|
905
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: EuiTreeComponent, selector: "eui-tree", inputs: { e2eAttr: "e2eAttr", nodes: "nodes", nodeTemplateRef: "nodeTemplateRef", nodeContentMetadataTemplateRef: "nodeContentMetadataTemplateRef", rightContextMenuTemplateRef: "rightContextMenuTemplateRef", expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", expandedSvgIconClass: "expandedSvgIconClass", collapsedSvgIconClass: "collapsedSvgIconClass", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isSingleSelect: "isSingleSelect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", showUnderlinedLinks: "showUnderlinedLinks", showLines: "showLines", autoTranslate: "autoTranslate", highlightPath: "highlightPath" }, outputs: { selectionChange: "selectionChange", nodeClick: "nodeClick", nodeToggle: "nodeToggle" }, host: { properties: { "class": "this.cssClasses", "attr.data-e2e": "this.e2eAttr" } }, viewQueries: [{ propertyName: "cdkScrollableRef", first: true, predicate: ["cdkScrollableRef"], descendants: true, read: CdkScrollable }, { propertyName: "treeComponentInstance", first: true, predicate: ["treeComponentInstance"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ul class=\"eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </li>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <ul class=\"eui-tree-node\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </ul>\n </li>\n </cdk-nested-tree-node>\n </cdk-tree>\n</ul>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\"\n class=\"eui-u-mr-m\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconClass\">\n <eui-icon\n [euiVariant]=\"node?.treeContentBlock?.iconTypeClass || 'primary'\"\n iconClass=\"{{ node?.treeContentBlock?.iconClass }}\"\n euiSizeS\n class=\"eui-u-mr-xs\">\n </eui-icon>\n </ng-container>\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'grey-100' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiSizeM euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\">\n </ng-container>\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'eui-chevron-down' : 'eui-chevron-forward'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".eui-tree{display:flex;overflow-x:hidden;overflow-y:auto;position:relative;width:100%}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;overflow-y:auto;padding:var(--eui-base-spacing-2xs);position:relative;width:100%}.eui-tree .eui-tree__wrapper::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-tree .eui-tree__wrapper .eui-cdk-tree{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{display:flex;width:auto}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node:not(.eui-cdk-nested-tree-node--with-child){padding-inline-start:var(--eui-base-spacing-xl)}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node--with-child{display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node__metacontent{display:flex}.eui-tree .eui-tree__wrapper .eui-tree-node__button{margin-left:calc(-1 * var(--eui-base-spacing-2xs));margin-right:var(--eui-base-spacing-2xs)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper{align-items:center;display:flex;min-height:var(--eui-base-spacing-xl);width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper:hover{background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container{align-items:center;display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-left{align-items:center;display:flex;justify-content:flex-start}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-middle{align-items:center;display:flex;justify-content:flex-start;overflow:hidden;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-right{align-items:center;display:flex;justify-content:flex-end;margin-left:auto}.eui-tree:not(.eui-tree--with-children) .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{padding-inline-start:2px}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul{padding-inline-start:var(--eui-base-spacing-s)}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:before{border-left:1px solid var(--eui-base-color-grey-20);content:\"\";height:calc(100% - var(--eui-base-spacing-m));position:absolute;top:0}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:first-child:before{height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-2xs))}.eui-tree.eui-tree--show-lines.eui-tree--with-children li{padding-inline-start:var(--eui-base-spacing-s);position:relative}.eui-tree.eui-tree--show-lines.eui-tree--with-children li:before:not(.eui-tree-node--first){border-top:1px solid var(--eui-base-color-grey-20);content:\"\";display:block;height:0;left:0;position:absolute;top:var(--eui-base-spacing-m);width:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node:not(.eui-tree-node--with-child):before{position:relative;left:0;display:inline-flex;width:var(--eui-base-spacing-2xl);border-bottom:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node.eui-tree-node--with-child:before{position:absolute;left:calc(1 * var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));display:inline-flex;width:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node.eui-tree-node--with-child .eui-tree-node__button{background:var(--eui-base-color-grey-2);z-index:1}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node--last:before{height:auto;top:var(--eui-base-spacing-m)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.EuiInputCheckboxComponent, selector: "input[euiInputCheckBox]", inputs: ["indeterminate", "isInvalid", "styleClass", "checked", "id"], outputs: ["indeterminateChange"] }, { kind: "directive", type: i5.CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i5.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i5.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i5.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i5.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i7.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i7.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i8.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i9.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label"] }, { kind: "component", type: i10.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i11.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i11.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "directive", type: i1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
961
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: EuiTreeComponent, selector: "eui-tree", inputs: { e2eAttr: "e2eAttr", nodes: "nodes", nodeTemplateRef: "nodeTemplateRef", nodeContentMetadataTemplateRef: "nodeContentMetadataTemplateRef", rightContextMenuTemplateRef: "rightContextMenuTemplateRef", expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", expandedSvgIconClass: "expandedSvgIconClass", collapsedSvgIconClass: "collapsedSvgIconClass", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isSingleSelect: "isSingleSelect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", showUnderlinedLinks: "showUnderlinedLinks", showLines: "showLines", autoTranslate: "autoTranslate", highlightPath: "highlightPath" }, outputs: { selectionChange: "selectionChange", nodeClick: "nodeClick", nodeToggle: "nodeToggle" }, host: { properties: { "class": "this.cssClasses", "attr.data-e2e": "this.e2eAttr" } }, viewQueries: [{ propertyName: "cdkScrollableRef", first: true, predicate: ["cdkScrollableRef"], descendants: true, read: CdkScrollable }, { propertyName: "treeComponentInstance", first: true, predicate: ["treeComponentInstance"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ul class=\"eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </li>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <ul class=\"eui-tree-node\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </ul>\n </li>\n </cdk-nested-tree-node>\n </cdk-tree>\n</ul>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\"\n class=\"eui-u-mr-m\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconClass\">\n <eui-icon\n [euiVariant]=\"node?.treeContentBlock?.iconTypeClass || 'primary'\"\n iconClass=\"{{ node?.treeContentBlock?.iconClass }}\"\n euiSizeS\n class=\"eui-u-mr-xs\">\n </eui-icon>\n </ng-container>\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'grey-100' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiSizeM euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\">\n </ng-container>\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'eui-chevron-down' : 'eui-chevron-forward'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".eui-tree{display:flex;overflow-x:hidden;overflow-y:auto;position:relative;width:100%}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;overflow-y:auto;padding:var(--eui-base-spacing-2xs);position:relative;width:100%}.eui-tree .eui-tree__wrapper::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-tree .eui-tree__wrapper .eui-cdk-tree{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{display:flex;width:auto}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node:not(.eui-cdk-nested-tree-node--with-child){padding-inline-start:var(--eui-base-spacing-xl)}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node--with-child{display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node__metacontent{display:flex}.eui-tree .eui-tree__wrapper .eui-tree-node__button{margin-left:calc(-1 * var(--eui-base-spacing-2xs));margin-right:var(--eui-base-spacing-2xs)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper{align-items:center;display:flex;min-height:var(--eui-base-spacing-xl);width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper:hover{background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container{align-items:center;display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-left{align-items:center;display:flex;justify-content:flex-start}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-middle{align-items:center;display:flex;justify-content:flex-start;overflow:hidden;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-right{align-items:center;display:flex;justify-content:flex-end;margin-left:auto}.eui-tree:not(.eui-tree--with-children) .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{padding-inline-start:2px}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul{padding-inline-start:var(--eui-base-spacing-s)}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:before{border-left:1px solid var(--eui-base-color-grey-20);content:\"\";height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-xl));position:absolute;top:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:first-child:before{height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-2xs));top:0}.eui-tree.eui-tree--show-lines.eui-tree--with-children li{padding-inline-start:var(--eui-base-spacing-s);position:relative}.eui-tree.eui-tree--show-lines.eui-tree--with-children li:before:not(.eui-tree-node--first){border-top:1px solid var(--eui-base-color-grey-20);content:\"\";display:block;height:0;left:0;position:absolute;top:var(--eui-base-spacing-m);width:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node:not(.eui-tree-node--with-child):before{position:relative;left:0;display:inline-flex;width:var(--eui-base-spacing-2xl);border-bottom:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node.eui-tree-node--with-child:before{position:absolute;left:calc(1 * var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));display:inline-flex;width:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node--last:before{height:auto;top:var(--eui-base-spacing-m)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.EuiInputCheckboxComponent, selector: "input[euiInputCheckBox]", inputs: ["indeterminate", "isInvalid", "styleClass", "checked", "id"], outputs: ["indeterminateChange"] }, { kind: "directive", type: i5.CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i5.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i5.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i5.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i5.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i7.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i7.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i8.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i9.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label"] }, { kind: "component", type: i10.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i11.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i11.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "directive", type: i1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
906
962
|
}
|
907
963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: EuiTreeComponent, decorators: [{
|
908
964
|
type: Component,
|
909
|
-
args: [{ selector: 'eui-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ul class=\"eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </li>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <ul class=\"eui-tree-node\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </ul>\n </li>\n </cdk-nested-tree-node>\n </cdk-tree>\n</ul>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\"\n class=\"eui-u-mr-m\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconClass\">\n <eui-icon\n [euiVariant]=\"node?.treeContentBlock?.iconTypeClass || 'primary'\"\n iconClass=\"{{ node?.treeContentBlock?.iconClass }}\"\n euiSizeS\n class=\"eui-u-mr-xs\">\n </eui-icon>\n </ng-container>\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'grey-100' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiSizeM euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\">\n </ng-container>\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'eui-chevron-down' : 'eui-chevron-forward'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".eui-tree{display:flex;overflow-x:hidden;overflow-y:auto;position:relative;width:100%}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;overflow-y:auto;padding:var(--eui-base-spacing-2xs);position:relative;width:100%}.eui-tree .eui-tree__wrapper::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-tree .eui-tree__wrapper .eui-cdk-tree{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{display:flex;width:auto}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node:not(.eui-cdk-nested-tree-node--with-child){padding-inline-start:var(--eui-base-spacing-xl)}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node--with-child{display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node__metacontent{display:flex}.eui-tree .eui-tree__wrapper .eui-tree-node__button{margin-left:calc(-1 * var(--eui-base-spacing-2xs));margin-right:var(--eui-base-spacing-2xs)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper{align-items:center;display:flex;min-height:var(--eui-base-spacing-xl);width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper:hover{background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container{align-items:center;display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-left{align-items:center;display:flex;justify-content:flex-start}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-middle{align-items:center;display:flex;justify-content:flex-start;overflow:hidden;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-right{align-items:center;display:flex;justify-content:flex-end;margin-left:auto}.eui-tree:not(.eui-tree--with-children) .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{padding-inline-start:2px}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul{padding-inline-start:var(--eui-base-spacing-s)}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:before{border-left:1px solid var(--eui-base-color-grey-20);content:\"\";height:calc(100% - var(--eui-base-spacing-m));position:absolute;top:0}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:first-child:before{height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-2xs))}.eui-tree.eui-tree--show-lines.eui-tree--with-children li{padding-inline-start:var(--eui-base-spacing-s);position:relative}.eui-tree.eui-tree--show-lines.eui-tree--with-children li:before:not(.eui-tree-node--first){border-top:1px solid var(--eui-base-color-grey-20);content:\"\";display:block;height:0;left:0;position:absolute;top:var(--eui-base-spacing-m);width:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node:not(.eui-tree-node--with-child):before{position:relative;left:0;display:inline-flex;width:var(--eui-base-spacing-2xl);border-bottom:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node.eui-tree-node--with-child:before{position:absolute;left:calc(1 * var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));display:inline-flex;width:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node.eui-tree-node--with-child .eui-tree-node__button{background:var(--eui-base-color-grey-2);z-index:1}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node--last:before{height:auto;top:var(--eui-base-spacing-m)}\n"] }]
|
965
|
+
args: [{ selector: 'eui-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ul class=\"eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </li>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <ul class=\"eui-tree-node\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </ul>\n </li>\n </cdk-nested-tree-node>\n </cdk-tree>\n</ul>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\"\n class=\"eui-u-mr-m\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconClass\">\n <eui-icon\n [euiVariant]=\"node?.treeContentBlock?.iconTypeClass || 'primary'\"\n iconClass=\"{{ node?.treeContentBlock?.iconClass }}\"\n euiSizeS\n class=\"eui-u-mr-xs\">\n </eui-icon>\n </ng-container>\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'grey-100' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiSizeM euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\">\n </ng-container>\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'eui-chevron-down' : 'eui-chevron-forward'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".eui-tree{display:flex;overflow-x:hidden;overflow-y:auto;position:relative;width:100%}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;overflow-y:auto;padding:var(--eui-base-spacing-2xs);position:relative;width:100%}.eui-tree .eui-tree__wrapper::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-tree .eui-tree__wrapper .eui-cdk-tree{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{display:flex;width:auto}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node:not(.eui-cdk-nested-tree-node--with-child){padding-inline-start:var(--eui-base-spacing-xl)}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node--with-child{display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node__metacontent{display:flex}.eui-tree .eui-tree__wrapper .eui-tree-node__button{margin-left:calc(-1 * var(--eui-base-spacing-2xs));margin-right:var(--eui-base-spacing-2xs)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper{align-items:center;display:flex;min-height:var(--eui-base-spacing-xl);width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper:hover{background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container{align-items:center;display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-left{align-items:center;display:flex;justify-content:flex-start}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-middle{align-items:center;display:flex;justify-content:flex-start;overflow:hidden;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-right{align-items:center;display:flex;justify-content:flex-end;margin-left:auto}.eui-tree:not(.eui-tree--with-children) .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{padding-inline-start:2px}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul{padding-inline-start:var(--eui-base-spacing-s)}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:before{border-left:1px solid var(--eui-base-color-grey-20);content:\"\";height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-xl));position:absolute;top:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children ul:first-child:before{height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-2xs));top:0}.eui-tree.eui-tree--show-lines.eui-tree--with-children li{padding-inline-start:var(--eui-base-spacing-s);position:relative}.eui-tree.eui-tree--show-lines.eui-tree--with-children li:before:not(.eui-tree-node--first){border-top:1px solid var(--eui-base-color-grey-20);content:\"\";display:block;height:0;left:0;position:absolute;top:var(--eui-base-spacing-m);width:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node:not(.eui-tree-node--with-child):before{position:relative;left:0;display:inline-flex;width:var(--eui-base-spacing-2xl);border-bottom:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node.eui-tree-node--with-child:before{position:absolute;left:calc(1 * var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));display:inline-flex;width:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children li.eui-tree-node--last:before{height:auto;top:var(--eui-base-spacing-m)}\n"] }]
|
910
966
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ScrollDispatcher }], propDecorators: { cssClasses: [{
|
911
967
|
type: HostBinding,
|
912
968
|
args: ['class']
|
@@ -1094,9 +1150,12 @@ class EuiTreeHelper {
|
|
1094
1150
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
1095
1151
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
1096
1152
|
getPath(value, identifierKey = 'node.treeContentBlock.id') {
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1153
|
+
if (typeof value !== 'undefined') {
|
1154
|
+
const paths = [];
|
1155
|
+
this.traverse(this.treeData, '', [value], paths, undefined, identifierKey);
|
1156
|
+
return paths[0];
|
1157
|
+
}
|
1158
|
+
return null;
|
1100
1159
|
}
|
1101
1160
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
1102
1161
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|