@eui/components 16.0.0-next.11 → 16.0.0-next.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/docs/components/EuiMenuItemComponent.html +1 -1
  2. package/docs/components/EuiPaginatorComponent.html +5 -0
  3. package/docs/components/EuiTableComponent.html +5 -0
  4. package/docs/components/EuiTreeComponent.html +21 -1
  5. package/docs/dependencies.html +2 -2
  6. package/docs/js/menu-wc.js +6 -6
  7. package/docs/js/menu-wc_es5.js +1 -1
  8. package/docs/js/search/search_index.js +2 -2
  9. package/esm2022/eui-button-group/eui-button-group.component.mjs +2 -2
  10. package/esm2022/eui-dropdown/eui-dropdown.component.mjs +4 -4
  11. package/esm2022/eui-menu/eui-menu-item.component.mjs +4 -4
  12. package/esm2022/eui-paginator/eui-paginator.component.mjs +2 -1
  13. package/esm2022/eui-select/eui-select.component.mjs +2 -2
  14. package/esm2022/eui-table/eui-table.component.mjs +6 -2
  15. package/esm2022/eui-tree/eui-tree.component.mjs +11 -4
  16. package/esm2022/eui-tree/eui-tree.model.mjs +1 -1
  17. package/eui-paginator/eui-paginator.component.d.ts.map +1 -1
  18. package/eui-table/eui-table.component.d.ts.map +1 -1
  19. package/eui-tree/eui-tree.component.d.ts +6 -3
  20. package/eui-tree/eui-tree.component.d.ts.map +1 -1
  21. package/eui-tree/eui-tree.model.d.ts +1 -1
  22. package/eui-tree/eui-tree.model.d.ts.map +1 -1
  23. package/fesm2022/eui-components-eui-button-group.mjs +1 -1
  24. package/fesm2022/eui-components-eui-button-group.mjs.map +1 -1
  25. package/fesm2022/eui-components-eui-dropdown.mjs +3 -3
  26. package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
  27. package/fesm2022/eui-components-eui-menu.mjs +3 -3
  28. package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
  29. package/fesm2022/eui-components-eui-paginator.mjs +1 -0
  30. package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
  31. package/fesm2022/eui-components-eui-select.mjs +2 -2
  32. package/fesm2022/eui-components-eui-select.mjs.map +1 -1
  33. package/fesm2022/eui-components-eui-table.mjs +5 -1
  34. package/fesm2022/eui-components-eui-table.mjs.map +1 -1
  35. package/fesm2022/eui-components-eui-tree.mjs +10 -3
  36. package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
  37. package/package.json +7 -7
@@ -83,7 +83,7 @@ class EuiTreeComponent {
83
83
  this.cdkTreeControl.dataNodes = this.treeDataRunTime;
84
84
  this.selectionModel = new SelectionModel(true, [], true, (a, b) => a?.path === b?.path);
85
85
  this.renderTree = true;
86
- this.selectionModel.changed.subscribe((sc) => {
86
+ this.selectionModelSubs = this.selectionModel.changed.subscribe((sc) => {
87
87
  this.selectionChange.emit({
88
88
  added: sc.added.map((_) => this.getTreeItem(_.path)),
89
89
  removed: sc.removed.map((_) => this.getTreeItem(_.path)),
@@ -106,6 +106,11 @@ class EuiTreeComponent {
106
106
  });
107
107
  }
108
108
  }
109
+ ngOnDestroy() {
110
+ if (this.selectionModelSubs) {
111
+ this.selectionModelSubs.unsubscribe();
112
+ }
113
+ }
109
114
  trackBy(index, el) {
110
115
  return el.parent;
111
116
  }
@@ -409,11 +414,11 @@ class EuiTreeComponent {
409
414
  });
410
415
  }
411
416
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EuiTreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
412
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: EuiTreeComponent, selector: "eui-tree", inputs: { nodes: "nodes", nodeTemplateRef: "nodeTemplateRef", nodeContentMetadataTemplateRef: "nodeContentMetadataTemplateRef", expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", expandedSvgIconClass: "expandedSvgIconClass", collapsedSvgIconClass: "collapsedSvgIconClass", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", autoTranslate: "autoTranslate" }, outputs: { selectionChange: "selectionChange", nodeClick: "nodeClick", nodeToggle: "nodeToggle" }, host: { properties: { "class": "this.string" } }, usesOnChanges: true, ngImport: i0, template: "<ul class=\"eui-tree__wrapper\">\n <cdk-tree [dataSource]=\"cdkArrayDataSource\" [treeControl]=\"cdkTreeControl\" [trackBy]=\"trackBy\" *ngIf=\"renderTree\" 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 treeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\" (click)=\"onNodeClick(treeItemModel)\">\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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel.path, treeItemModel),\n id: uid + treeItemModel.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 treeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeItemModel)\" 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 ' + treeItemModel?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-u-mr-xs\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && !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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel?.path, treeItemModel),\n id: uid + treeItemModel.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(treeItemModel)\">\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\">\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 && node.isSelected\"\n [indeterminate]=\"node && 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-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-mr-s\"\n [class.eui-label--selected]=\"node?.isSelected\"\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-mr-m\">\n <a class=\"eui-u-text-link\" [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-mr-m\">\n <a\n class=\"eui-u-text-link-external\"\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-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?.hasContextMenu\">\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 <!-- TODO: Inject template ref or config here\n <button euiDropdownItem>Option item 1</button>\n <button euiDropdownItem>Option item 2</button>\n <button euiDropdownItem>Option item 3</button>\n -->\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 (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;position:relative}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;padding:0;position:relative;width:100%}.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-2xl)}.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 ul.eui-tree-node{padding-inline-start:var(--eui-base-spacing-xl)}.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}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.EuiInputCheckboxComponent, selector: "input[euiInputCheckBox]", inputs: ["indeterminate", "isInvalid", "styleClass", "checked", "id"], outputs: ["indeterminateChange"] }, { kind: "directive", type: i4.CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i4.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i4.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i4.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i4.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.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: i8.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["aria-label"] }, { kind: "component", type: i9.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i10.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover"] }, { kind: "directive", type: i10.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
417
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: EuiTreeComponent, selector: "eui-tree", inputs: { nodes: "nodes", nodeTemplateRef: "nodeTemplateRef", nodeContentMetadataTemplateRef: "nodeContentMetadataTemplateRef", rightContextMenuTemplateRef: "rightContextMenuTemplateRef", expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", expandedSvgIconClass: "expandedSvgIconClass", collapsedSvgIconClass: "collapsedSvgIconClass", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", autoTranslate: "autoTranslate" }, outputs: { selectionChange: "selectionChange", nodeClick: "nodeClick", nodeToggle: "nodeToggle" }, host: { properties: { "class": "this.string" } }, usesOnChanges: true, ngImport: i0, template: "<ul class=\"eui-tree__wrapper\">\n <cdk-tree [dataSource]=\"cdkArrayDataSource\" [treeControl]=\"cdkTreeControl\" [trackBy]=\"trackBy\" *ngIf=\"renderTree\" 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 treeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\" (click)=\"onNodeClick(treeItemModel)\">\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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel.path, treeItemModel),\n id: uid + treeItemModel.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 treeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeItemModel)\" 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 ' + treeItemModel?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-u-mr-xs\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && !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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel?.path, treeItemModel),\n id: uid + treeItemModel.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(treeItemModel)\">\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\">\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 && node.isSelected\"\n [indeterminate]=\"node && 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-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-mr-s\"\n [class.eui-label--selected]=\"node?.isSelected\"\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-mr-m\">\n <a class=\"eui-u-text-link\" [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-mr-m\">\n <a\n class=\"eui-u-text-link-external\"\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-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 (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;position:relative}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;padding:0;position:relative;width:100%}.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-2xl)}.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 ul.eui-tree-node{padding-inline-start:var(--eui-base-spacing-xl)}.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}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.EuiInputCheckboxComponent, selector: "input[euiInputCheckBox]", inputs: ["indeterminate", "isInvalid", "styleClass", "checked", "id"], outputs: ["indeterminateChange"] }, { kind: "directive", type: i4.CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i4.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i4.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i4.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i4.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.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: i8.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["aria-label"] }, { kind: "component", type: i9.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i10.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover"] }, { kind: "directive", type: i10.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
413
418
  }
414
419
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EuiTreeComponent, decorators: [{
415
420
  type: Component,
416
- args: [{ selector: 'eui-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ul class=\"eui-tree__wrapper\">\n <cdk-tree [dataSource]=\"cdkArrayDataSource\" [treeControl]=\"cdkTreeControl\" [trackBy]=\"trackBy\" *ngIf=\"renderTree\" 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 treeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\" (click)=\"onNodeClick(treeItemModel)\">\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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel.path, treeItemModel),\n id: uid + treeItemModel.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 treeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeItemModel)\" 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 ' + treeItemModel?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-u-mr-xs\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && !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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel?.path, treeItemModel),\n id: uid + treeItemModel.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(treeItemModel)\">\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\">\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 && node.isSelected\"\n [indeterminate]=\"node && 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-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-mr-s\"\n [class.eui-label--selected]=\"node?.isSelected\"\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-mr-m\">\n <a class=\"eui-u-text-link\" [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-mr-m\">\n <a\n class=\"eui-u-text-link-external\"\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-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?.hasContextMenu\">\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 <!-- TODO: Inject template ref or config here\n <button euiDropdownItem>Option item 1</button>\n <button euiDropdownItem>Option item 2</button>\n <button euiDropdownItem>Option item 3</button>\n -->\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 (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;position:relative}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;padding:0;position:relative;width:100%}.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-2xl)}.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 ul.eui-tree-node{padding-inline-start:var(--eui-base-spacing-xl)}.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}\n"] }]
421
+ args: [{ selector: 'eui-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ul class=\"eui-tree__wrapper\">\n <cdk-tree [dataSource]=\"cdkArrayDataSource\" [treeControl]=\"cdkTreeControl\" [trackBy]=\"trackBy\" *ngIf=\"renderTree\" 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 treeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\" (click)=\"onNodeClick(treeItemModel)\">\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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel.path, treeItemModel),\n id: uid + treeItemModel.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 treeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeItemModel)\" 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 ' + treeItemModel?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-u-mr-xs\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && !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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel?.path, treeItemModel),\n id: uid + treeItemModel.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(treeItemModel)\">\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\">\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 && node.isSelected\"\n [indeterminate]=\"node && 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-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-mr-s\"\n [class.eui-label--selected]=\"node?.isSelected\"\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-mr-m\">\n <a class=\"eui-u-text-link\" [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-mr-m\">\n <a\n class=\"eui-u-text-link-external\"\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-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 (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;position:relative}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;padding:0;position:relative;width:100%}.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-2xl)}.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 ul.eui-tree-node{padding-inline-start:var(--eui-base-spacing-xl)}.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}\n"] }]
417
422
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { string: [{
418
423
  type: HostBinding,
419
424
  args: ['class']
@@ -423,6 +428,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
423
428
  type: Input
424
429
  }], nodeContentMetadataTemplateRef: [{
425
430
  type: Input
431
+ }], rightContextMenuTemplateRef: [{
432
+ type: Input
426
433
  }], expandedIconClass: [{
427
434
  type: Input
428
435
  }], collapsedIconClass: [{
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-tree.mjs","sources":["../../eui-tree/eui-tree.component.ts","../../eui-tree/eui-tree.component.html","../../eui-tree/eui-tree.model.ts","../../eui-tree/eui-components-eui-tree.ts"],"sourcesContent":["import {\n Component,\n Input,\n NgModule,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n ViewEncapsulation,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n OnInit,\n OnChanges,\n HostBinding,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport {\n SelectionRecursiveState,\n TreeDataModel,\n TreeItemModel,\n TreeDataRunTimeModel,\n TreeItemRunTimeModel,\n EuiTreeSelectionChanges,\n} from './eui-tree.model';\nimport { FormsModule } from '@angular/forms';\nimport { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiLabelModule } from '@eui/components/eui-label';\nimport { EuiBadgeModule } from '@eui/components/eui-badge';\nimport { EuiChipModule } from '@eui/components/eui-chip';\nimport { EuiDropdownModule } from '@eui/components/eui-dropdown';\nimport { NestedTreeControl, CdkTreeModule } from '@angular/cdk/tree';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'eui-tree',\n templateUrl: './eui-tree.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiTreeComponent implements OnInit, OnChanges {\n @HostBinding('class') string = 'eui-tree';\n\n @Input() nodes: TreeDataModel;\n @Input() nodeTemplateRef: TemplateRef<any>;\n @Input() nodeContentMetadataTemplateRef: TemplateRef<any>;\n @Input() expandedIconClass: string;\n @Input() collapsedIconClass: string;\n @Input() expandedSvgIconClass = 'eui-chevron-forward:eui';\n @Input() collapsedSvgIconClass = 'eui-chevron-down:eui';\n\n // @ViewChild('treeComponentInstance') public treeComponentInstance: any;\n @Input()\n get isClickTogglingNode(): boolean {\n return this._isClickTogglingNode;\n }\n\n set isClickTogglingNode(value: BooleanInput) {\n this._isClickTogglingNode = coerceBooleanProperty(value);\n }\n\n @Input()\n get isMultiselect(): boolean {\n return this._isMultiselect;\n }\n\n set isMultiselect(value: BooleanInput) {\n this._isMultiselect = coerceBooleanProperty(value);\n }\n\n @Input()\n get isRecursiveSelection(): boolean {\n return this._isRecursiveSelection;\n }\n\n set isRecursiveSelection(value: BooleanInput) {\n this._isRecursiveSelection = coerceBooleanProperty(value);\n }\n\n @Input()\n get isRecursiveParentSelection(): boolean {\n return this._isRecursiveParentSelection;\n }\n\n set isRecursiveParentSelection(value: BooleanInput) {\n this._isRecursiveParentSelection = coerceBooleanProperty(value);\n }\n\n @Input()\n get autoTranslate(): boolean {\n return this._autoTranslate;\n }\n\n set autoTranslate(value: BooleanInput) {\n this._autoTranslate = coerceBooleanProperty(value);\n }\n\n @Output() selectionChange = new EventEmitter<EuiTreeSelectionChanges>();\n @Output() nodeClick = new EventEmitter<TreeItemModel>();\n @Output() nodeToggle = new EventEmitter<TreeItemModel>();\n cdkArrayDataSource: ArrayDataSource<TreeItemModel>;\n cdkTreeControl: NestedTreeControl<TreeItemModel>;\n renderTree: boolean;\n public uid: string = Math.floor(Math.random() * 1000000000).toString();\n private treeDataRunTime: TreeDataRunTimeModel;\n private runTimeSelectionRecursiveState: TreeDataRunTimeModel;\n private selectionModel: SelectionModel<TreeItemRunTimeModel>;\n private filteredTreeData: TreeDataModel;\n private _isClickTogglingNode = false;\n private _isMultiselect = false;\n private _isRecursiveSelection = false;\n private _isRecursiveParentSelection = true;\n private _autoTranslate = true;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n // Deep copy to the array.\n this.nodes = this.processInputs(JSON.parse(JSON.stringify(this.nodes)));\n this.createTreeDataRuntime(this.nodes);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.selectionModel = new SelectionModel<TreeItemRunTimeModel>(true, [], true, (a, b) => a?.path === b?.path);\n this.renderTree = true;\n this.selectionModel.changed.subscribe((sc) => {\n this.selectionChange.emit({\n added: sc.added.map((_) => this.getTreeItem(_.path)),\n removed: sc.removed.map((_) => this.getTreeItem(_.path)),\n selection: [...this.selectionModel.selected].map((item) => this.getTreeItem(item.path)),\n });\n });\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['nodes'].currentValue !== changes['nodes'].previousValue && this.cdkArrayDataSource) {\n this.renderTree = false;\n setTimeout(() => {\n this.nodes = JSON.parse(JSON.stringify(changes['nodes'].currentValue));\n this.createTreeDataRuntime(this.nodes);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = true;\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n trackBy(index: number, el: any): any {\n return el.parent;\n }\n\n getTreeItem(path: string): TreeItemModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.nodes;\n let node;\n if (nodeArr && Array.isArray(nodeArr)) {\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr && nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n }\n return node;\n }\n\n expandAll(): void {\n this.cdkTreeControl.expandAll();\n this.changeDetectorRef.markForCheck();\n }\n\n collapseAll(): void {\n this.cdkTreeControl.collapseAll();\n this.changeDetectorRef.markForCheck();\n }\n\n filterTerm(filterInput: string) {\n const treeData = JSON.parse(JSON.stringify(this.nodes));\n if (filterInput && filterInput !== '') {\n this.renderTree = false;\n this.changeDetectorRef.markForCheck();\n this.filteredTreeData = this.filterTreeData(treeData, 'label', filterInput);\n this.createTreeDataRuntime(this.filteredTreeData);\n setTimeout(() => {\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = true;\n this.changeDetectorRef.markForCheck();\n });\n } else {\n this.renderTree = false;\n this.changeDetectorRef.markForCheck();\n this.createTreeDataRuntime(this.nodes);\n this.filteredTreeData = undefined;\n setTimeout(() => {\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = true;\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n setAllSelection(isChecked: boolean): void {\n this.setIsCheckedForAll(this.nodes, isChecked, this.treeDataRunTime);\n this.changeDetectorRef.markForCheck();\n }\n\n onNodeClick(treeItem: TreeItemRunTimeModel): void {\n this.nodeClick.emit(this.getTreeItem(treeItem?.path));\n if (this.isClickTogglingNode) {\n this.cdkTreeControl.toggle(treeItem);\n this.onNodeToggle(treeItem);\n }\n }\n\n onNodeToggle(treeItem: TreeItemRunTimeModel): void {\n this.nodeToggle.emit(this.getTreeItem(treeItem?.path));\n }\n\n nodeSelected(evt: any, path: string, treeItemModel: TreeItemRunTimeModel): void {\n const item = this.getTreeItem(path);\n const node = item.node;\n const children = item.children;\n const pathArr = path.split('.');\n const hasParent = pathArr.length > 1;\n if (hasParent) {\n pathArr.pop();\n }\n node.isSelected = evt.target.checked;\n if (node.isSelected) {\n this.selectTreeItem(treeItemModel);\n } else {\n this.deselectTreeItem(treeItemModel);\n }\n node.isIndeterminate = false;\n if (children && children.length > 0) {\n if (node?.selectConfig?.recursive) {\n this.setIsCheckedForAll(children, evt.target.checked, treeItemModel?.children);\n }\n }\n this.runTimeSelectionRecursiveState[parseInt(pathArr[0], 10)] = this.calculateItemSelectionRecursiveState(\n JSON.parse(JSON.stringify(this.getTreeItem(pathArr[0])))\n );\n if (hasParent) {\n // Calculates parent path\n const parentPath = pathArr.join('.');\n // Creating node index sequence f.e If path is '1.2' it will be [1,2]\n const nodeIndexSeq = parentPath.split('.').map((indexStr) => parseInt(indexStr, 10));\n // Calculating the node paths array to be re-calculated from bottom to top\n const nodePathsSeq = [];\n nodeIndexSeq.forEach((nodeIndex, index) => {\n nodePathsSeq[index] = nodeIndexSeq.slice(0, index + 1).join('.');\n });\n nodePathsSeq.forEach((nodePath: string) => {\n const treeItem = this.getTreeItem(nodePath);\n const runTimeTreeItem = this.getRunTimeSelectionRecursiveState(nodePath);\n if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {\n treeItem.node.isSelected = runTimeTreeItem.selectionRecursiveState === 'allSelected';\n treeItem.node.isIndeterminate = runTimeTreeItem.selectionRecursiveState === 'indeterminate';\n if (treeItem.node.isSelected === true) {\n // runTimeTreeItem.node.isSelected = true;\n // this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.selectTreeItem(runTimeTreeItem);\n } else {\n // runTimeTreeItem.node.isSelected = true;\n // this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.deselectTreeItem(runTimeTreeItem);\n }\n }\n // debugger\n });\n }\n }\n\n hasChild = (_: number, item: TreeItemRunTimeModel) => !!item?.children && item?.children?.length > 0;\n\n onSelectFn(path: string, treeItemModel: TreeItemRunTimeModel): (evt: any) => void {\n if (treeItemModel?.node?.selectable) {\n const nodeSelected = this.nodeSelected.bind(this);\n return (evt: any) => nodeSelected(evt, path, treeItemModel);\n }\n return (evt: any) => {\n console.warn('treeItemModel.node.selectable is false, you can not implement onSelect');\n };\n }\n\n private processInputs(treeData: TreeDataModel): TreeDataModel {\n if (this.isMultiselect) {\n treeData = this.overrideTreeDataModelForSelection(treeData, this.isRecursiveSelection, !this.isRecursiveParentSelection);\n }\n return treeData;\n }\n\n private overrideTreeDataModelForSelection(nodeArr: TreeDataModel, isRecursive: boolean, noAutoSelectParent: boolean): TreeDataModel {\n return nodeArr.map((item: TreeItemModel, index: number) => {\n if (item?.children && item.children.length > 0) {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n // isSelected: false,\n // isIndeterminate: false,\n selectConfig: {\n ...item.node.selectConfig,\n recursive:\n typeof item?.node?.selectConfig?.recursive === 'undefined'\n ? !!isRecursive\n : item?.node?.selectConfig?.recursive,\n noAutoSelectParent:\n typeof item?.node?.selectConfig?.noAutoSelectParent === 'undefined'\n ? noAutoSelectParent\n : item?.node?.selectConfig?.noAutoSelectParent,\n },\n },\n children: this.overrideTreeDataModelForSelection(item.children, isRecursive, noAutoSelectParent),\n };\n } else {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n },\n };\n }\n });\n }\n\n private getSelectionIndexOfItem(runTimeTreeItem: TreeItemRunTimeModel): number {\n return this.selectionModel.selected.findIndex((i) => i?.path === runTimeTreeItem?.path);\n }\n\n private selectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n const indexOfItem = this.getSelectionIndexOfItem(runTimeTreeItem);\n if (indexOfItem === -1) {\n this.selectionModel.select(runTimeTreeItem);\n }\n }\n\n private deselectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n const indexOfItem = this.getSelectionIndexOfItem(runTimeTreeItem);\n if (indexOfItem > -1) {\n const newSelection = [...this.selectionModel.selected];\n newSelection.splice(indexOfItem, 1);\n this.selectionModel.setSelection(...newSelection);\n }\n }\n\n // Creates treeDataRunTime & runTimeSelectionRecursiveState for separate the logic.\n private createTreeDataRuntime(nodes: TreeDataModel): void {\n this.treeDataRunTime = JSON.parse(JSON.stringify(nodes)).map((item, index) => {\n return this.calculateRunTimeState({ ...item }, index);\n });\n this.runTimeSelectionRecursiveState = this.treeDataRunTime.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));\n }\n\n // Creating run time state which includes children selection state for selection tree.\n private calculateItemSelectionRecursiveState(treeItem: TreeItemRunTimeModel): TreeItemRunTimeModel {\n let childStates = [];\n let itemState: SelectionRecursiveState = 'indeterminate';\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, index) => {\n treeItem.children[index] = this.calculateItemSelectionRecursiveState(child);\n });\n const runTimeItems = treeItem.children as any;\n childStates = runTimeItems.map((item) => item.selectionRecursiveState);\n }\n if (treeItem.node.isSelected && childStates.every((state) => state === 'allSelected')) {\n itemState = 'allSelected';\n } else if (!treeItem.node.isSelected && childStates.every((state) => state === 'allNotSelected')) {\n itemState = 'allNotSelected';\n } else if (\n treeItem.node?.selectConfig?.recursive &&\n childStates.every((state) => state === 'allSelected') &&\n !treeItem.node.isSelected\n ) {\n if (!treeItem?.node?.selectConfig?.noAutoSelectParent) {\n treeItem.node.isSelected = true;\n this.selectTreeItem(treeItem);\n itemState = 'allSelected';\n }\n } else if (\n treeItem.node?.selectConfig?.recursive &&\n childStates.every((state) => state === 'allNotSelected') &&\n treeItem.node.isSelected\n ) {\n treeItem.node.isSelected = false;\n this.deselectTreeItem(treeItem);\n itemState = 'allNotSelected';\n }\n return {\n ...treeItem,\n selectionRecursiveState: itemState,\n };\n }\n\n private getRunTimeSelectionRecursiveState(path: string): TreeItemRunTimeModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.runTimeSelectionRecursiveState;\n let node;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n return node;\n }\n\n private setIsCheckedForAll(nodeArr: TreeDataModel, isChecked: boolean, runTimeTreeData: TreeDataRunTimeModel): void {\n nodeArr.forEach((item: TreeItemModel, index: number) => {\n if (runTimeTreeData[index] && nodeArr[index]?.node?.selectable) {\n nodeArr[index] = {\n ...item,\n node: {\n ...item.node,\n isSelected: isChecked,\n isIndeterminate: false,\n },\n };\n if (isChecked) {\n this.selectTreeItem(runTimeTreeData[index]);\n } else {\n this.deselectTreeItem(runTimeTreeData[index]);\n }\n }\n if (runTimeTreeData[index]?.children?.length > 0 && nodeArr[index].children && nodeArr[index].children.length > 0) {\n this.setIsCheckedForAll(nodeArr[index].children, isChecked, runTimeTreeData[index].children);\n }\n });\n }\n\n private resolvePath(path: string): Array<number> {\n return path?.split('.').map((index: string) => parseInt(index, 10));\n }\n\n private calculateRunTimeState(treeItem: TreeItemRunTimeModel, index: number, parentPath?: string): TreeItemRunTimeModel {\n treeItem.path = parentPath ? parentPath + '.' + index : index.toString();\n treeItem.index = index;\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, treeItemIndex) => {\n treeItem.children[treeItemIndex] = this.calculateRunTimeState(child, treeItemIndex, treeItem.path);\n });\n }\n return treeItem;\n }\n\n private filterTreeData(treeData: TreeDataModel, key: string = 'label', filterStr: string) {\n return treeData.filter((treeItem) => {\n if (treeItem?.children?.length > 0) {\n treeItem.children = this.filterTreeData([...treeItem.children], key, filterStr);\n treeItem.children = treeItem.children.length > 0 ? treeItem.children : undefined;\n }\n if (treeItem.node.treeContentBlock.label.includes(filterStr)) {\n return true;\n } else if (treeItem?.children?.length > 0) {\n return treeItem?.children?.length > 0;\n } else {\n return false;\n }\n });\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n TranslateModule,\n EuiInputCheckboxModule,\n CdkTreeModule,\n EuiButtonModule,\n EuiIconModule,\n EuiLabelModule,\n EuiBadgeModule,\n EuiChipModule,\n EuiDropdownModule,\n ],\n declarations: [EuiTreeComponent],\n exports: [EuiTreeComponent],\n})\nexport class EuiTreeModule {}\n","<ul class=\"eui-tree__wrapper\">\n <cdk-tree [dataSource]=\"cdkArrayDataSource\" [treeControl]=\"cdkTreeControl\" [trackBy]=\"trackBy\" *ngIf=\"renderTree\" 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 treeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\" (click)=\"onNodeClick(treeItemModel)\">\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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel.path, treeItemModel),\n id: uid + treeItemModel.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 treeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeItemModel)\" 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 ' + treeItemModel?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-u-mr-xs\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && !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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel?.path, treeItemModel),\n id: uid + treeItemModel.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(treeItemModel)\">\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\">\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 && node.isSelected\"\n [indeterminate]=\"node && 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-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-mr-s\"\n [class.eui-label--selected]=\"node?.isSelected\"\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-mr-m\">\n <a class=\"eui-u-text-link\" [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-mr-m\">\n <a\n class=\"eui-u-text-link-external\"\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-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?.hasContextMenu\">\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 <!-- TODO: Inject template ref or config here\n <button euiDropdownItem>Option item 1</button>\n <button euiDropdownItem>Option item 2</button>\n <button euiDropdownItem>Option item 3</button>\n -->\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 (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","import { UxLink } from '@eui/base';\n\nexport type TreeDataModel = Array<TreeItemModel>;\n\nexport type TreeItemModel = {\n node: TreeNode;\n children?: TreeDataModel;\n};\n\nexport type TreeNode = {\n // metadata can be block content, or any\n treeContentBlock: EuiTreeContentBlockModel | any;\n} & SelectionModel;\n\nexport interface EuiTreeContentBlockModel {\n label: string;\n tooltipLabel: string;\n url: string;\n urlExternal: string;\n urlExternalTarget: string;\n typeLabel: string;\n typeClass: string;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n rightContent?: {\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n badges?: Array<{ label: string; typeClass: string }>;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n hasContextMenu?: boolean;\n };\n metaData: string;\n}\n\nexport type SelectionModel = {\n // if one of sub is selected, it becomes intermediate\n selectable?: boolean;\n isSelected?: boolean;\n isIndeterminate?: boolean;\n selectConfig?: SelectConfigModel;\n};\n\nexport interface SelectConfigModel {\n /*\n If It is true;\n When user select parent, all the children will be selected\n When selection state is changed, If all children is selected parent will be selected as long as noAutoSelectParent is not true\n */\n recursive?: boolean;\n /* when It is true, If all children is selected, parent will not be selected, while recursive is true*/\n noAutoSelectParent?: boolean;\n}\n\nexport type EuiTreeSelectionChanges = { added: TreeDataModel; removed: TreeDataModel; selection: TreeDataModel };\n\nexport type TreeDataRunTimeModel = Array<TreeItemRunTimeModel>;\n\nexport type TreeItemRunTimeModel = { selectionRecursiveState?: SelectionRecursiveState; index?: number; path?: string } & TreeItemModel;\n\nexport type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function uxTreeNodesMetaDataMapper(oldTree: Array<UxLink>): TreeDataModel {\n return oldTree.map((item) => {\n if (item?.typeClass === 'default') {\n // default typeClass will be\n item.typeClass = 'secondary';\n }\n if (item?.badgeLabel) {\n // default typeClass will be\n if (item?.badges?.length > 0) {\n item.badges.push({ label: item?.badgeLabel, typeClass: 'secondary' });\n } else {\n item.badges = [{ label: item?.badgeLabel, typeClass: 'secondary' }];\n }\n }\n return {\n node: {\n treeContentBlock: {\n label: item.label,\n typeLabel: item.typeLabel,\n typeClass: item.typeLabel && !item.typeClass ? 'secondary' : item.typeClass,\n tooltipLabel: item.tooltipLabel,\n url: item.url,\n urlExternal: item.urlExternal,\n urlExternalTarget: item.urlExternal && item.urlExternalTarget ? item.urlExternalTarget : undefined,\n badges: item.badges,\n metadata: item.metadata,\n },\n },\n children: item.children ? uxTreeNodesMetaDataMapper(item.children) : undefined,\n };\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-tree.mjs","sources":["../../eui-tree/eui-tree.component.ts","../../eui-tree/eui-tree.component.html","../../eui-tree/eui-tree.model.ts","../../eui-tree/eui-components-eui-tree.ts"],"sourcesContent":["import {\n Component,\n Input,\n NgModule,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n ViewEncapsulation,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n OnInit,\n OnChanges,\n HostBinding,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport {\n SelectionRecursiveState,\n TreeDataModel,\n TreeItemModel,\n TreeDataRunTimeModel,\n TreeItemRunTimeModel,\n EuiTreeSelectionChanges,\n} from './eui-tree.model';\nimport { FormsModule } from '@angular/forms';\nimport { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiLabelModule } from '@eui/components/eui-label';\nimport { EuiBadgeModule } from '@eui/components/eui-badge';\nimport { EuiChipModule } from '@eui/components/eui-chip';\nimport { EuiDropdownModule } from '@eui/components/eui-dropdown';\nimport { NestedTreeControl, CdkTreeModule } from '@angular/cdk/tree';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'eui-tree',\n templateUrl: './eui-tree.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiTreeComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class') string = 'eui-tree';\n\n @Input() nodes: TreeDataModel;\n @Input() nodeTemplateRef: TemplateRef<any>;\n @Input() nodeContentMetadataTemplateRef: TemplateRef<any>;\n @Input() rightContextMenuTemplateRef: TemplateRef<any>;\n @Input() expandedIconClass: string;\n @Input() collapsedIconClass: string;\n @Input() expandedSvgIconClass = 'eui-chevron-forward:eui';\n @Input() collapsedSvgIconClass = 'eui-chevron-down:eui';\n\n // @ViewChild('treeComponentInstance') public treeComponentInstance: any;\n @Input()\n get isClickTogglingNode(): boolean {\n return this._isClickTogglingNode;\n }\n\n set isClickTogglingNode(value: BooleanInput) {\n this._isClickTogglingNode = coerceBooleanProperty(value);\n }\n\n @Input()\n get isMultiselect(): boolean {\n return this._isMultiselect;\n }\n\n set isMultiselect(value: BooleanInput) {\n this._isMultiselect = coerceBooleanProperty(value);\n }\n\n @Input()\n get isRecursiveSelection(): boolean {\n return this._isRecursiveSelection;\n }\n\n set isRecursiveSelection(value: BooleanInput) {\n this._isRecursiveSelection = coerceBooleanProperty(value);\n }\n\n @Input()\n get isRecursiveParentSelection(): boolean {\n return this._isRecursiveParentSelection;\n }\n\n set isRecursiveParentSelection(value: BooleanInput) {\n this._isRecursiveParentSelection = coerceBooleanProperty(value);\n }\n\n @Input()\n get autoTranslate(): boolean {\n return this._autoTranslate;\n }\n\n set autoTranslate(value: BooleanInput) {\n this._autoTranslate = coerceBooleanProperty(value);\n }\n\n @Output() selectionChange = new EventEmitter<EuiTreeSelectionChanges>();\n @Output() nodeClick = new EventEmitter<TreeItemModel>();\n @Output() nodeToggle = new EventEmitter<TreeItemModel>();\n cdkArrayDataSource: ArrayDataSource<TreeItemModel>;\n cdkTreeControl: NestedTreeControl<TreeItemModel>;\n renderTree: boolean;\n public uid: string = Math.floor(Math.random() * 1000000000).toString();\n private treeDataRunTime: TreeDataRunTimeModel;\n private runTimeSelectionRecursiveState: TreeDataRunTimeModel;\n private selectionModel: SelectionModel<TreeItemRunTimeModel>;\n private filteredTreeData: TreeDataModel;\n private _isClickTogglingNode = false;\n private _isMultiselect = false;\n private _isRecursiveSelection = false;\n private _isRecursiveParentSelection = true;\n private _autoTranslate = true;\n private selectionModelSubs;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n // Deep copy to the array.\n this.nodes = this.processInputs(JSON.parse(JSON.stringify(this.nodes)));\n this.createTreeDataRuntime(this.nodes);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.selectionModel = new SelectionModel<TreeItemRunTimeModel>(true, [], true, (a, b) => a?.path === b?.path);\n this.renderTree = true;\n this.selectionModelSubs = this.selectionModel.changed.subscribe((sc) => {\n this.selectionChange.emit({\n added: sc.added.map((_) => this.getTreeItem(_.path)),\n removed: sc.removed.map((_) => this.getTreeItem(_.path)),\n selection: [...this.selectionModel.selected].map((item) => this.getTreeItem(item.path)),\n });\n });\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['nodes'].currentValue !== changes['nodes'].previousValue && this.cdkArrayDataSource) {\n this.renderTree = false;\n setTimeout(() => {\n this.nodes = JSON.parse(JSON.stringify(changes['nodes'].currentValue));\n this.createTreeDataRuntime(this.nodes);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = true;\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n }\n\n trackBy(index: number, el: any): any {\n return el.parent;\n }\n\n getTreeItem(path: string): TreeItemModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.nodes;\n let node;\n if (nodeArr && Array.isArray(nodeArr)) {\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr && nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n }\n return node;\n }\n\n expandAll(): void {\n this.cdkTreeControl.expandAll();\n this.changeDetectorRef.markForCheck();\n }\n\n collapseAll(): void {\n this.cdkTreeControl.collapseAll();\n this.changeDetectorRef.markForCheck();\n }\n\n filterTerm(filterInput: string) {\n const treeData = JSON.parse(JSON.stringify(this.nodes));\n if (filterInput && filterInput !== '') {\n this.renderTree = false;\n this.changeDetectorRef.markForCheck();\n this.filteredTreeData = this.filterTreeData(treeData, 'label', filterInput);\n this.createTreeDataRuntime(this.filteredTreeData);\n setTimeout(() => {\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = true;\n this.changeDetectorRef.markForCheck();\n });\n } else {\n this.renderTree = false;\n this.changeDetectorRef.markForCheck();\n this.createTreeDataRuntime(this.nodes);\n this.filteredTreeData = undefined;\n setTimeout(() => {\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children);\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = true;\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n\n setAllSelection(isChecked: boolean): void {\n this.setIsCheckedForAll(this.nodes, isChecked, this.treeDataRunTime);\n this.changeDetectorRef.markForCheck();\n }\n\n onNodeClick(treeItem: TreeItemRunTimeModel): void {\n this.nodeClick.emit(this.getTreeItem(treeItem?.path));\n if (this.isClickTogglingNode) {\n this.cdkTreeControl.toggle(treeItem);\n this.onNodeToggle(treeItem);\n }\n }\n\n onNodeToggle(treeItem: TreeItemRunTimeModel): void {\n this.nodeToggle.emit(this.getTreeItem(treeItem?.path));\n }\n\n nodeSelected(evt: any, path: string, treeItemModel: TreeItemRunTimeModel): void {\n const item = this.getTreeItem(path);\n const node = item.node;\n const children = item.children;\n const pathArr = path.split('.');\n const hasParent = pathArr.length > 1;\n if (hasParent) {\n pathArr.pop();\n }\n node.isSelected = evt.target.checked;\n if (node.isSelected) {\n this.selectTreeItem(treeItemModel);\n } else {\n this.deselectTreeItem(treeItemModel);\n }\n node.isIndeterminate = false;\n if (children && children.length > 0) {\n if (node?.selectConfig?.recursive) {\n this.setIsCheckedForAll(children, evt.target.checked, treeItemModel?.children);\n }\n }\n this.runTimeSelectionRecursiveState[parseInt(pathArr[0], 10)] = this.calculateItemSelectionRecursiveState(\n JSON.parse(JSON.stringify(this.getTreeItem(pathArr[0])))\n );\n if (hasParent) {\n // Calculates parent path\n const parentPath = pathArr.join('.');\n // Creating node index sequence f.e If path is '1.2' it will be [1,2]\n const nodeIndexSeq = parentPath.split('.').map((indexStr) => parseInt(indexStr, 10));\n // Calculating the node paths array to be re-calculated from bottom to top\n const nodePathsSeq = [];\n nodeIndexSeq.forEach((nodeIndex, index) => {\n nodePathsSeq[index] = nodeIndexSeq.slice(0, index + 1).join('.');\n });\n nodePathsSeq.forEach((nodePath: string) => {\n const treeItem = this.getTreeItem(nodePath);\n const runTimeTreeItem = this.getRunTimeSelectionRecursiveState(nodePath);\n if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {\n treeItem.node.isSelected = runTimeTreeItem.selectionRecursiveState === 'allSelected';\n treeItem.node.isIndeterminate = runTimeTreeItem.selectionRecursiveState === 'indeterminate';\n if (treeItem.node.isSelected === true) {\n // runTimeTreeItem.node.isSelected = true;\n // this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.selectTreeItem(runTimeTreeItem);\n } else {\n // runTimeTreeItem.node.isSelected = true;\n // this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.deselectTreeItem(runTimeTreeItem);\n }\n }\n // debugger\n });\n }\n }\n\n hasChild = (_: number, item: TreeItemRunTimeModel) => !!item?.children && item?.children?.length > 0;\n\n onSelectFn(path: string, treeItemModel: TreeItemRunTimeModel): (evt: any) => void {\n if (treeItemModel?.node?.selectable) {\n const nodeSelected = this.nodeSelected.bind(this);\n return (evt: any) => nodeSelected(evt, path, treeItemModel);\n }\n return (evt: any) => {\n console.warn('treeItemModel.node.selectable is false, you can not implement onSelect');\n };\n }\n\n private processInputs(treeData: TreeDataModel): TreeDataModel {\n if (this.isMultiselect) {\n treeData = this.overrideTreeDataModelForSelection(treeData, this.isRecursiveSelection, !this.isRecursiveParentSelection);\n }\n return treeData;\n }\n\n private overrideTreeDataModelForSelection(nodeArr: TreeDataModel, isRecursive: boolean, noAutoSelectParent: boolean): TreeDataModel {\n return nodeArr.map((item: TreeItemModel, index: number) => {\n if (item?.children && item.children.length > 0) {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n // isSelected: false,\n // isIndeterminate: false,\n selectConfig: {\n ...item.node.selectConfig,\n recursive:\n typeof item?.node?.selectConfig?.recursive === 'undefined'\n ? !!isRecursive\n : item?.node?.selectConfig?.recursive,\n noAutoSelectParent:\n typeof item?.node?.selectConfig?.noAutoSelectParent === 'undefined'\n ? noAutoSelectParent\n : item?.node?.selectConfig?.noAutoSelectParent,\n },\n },\n children: this.overrideTreeDataModelForSelection(item.children, isRecursive, noAutoSelectParent),\n };\n } else {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n },\n };\n }\n });\n }\n\n private getSelectionIndexOfItem(runTimeTreeItem: TreeItemRunTimeModel): number {\n return this.selectionModel.selected.findIndex((i) => i?.path === runTimeTreeItem?.path);\n }\n\n private selectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n const indexOfItem = this.getSelectionIndexOfItem(runTimeTreeItem);\n if (indexOfItem === -1) {\n this.selectionModel.select(runTimeTreeItem);\n }\n }\n\n private deselectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n const indexOfItem = this.getSelectionIndexOfItem(runTimeTreeItem);\n if (indexOfItem > -1) {\n const newSelection = [...this.selectionModel.selected];\n newSelection.splice(indexOfItem, 1);\n this.selectionModel.setSelection(...newSelection);\n }\n }\n\n // Creates treeDataRunTime & runTimeSelectionRecursiveState for separate the logic.\n private createTreeDataRuntime(nodes: TreeDataModel): void {\n this.treeDataRunTime = JSON.parse(JSON.stringify(nodes)).map((item, index) => {\n return this.calculateRunTimeState({ ...item }, index);\n });\n this.runTimeSelectionRecursiveState = this.treeDataRunTime.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));\n }\n\n // Creating run time state which includes children selection state for selection tree.\n private calculateItemSelectionRecursiveState(treeItem: TreeItemRunTimeModel): TreeItemRunTimeModel {\n let childStates = [];\n let itemState: SelectionRecursiveState = 'indeterminate';\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, index) => {\n treeItem.children[index] = this.calculateItemSelectionRecursiveState(child);\n });\n const runTimeItems = treeItem.children as any;\n childStates = runTimeItems.map((item) => item.selectionRecursiveState);\n }\n if (treeItem.node.isSelected && childStates.every((state) => state === 'allSelected')) {\n itemState = 'allSelected';\n } else if (!treeItem.node.isSelected && childStates.every((state) => state === 'allNotSelected')) {\n itemState = 'allNotSelected';\n } else if (\n treeItem.node?.selectConfig?.recursive &&\n childStates.every((state) => state === 'allSelected') &&\n !treeItem.node.isSelected\n ) {\n if (!treeItem?.node?.selectConfig?.noAutoSelectParent) {\n treeItem.node.isSelected = true;\n this.selectTreeItem(treeItem);\n itemState = 'allSelected';\n }\n } else if (\n treeItem.node?.selectConfig?.recursive &&\n childStates.every((state) => state === 'allNotSelected') &&\n treeItem.node.isSelected\n ) {\n treeItem.node.isSelected = false;\n this.deselectTreeItem(treeItem);\n itemState = 'allNotSelected';\n }\n return {\n ...treeItem,\n selectionRecursiveState: itemState,\n };\n }\n\n private getRunTimeSelectionRecursiveState(path: string): TreeItemRunTimeModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.runTimeSelectionRecursiveState;\n let node;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n return node;\n }\n\n private setIsCheckedForAll(nodeArr: TreeDataModel, isChecked: boolean, runTimeTreeData: TreeDataRunTimeModel): void {\n nodeArr.forEach((item: TreeItemModel, index: number) => {\n if (runTimeTreeData[index] && nodeArr[index]?.node?.selectable) {\n nodeArr[index] = {\n ...item,\n node: {\n ...item.node,\n isSelected: isChecked,\n isIndeterminate: false,\n },\n };\n if (isChecked) {\n this.selectTreeItem(runTimeTreeData[index]);\n } else {\n this.deselectTreeItem(runTimeTreeData[index]);\n }\n }\n if (runTimeTreeData[index]?.children?.length > 0 && nodeArr[index].children && nodeArr[index].children.length > 0) {\n this.setIsCheckedForAll(nodeArr[index].children, isChecked, runTimeTreeData[index].children);\n }\n });\n }\n\n private resolvePath(path: string): Array<number> {\n return path?.split('.').map((index: string) => parseInt(index, 10));\n }\n\n private calculateRunTimeState(treeItem: TreeItemRunTimeModel, index: number, parentPath?: string): TreeItemRunTimeModel {\n treeItem.path = parentPath ? parentPath + '.' + index : index.toString();\n treeItem.index = index;\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, treeItemIndex) => {\n treeItem.children[treeItemIndex] = this.calculateRunTimeState(child, treeItemIndex, treeItem.path);\n });\n }\n return treeItem;\n }\n\n private filterTreeData(treeData: TreeDataModel, key: string = 'label', filterStr: string) {\n return treeData.filter((treeItem) => {\n if (treeItem?.children?.length > 0) {\n treeItem.children = this.filterTreeData([...treeItem.children], key, filterStr);\n treeItem.children = treeItem.children.length > 0 ? treeItem.children : undefined;\n }\n if (treeItem.node.treeContentBlock.label.includes(filterStr)) {\n return true;\n } else if (treeItem?.children?.length > 0) {\n return treeItem?.children?.length > 0;\n } else {\n return false;\n }\n });\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n TranslateModule,\n EuiInputCheckboxModule,\n CdkTreeModule,\n EuiButtonModule,\n EuiIconModule,\n EuiLabelModule,\n EuiBadgeModule,\n EuiChipModule,\n EuiDropdownModule,\n ],\n declarations: [EuiTreeComponent],\n exports: [EuiTreeComponent],\n})\nexport class EuiTreeModule {}\n","<ul class=\"eui-tree__wrapper\">\n <cdk-tree [dataSource]=\"cdkArrayDataSource\" [treeControl]=\"cdkTreeControl\" [trackBy]=\"trackBy\" *ngIf=\"renderTree\" 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 treeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\" (click)=\"onNodeClick(treeItemModel)\">\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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel.path, treeItemModel),\n id: uid + treeItemModel.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 treeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <li\n class=\"eui-tree-node\"\n *ngIf=\"treeItemModel\"\n title=\"{{\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeItemModel)\" 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 ' + treeItemModel?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-u-mr-xs\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeItemModel) && !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(treeItemModel?.path)?.node,\n onSelect: onSelectFn(treeItemModel?.path, treeItemModel),\n id: uid + treeItemModel.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(treeItemModel)\">\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\">\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 && node.isSelected\"\n [indeterminate]=\"node && 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-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-mr-s\"\n [class.eui-label--selected]=\"node?.isSelected\"\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-mr-m\">\n <a class=\"eui-u-text-link\" [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-mr-m\">\n <a\n class=\"eui-u-text-link-external\"\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-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 (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","import { UxLink } from '@eui/base';\n\nexport type TreeDataModel = Array<TreeItemModel>;\n\nexport type TreeItemModel = {\n node: TreeNode;\n children?: TreeDataModel;\n};\n\nexport type TreeNode = {\n // metadata can be block content, or any\n treeContentBlock: EuiTreeContentBlockModel | any;\n} & SelectionModel;\n\nexport interface EuiTreeContentBlockModel {\n label: string;\n tooltipLabel: string;\n url: string;\n urlExternal: string;\n urlExternalTarget: string;\n typeLabel: string;\n typeClass: string;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n rightContent?: {\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n badges?: Array<{ label: string; typeClass: string }>;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n contextMenuMetaData?: any;\n };\n metaData: string;\n}\n\nexport type SelectionModel = {\n // if one of sub is selected, it becomes intermediate\n selectable?: boolean;\n isSelected?: boolean;\n isIndeterminate?: boolean;\n selectConfig?: SelectConfigModel;\n};\n\nexport interface SelectConfigModel {\n /*\n If It is true;\n When user select parent, all the children will be selected\n When selection state is changed, If all children is selected parent will be selected as long as noAutoSelectParent is not true\n */\n recursive?: boolean;\n /* when It is true, If all children is selected, parent will not be selected, while recursive is true*/\n noAutoSelectParent?: boolean;\n}\n\nexport type EuiTreeSelectionChanges = { added: TreeDataModel; removed: TreeDataModel; selection: TreeDataModel };\n\nexport type TreeDataRunTimeModel = Array<TreeItemRunTimeModel>;\n\nexport type TreeItemRunTimeModel = { selectionRecursiveState?: SelectionRecursiveState; index?: number; path?: string } & TreeItemModel;\n\nexport type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function uxTreeNodesMetaDataMapper(oldTree: Array<UxLink>): TreeDataModel {\n return oldTree.map((item) => {\n if (item?.typeClass === 'default') {\n // default typeClass will be\n item.typeClass = 'secondary';\n }\n if (item?.badgeLabel) {\n // default typeClass will be\n if (item?.badges?.length > 0) {\n item.badges.push({ label: item?.badgeLabel, typeClass: 'secondary' });\n } else {\n item.badges = [{ label: item?.badgeLabel, typeClass: 'secondary' }];\n }\n }\n return {\n node: {\n treeContentBlock: {\n label: item.label,\n typeLabel: item.typeLabel,\n typeClass: item.typeLabel && !item.typeClass ? 'secondary' : item.typeClass,\n tooltipLabel: item.tooltipLabel,\n url: item.url,\n urlExternal: item.urlExternal,\n urlExternalTarget: item.urlExternal && item.urlExternalTarget ? item.urlExternalTarget : undefined,\n badges: item.badges,\n metadata: item.metadata,\n },\n },\n children: item.children ? uxTreeNodesMetaDataMapper(item.children) : undefined,\n };\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eui/components",
3
- "version": "16.0.0-next.11",
3
+ "version": "16.0.0-next.13",
4
4
  "tag": "next",
5
5
  "description": "eUI components package - next components prior to version 9",
6
6
  "homepage": "https://eui.ecdevops.eu",
@@ -45,18 +45,18 @@
45
45
  "esm": "./esm2022/eui-autocomplete/eui-components-eui-autocomplete.mjs",
46
46
  "default": "./fesm2022/eui-components-eui-autocomplete.mjs"
47
47
  },
48
- "./eui-all": {
49
- "types": "./eui-all/index.d.ts",
50
- "esm2022": "./esm2022/eui-all/eui-components-eui-all.mjs",
51
- "esm": "./esm2022/eui-all/eui-components-eui-all.mjs",
52
- "default": "./fesm2022/eui-components-eui-all.mjs"
53
- },
54
48
  "./eui-badge": {
55
49
  "types": "./eui-badge/index.d.ts",
56
50
  "esm2022": "./esm2022/eui-badge/eui-components-eui-badge.mjs",
57
51
  "esm": "./esm2022/eui-badge/eui-components-eui-badge.mjs",
58
52
  "default": "./fesm2022/eui-components-eui-badge.mjs"
59
53
  },
54
+ "./eui-all": {
55
+ "types": "./eui-all/index.d.ts",
56
+ "esm2022": "./esm2022/eui-all/eui-components-eui-all.mjs",
57
+ "esm": "./esm2022/eui-all/eui-components-eui-all.mjs",
58
+ "default": "./fesm2022/eui-components-eui-all.mjs"
59
+ },
60
60
  "./eui-block-content": {
61
61
  "types": "./eui-block-content/index.d.ts",
62
62
  "esm2022": "./esm2022/eui-block-content/eui-components-eui-block-content.mjs",