@eui/eds 22.0.0-alpha.32 → 22.0.0-alpha.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +23 -0
- package/docs/components/EdsBadge.html +3 -3
- package/docs/components/EdsTree.html +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EdsBadge.md +2 -2
- package/docs/json/documentation.json +55 -55
- package/docs/llms.txt +5 -5
- package/docs/miscellaneous/typealiases.html +2 -2
- package/docs/properties.html +1 -1
- package/fesm2022/eui-eds-eds-badge.mjs +5 -5
- package/fesm2022/eui-eds-eds-badge.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-icon.mjs +2 -2
- package/fesm2022/eui-eds-eds-icon.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-password.mjs +2 -2
- package/fesm2022/eui-eds-eds-input-password.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-tree.mjs +2 -2
- package/fesm2022/eui-eds-eds-tree.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-eds-eds-badge.d.ts +5 -5
- package/types/eui-eds-eds-badge.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-tree.mjs","sources":["../../eds-tree/eds-tree.model.ts","../../eds-tree/eds-tree.ts","../../eds-tree/eds-tree.html","../../eds-tree/eds-dropdown-tree.directive.ts","../../eds-tree/eds-tree-helper.ts","../../eds-tree/eds-tree-form-control.directive.ts","../../eds-tree/index.ts","../../eds-tree/eui-eds-eds-tree.ts"],"sourcesContent":["export type TreeDataModel = TreeItemModel[];\n\nexport type TreeItemModel = {\n node: TreeNode;\n children?: TreeDataModel;\n};\n\nexport type TreeNode = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n treeContentBlock: EdsTreeContentBlockModel | any;\n} & SelectionModel &\n ExpandModel;\n\nexport interface EdsTreeContentBlockModel {\n id?: string | number;\n label: string;\n tooltipLabel?: string;\n url?: string;\n urlExternal?: string;\n urlExternalTarget?: string;\n typeLabel?: string;\n typeClass?: string;\n chips?: { 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?: { label: string; typeClass: string }[];\n chips?: { label: string; typeClass?: string; isOutline?: boolean }[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contextMenuMetaData?: any;\n };\n metadata?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport type SelectionModel = {\n selectable?: boolean;\n isSelected?: boolean;\n isIndeterminate?: boolean;\n selectConfig?: SelectConfigModel;\n};\n\nexport interface SelectConfigModel extends MultiSelectionLogic, SingleSelectionLogic {\n recursive?: boolean;\n noAutoSelectParent?: boolean;\n singleSelect?: boolean;\n}\n\nexport interface MultiSelectionLogic {\n recursive?: boolean;\n noAutoSelectParent?: boolean;\n}\n\nexport interface SingleSelectionLogic {\n singleSelect?: boolean;\n}\n\nexport type ExpandModel = {\n isExpanded?: boolean;\n};\n\nexport type EdsTreeSelectionChanges = { added: TreeDataModel; removed: TreeDataModel; selection: TreeDataModel };\n\nexport type TreeDataRunTimeModel = TreeItemRunTimeModel[];\n\nexport type TreeItemRunTimeModel = { index: number; path: string; children?: TreeItemRunTimeModel[]; last?: boolean; matched?: boolean };\n\nexport type TreeItemSelectionRecursiveModel = {\n selectionRecursiveState: SelectionRecursiveState;\n children?: TreeItemSelectionRecursiveModel[];\n};\n\nexport type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';\n\nexport class EdsTreePagination<T> {\n private data: T[];\n private startPage: number;\n private totalItems: number;\n private renderedPageCount: number;\n private perPage: number;\n private totalPages: number;\n\n constructor(data: T[], startPage: number, renderedPageCount: number, perPage: number) {\n this.data = data;\n this.setCurrentStartPage(startPage);\n this.renderedPageCount = renderedPageCount;\n this.totalItems = this.data.length;\n this.perPage = perPage;\n this.totalPages = Math.ceil(this.totalItems / this.perPage);\n }\n\n public paginateNext(): { startPage: number; data: T[] } {\n if (this.startPage < this.totalPages) {\n this.startPage += 1;\n }\n return this.getViewData();\n }\n\n public paginatePrev(): { startPage: number; data: T[] } {\n if (this.startPage > 1) {\n this.startPage -= 1;\n }\n return this.getViewData();\n }\n\n public getCurrentStartPage(): number {\n return this.startPage;\n }\n\n public setCurrentStartPage(startPage: number): void {\n this.startPage = startPage;\n }\n\n public isAtMax(): boolean {\n return this.totalPages < this.startPage + this.renderedPageCount;\n }\n\n public getViewData(): { startPage: number; data: T[] } {\n const startIndex = (this.startPage - 1) * this.perPage;\n const endIndex = startIndex + this.perPage * this.renderedPageCount;\n const pageData = structuredClone(this.data).slice(startIndex, endIndex);\n return {\n startPage: this.startPage,\n data: pageData,\n };\n }\n}\n\nexport class CustomNodeSelectFnHelper {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(private compInstance: any) {}\n\n select(path: string, isChecked: boolean): void {\n this.compInstance.silentSelect(path, isChecked);\n }\n\n getParents(path: string): string[] {\n return this.compInstance.getParentPaths(path);\n }\n\n getTreeItem(path: string): TreeItemModel {\n return this.compInstance.getTreeItem(path);\n }\n\n getSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel {\n return this.compInstance.getRunTimeSelectionRecursiveState(path);\n }\n}\n\nexport type CustomNodeSelectFn = (path: string, isChecked: boolean, treeItem: TreeItemModel, helper: CustomNodeSelectFnHelper) => void;\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n OnInit,\n OnChanges,\n OnDestroy,\n booleanAttribute,\n inject,\n numberAttribute,\n input,\n output,\n computed,\n viewChild,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n SelectionRecursiveState,\n TreeDataModel,\n TreeItemModel,\n TreeDataRunTimeModel,\n TreeItemRunTimeModel,\n TreeItemSelectionRecursiveModel,\n EdsTreeSelectionChanges,\n EdsTreePagination,\n CustomNodeSelectFn,\n CustomNodeSelectFnHelper,\n} from './eds-tree.model';\nimport { FormsModule } from '@angular/forms';\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\nimport { EDS_LABEL } from '@eui/eds/eds-label';\nimport { EDS_BADGE } from '@eui/eds/eds-badge';\nimport { EDS_CHIP } from '@eui/eds/eds-chip';\nimport { EDS_DROPDOWN } from '@eui/eds/eds-dropdown';\nimport { NestedTreeControl, CdkTreeModule, CdkTree } from '@angular/cdk/tree';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { ScrollingModule, ScrollDispatcher, CdkScrollable } from '@angular/cdk/scrolling';\nimport { debounceTime, Subject, Subscription } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * Hierarchical tree component for displaying and interacting with nested data structures.\n * Supports single and multi-select modes, recursive selection, virtual scrolling for large datasets,\n * and custom node templates.\n *\n * Built on Angular CDK Tree for efficient rendering and state management.\n */\n@Component({\n selector: 'eds-tree',\n templateUrl: './eds-tree.html',\n styleUrl: './eds-tree.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n FormsModule,\n ScrollingModule,\n CdkTreeModule,\n RouterModule,\n ...EDS_INPUT_CHECKBOX,\n ...EDS_BUTTON,\n ...EDS_ICON,\n ...EDS_ICON_BUTTON,\n ...EDS_LABEL,\n ...EDS_BADGE,\n ...EDS_CHIP,\n ...EDS_DROPDOWN,\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsTree implements OnInit, OnChanges, OnDestroy {\n /** E2E test attribute. */\n e2eAttr = input('eds-tree');\n\n /** Hierarchy of data to display in the tree. */\n nodes = input<TreeDataModel>(undefined);\n\n /** Reference to the ng-template used to render node item. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly nodeTemplateRef = input<TemplateRef<any>>(undefined);\n\n /** Reference to the ng-template used to render node content metadata. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly nodeContentMetadataTemplateRef = input<TemplateRef<any>>(undefined);\n\n /** Reference to the ng-template used to render right context menu. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly rightContextMenuTemplateRef = input<TemplateRef<any>>(undefined);\n\n /** Custom function for handling node selection logic. */\n readonly customNodeSelectFn = input<CustomNodeSelectFn>(undefined);\n\n /** Icon to display when a node is collapsed. */\n readonly expandedSvgIconClass = input('caret-right');\n\n /** Icon to display when a node is expanded. */\n readonly collapsedSvgIconClass = input('caret-down');\n\n /** Whether the full node display can be clicked to toggle the node. */\n readonly isClickTogglingNode = input(false, { transform: booleanAttribute });\n\n /** Whether multiple nodes can be selected. */\n readonly isMultiselect = input(false, { transform: booleanAttribute });\n\n /** Whether only one node can be selected. Select one will unselect the previous selected. */\n readonly isSingleSelect = input(false, { transform: booleanAttribute });\n\n /** In combination with isMultiselect. Whether the selection of a node will automatically select its children. */\n readonly isRecursiveSelection = input(false, { transform: booleanAttribute });\n\n /** In combination with isMultiselect. Whether the selection of all children will automatically select the parent. */\n readonly isRecursiveParentSelection = input(true, { transform: booleanAttribute });\n\n /** Whether the links are underlined on hover in the tree. */\n readonly showUnderlinedLinks = input(false, { transform: booleanAttribute });\n\n /** Whether the lines are displayed on the left of nodes. */\n readonly showLines = input(true, { transform: booleanAttribute });\n\n /** Whether all parents till the selected are highlighted in bold. */\n readonly highlightPath = input(false, { transform: booleanAttribute });\n\n /** Threshold for the virtual scroll to be activated. */\n readonly virtualScrollThreshold = input(800, { transform: numberAttribute });\n\n /** Size of the virtual scroll pages. */\n readonly virtualScrollPageSize = input(400, { transform: numberAttribute });\n\n /** Emits when selection changes. */\n readonly selectionChange = output<EdsTreeSelectionChanges>();\n\n /** Emits when a node is clicked. */\n readonly nodeClick = output<TreeItemModel>();\n\n /** Emits when a node is toggled (expanded/collapsed). */\n readonly nodeToggle = output<TreeItemModel>();\n\n readonly cdkScrollableRef = viewChild('cdkScrollableRef', { read: CdkScrollable });\n public readonly treeComponentInstance = viewChild<CdkTree<TreeItemRunTimeModel>>('treeComponentInstance');\n\n cdkArrayDataSource: ArrayDataSource<TreeItemRunTimeModel>;\n cdkTreeControl: NestedTreeControl<TreeItemRunTimeModel>;\n renderTree: boolean;\n public uid: string = Math.floor(Math.random() * 1000000000).toString();\n\n /** @internal Emits after initTree() recalculates selection from new nodes input. */\n readonly _nodesReset$ = new Subject<TreeDataModel>();\n\n protected _isMultiLevel: boolean;\n\n hostClasses = computed(() => {\n return [\n 'eds-tree',\n this.isMultiselect() ? 'eds-tree--multiselect' : '',\n this._isMultiLevel ? 'eds-tree--with-children' : '',\n this.showLines() ? 'eds-tree--show-lines' : '',\n ]\n .join(' ')\n .trim();\n });\n\n private processedNodes: TreeDataModel;\n private treeDataRunTime: TreeDataRunTimeModel;\n private treeDataRunTimeBackup: TreeDataRunTimeModel;\n private runTimeSelectionRecursiveState: TreeItemSelectionRecursiveModel[];\n private selectionModel: SelectionModel<TreeItemRunTimeModel>;\n private tempSelectionModel: SelectionModel<TreeItemRunTimeModel>;\n private selectionModelSubs: Subscription;\n private scrollDispatcherSubs: Subscription;\n private _selection: TreeDataModel;\n private treePagination: EdsTreePagination<TreeItemRunTimeModel>;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private scrollDispatcher = inject(ScrollDispatcher);\n\n get getTreeDataRunTime(): TreeDataRunTimeModel {\n return this.treeDataRunTime;\n }\n\n ngOnInit(): void {\n this.initTree();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['nodes']?.currentValue !== changes['nodes']?.previousValue) {\n this.renderTree = false;\n this.initTree();\n const treeComponentInstance = this.treeComponentInstance();\n if (treeComponentInstance) {\n treeComponentInstance?.renderNodeChanges([]);\n treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);\n }\n if (!changes['nodes'].firstChange) {\n this._nodesReset$.next(this._selection);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n if (this.scrollDispatcherSubs) {\n this.scrollDispatcherSubs.unsubscribe();\n }\n this._nodesReset$.complete();\n }\n\n getSelection(): TreeDataModel {\n return this._selection;\n }\n\n getProcessedNodes(): TreeDataModel {\n return this.processedNodes;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackBy(index: number, item: TreeItemRunTimeModel): any {\n return item.path;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackByControl(item: TreeItemRunTimeModel): any {\n return item;\n }\n\n getTreeItem(path: string): TreeItemModel {\n const indexArr: number[] = this.resolvePath(path);\n let nodeArr = this.processedNodes;\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 expandAt(path: string, detectChanges = true): void {\n this.getParentPaths(path).reverse().forEach((parentPath) => {\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(parentPath));\n });\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(path));\n\n if (detectChanges) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n collapseAll(): void {\n this.cdkTreeControl.collapseAll();\n this.changeDetectorRef.markForCheck();\n }\n\n collapseAt(path: string, detectChanges = true): void {\n this.cdkTreeControl.collapse(this.getRunTimeTreeItem(path));\n\n if (detectChanges) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n filterTerm(filterInput: string, filterKey?: string, showChildrenOfMatchedItems?: boolean): void {\n if (filterInput !== '' && filterInput !== null && typeof filterInput !== 'undefined') {\n this.treeDataRunTime = this.filterTreeData(structuredClone(this.treeDataRunTimeBackup), filterKey || 'label', filterInput, showChildrenOfMatchedItems);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n\n this.treePagination = new EdsTreePagination<TreeItemRunTimeModel>(this.treeDataRunTime, 1, 2, this.virtualScrollPageSize());\n const paginatedData = this.treePagination.getViewData().data;\n\n this.cdkArrayDataSource = new ArrayDataSource(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n\n this.cdkTreeControl.dataNodes = paginatedData;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n } else {\n this.treeDataRunTime = structuredClone(this.treeDataRunTimeBackup);\n\n this.treePagination = new EdsTreePagination<TreeItemRunTimeModel>(this.treeDataRunTime, 1, 2, this.virtualScrollPageSize());\n const paginatedData = this.treePagination.getViewData().data;\n\n this.cdkArrayDataSource = new ArrayDataSource(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n this.cdkTreeControl.dataNodes = paginatedData;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n }\n }\n\n setAllSelection(isChecked: boolean): void {\n if (!this.selectionModel) {\n return;\n }\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setIsCheckedForAll(this.treeDataRunTime, isChecked);\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n this.changeDetectorRef.markForCheck();\n }\n\n updateTreeItem(givenTreeItem: TreeItemModel, path: string): void {\n const treeItem = structuredClone(givenTreeItem);\n if (treeItem && path) {\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setTreeData(path, this.processInputs([treeItem])[0]);\n const pathArr = path.split('.');\n const index = parseInt(pathArr.pop(), 10);\n const treeItemRuntime = this.calculateRunTimeState(treeItem, index, pathArr.join('.'));\n if (treeItemRuntime?.children?.length > 0) {\n treeItemRuntime.children = this.applyRunTimeLastItems(treeItemRuntime.children);\n }\n this.setTreeDataRunTimeBackup(path, treeItemRuntime);\n this.setTreeDataRunTime(path, treeItemRuntime);\n const itemRecursiveSelectionState = this.calculateItemSelectionRecursiveState(treeItem);\n this.setRunTimeSelectionRecursiveStateTree(path, itemRecursiveSelectionState);\n this.syncStateChangesAtPath(path);\n if (this.cdkTreeControl.isExpanded(treeItemRuntime) && !treeItem.node.isExpanded) {\n this.cdkTreeControl.toggle(treeItemRuntime);\n } else if (!this.cdkTreeControl.isExpanded(treeItemRuntime) && treeItem.node.isExpanded) {\n this.cdkTreeControl.expand(treeItemRuntime);\n }\n this.renderInitialExpand(this.getRunTimeTreeItem(path)?.children);\n this.getInitialSelection(this.getRunTimeTreeItem(path)?.children)?.forEach((runTimeItem) => {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeItem.path));\n });\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n this.changeDetectorRef.detectChanges();\n this.treeComponentInstance().renderNodeChanges([]);\n this.treeComponentInstance().renderNodeChanges(this.treeDataRunTime);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onNodeClick(treeRunTimeItem: TreeItemRunTimeModel, e: any): void {\n if (!this.isMultiselect() || e.pointerId !== -1) {\n this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n if (this.isClickTogglingNode()) {\n this.cdkTreeControl.toggle(treeRunTimeItem);\n this.onNodeToggle(treeRunTimeItem);\n }\n }\n\n onNodeToggle(treeRunTimeItem: TreeItemRunTimeModel): void {\n this.getTreeItem(treeRunTimeItem?.path).node.isExpanded = this.cdkTreeControl.isExpanded(treeRunTimeItem);\n this.nodeToggle.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n onToggleButtonClick(treeRunTimeItem: TreeItemRunTimeModel, event: Event): void {\n event.stopPropagation();\n this.cdkTreeControl.toggle(treeRunTimeItem);\n this.onNodeToggle(treeRunTimeItem);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeSelected(evt: any, path: string): void {\n const item = this.getTreeItem(path);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const renderedRunTimeTreeItem = this.getRunTimeTreeItem(path);\n const node = item?.node;\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n const customNodeSelectFn = this.customNodeSelectFn();\n if (customNodeSelectFn) {\n customNodeSelectFn(path, evt.target.checked, item, new CustomNodeSelectFnHelper(this));\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else if (!node?.selectConfig?.singleSelect) {\n node.isSelected = evt.target.checked;\n node.isIndeterminate = false;\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length > 0) {\n if (node?.selectConfig?.recursive) {\n this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);\n }\n }\n\n this.setRunTimeSelectionRecursiveStateTree(\n path,\n this.calculateItemSelectionRecursiveState(structuredClone(this.getTreeItem(path))),\n );\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length >= 0) {\n if (node?.selectConfig?.recursive) {\n this.runStateChangesForAll(renderedRunTimeTreeItem?.children);\n }\n const activeElement = evt.target as HTMLElement;\n const expandedNodes = this.cdkTreeControl.expansionModel.selected;\n this.treeComponentInstance()?.renderNodeChanges([]);\n this.treeComponentInstance()?.renderNodeChanges(this.treeDataRunTime);\n expandedNodes.forEach((expandedNode) => {\n const runtimeNode = this.getRunTimeTreeItem(expandedNode.path);\n if (runtimeNode) {\n this.cdkTreeControl.expand(runtimeNode);\n }\n });\n setTimeout(() => {\n const newEl = document.getElementById(activeElement.id) as HTMLElement;\n newEl?.focus();\n });\n }\n this.syncStateChangesAtPath(path);\n if (this.getTreeItem(path).node.isSelected) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n const treeItem = this.getTreeItem(nodePath);\n const childStates = this.getRunTimeSelectionRecursiveState(nodePath).children.map((_) => _.selectionRecursiveState);\n this.updateRunTimeSelectionRecursiveState(\n nodePath,\n this.decideSelectionRecursiveState(\n childStates,\n treeItem.node?.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ),\n );\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n } else {\n this.changeDetectorRef.detectChanges();\n }\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else {\n const prevItem = this.selectionModel.selected[0];\n if (evt.target.checked) {\n if (prevItem) {\n this.getTreeItem(prevItem.path).node.isSelected = false;\n this.selectionModel.deselect(prevItem);\n }\n item.node.isSelected = true;\n this.selectionModel.select(runTimeBackupTreeItem);\n } else {\n item.node.isSelected = false;\n this.selectionModel.deselect(runTimeBackupTreeItem);\n }\n if (this.highlightPath()) {\n if (evt.target.checked && prevItem) {\n const prevItemNodePathsSeq = this.getParentPaths(prevItem.path);\n if (prevItemNodePathsSeq.length > 0) {\n prevItemNodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n }\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq?.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, evt.target.checked ? 'indeterminate' : 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n }\n\n hasChild = (_: number, item: TreeItemRunTimeModel): boolean => !!item?.children && item?.children?.length >= 0;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSelectFn(path: string): (evt: any) => void {\n if (this.getTreeItem(path)?.node?.selectable) {\n const nodeSelected = this.nodeSelected.bind(this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (evt: any) => nodeSelected(evt, path);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (_evt: any) => {\n console.warn('treeItemModel.node.selectable is false, you cannot implement onSelect');\n };\n }\n\n getRunTimeSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel {\n const indexArr: 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 initTree(): void {\n const nodesValue = this.nodes();\n if (nodesValue) {\n this._isMultiLevel = this.checkIfMultiLevel(nodesValue);\n this.processedNodes = this.processInputs(structuredClone(nodesValue));\n this.treeDataRunTime = this.createTreeDataRuntime(this.processedNodes);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.runTimeSelectionRecursiveState = this.createRunTimeSelectionRecursiveState(this.processedNodes);\n this.treeDataRunTimeBackup = structuredClone(this.treeDataRunTime);\n\n if (this.treeDataRunTimeBackup.length > this.virtualScrollThreshold()) {\n this.treePagination = new EdsTreePagination<TreeItemRunTimeModel>(this.treeDataRunTimeBackup, 1, 2, this.virtualScrollPageSize());\n const paginatedData = this.treePagination.getViewData().data;\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = paginatedData;\n this.runScrollListener();\n } else {\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n }\n this.renderInitialExpand(this.treeDataRunTime);\n this.selectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.getInitialSelection(this.treeDataRunTime),\n true,\n (a, b) => a?.path === b?.path,\n );\n this._selection = [...this.selectionModel.selected]?.map((item) => this.getTreeItem(item?.path));\n this.renderTree = true;\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n this.selectionModelSubs = this.selectionModel.changed.pipe(debounceTime(1)).subscribe((sc) => {\n const selectionChangeValue = {\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 this._selection = selectionChangeValue.selection;\n this.selectionChange.emit(selectionChangeValue);\n });\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private processInputs(treeData: TreeDataModel): TreeDataModel {\n if (this.isMultiselect()) {\n treeData = this.overrideTreeDataModelForSelection(treeData, this.isRecursiveSelection(), !this.isRecursiveParentSelection());\n }\n if (this.isSingleSelect()) {\n treeData = this.overrideTreeDataModelForSelection(treeData, false, false, true);\n }\n return treeData;\n }\n\n private overrideTreeDataModelForSelection(\n nodeArr: TreeDataModel,\n isRecursive: boolean,\n noAutoSelectParent: boolean,\n singleSelect?: boolean,\n ): TreeDataModel {\n return nodeArr?.map((item: TreeItemModel) => {\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 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 singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n children: this.overrideTreeDataModelForSelection(item.children, isRecursive, noAutoSelectParent, singleSelect),\n };\n } else {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n selectConfig: {\n ...item.node?.selectConfig,\n singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n };\n }\n });\n }\n\n private runScrollListener(): void {\n this.scrollDispatcherSubs = this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable) => {\n if (scrollable && this.checkIfCurrentScrollable(scrollable)) {\n const isAtBottom =\n scrollable?.getElementRef().nativeElement.scrollTop + scrollable?.getElementRef().nativeElement.clientHeight >=\n scrollable?.getElementRef().nativeElement.scrollHeight;\n const isAtTop = scrollable?.getElementRef().nativeElement.scrollTop === 0;\n const nodesValue = this.nodes();\n if (isAtBottom && !this.treePagination.isAtMax()) {\n if (nodesValue.length > 0) {\n this.treeDataRunTime = this.treePagination.paginateNext().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 });\n }\n } else if (isAtTop && this.treePagination.getCurrentStartPage() > 1) {\n if (nodesValue.length > 0) {\n this.treeDataRunTime = this.treePagination.paginatePrev().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 + viewportHeight });\n }\n }\n }\n });\n }\n\n // todo re-think about the access from custom on node select helper\n private silentSelect(path: string, isChecked: boolean): void {\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const treeItem = this.getTreeItem(path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.tempSelectionModel.select(runtimeBackupTreeItem);\n } else {\n this.tempSelectionModel.deselect(runtimeBackupTreeItem);\n }\n }\n }\n\n private selectTreeItem(runTimeBackupTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.select(runTimeBackupTreeItem);\n }\n\n private deselectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.deselect(runTimeTreeItem);\n }\n\n private createTreeDataRuntime(nodes: TreeDataModel): TreeDataRunTimeModel {\n return structuredClone(nodes)?.map((item, index) => {\n return this.calculateRunTimeState(item, index);\n });\n }\n\n private applyRunTimeLastItems(items: TreeDataRunTimeModel): TreeDataRunTimeModel {\n return items?.map((item, index) => {\n if (item?.children) {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n children: item.children?.length > 0 ? this.applyRunTimeLastItems(item.children) : item?.children,\n };\n } else {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n };\n }\n });\n }\n\n private createRunTimeSelectionRecursiveState(nodes: TreeDataModel): TreeItemSelectionRecursiveModel[] {\n return structuredClone(nodes)?.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));\n }\n\n private calculateItemSelectionRecursiveState(treeItem: TreeItemModel): TreeItemSelectionRecursiveModel {\n const childrenSelectionRecursive: TreeItemSelectionRecursiveModel[] = [];\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, index) => {\n childrenSelectionRecursive[index] = this.calculateItemSelectionRecursiveState(child);\n });\n }\n const childStates = childrenSelectionRecursive.map((_) => _.selectionRecursiveState);\n const itemState: SelectionRecursiveState = treeItem.node.selectable ? this.decideSelectionRecursiveState(\n childStates,\n treeItem.node.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ) : undefined;\n return {\n selectionRecursiveState: itemState,\n children: childrenSelectionRecursive,\n };\n }\n\n private decideSelectionRecursiveState(\n childStates: SelectionRecursiveState[] = [],\n isSelected: boolean,\n recursive: boolean,\n noAutoSelectParent: boolean,\n ): SelectionRecursiveState {\n let itemState: SelectionRecursiveState = 'indeterminate';\n if (isSelected && childStates.filter((s) => s).every((state) => state === 'allSelected')) {\n itemState = 'allSelected';\n } else if (!isSelected && childStates.filter((s) => s).every((state) => state === 'allNotSelected')) {\n itemState = 'allNotSelected';\n } else if (recursive && childStates.filter((s) => s).every((state) => state === 'allSelected') && !isSelected && !noAutoSelectParent) {\n itemState = 'allSelected';\n } else if (recursive && childStates.filter((s) => s).every((state) => state === 'allNotSelected') && isSelected) {\n itemState = 'allNotSelected';\n }\n return itemState;\n }\n\n private syncStateChangesAtPath(nodePath: string): void {\n const treeItem = this.getTreeItem(nodePath);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(nodePath);\n const runTimeSelectionRecursiveItem = this.getRunTimeSelectionRecursiveState(nodePath);\n if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {\n if (!treeItem.node?.selectConfig?.noAutoSelectParent) {\n treeItem.node = {\n ...treeItem.node,\n isSelected: runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate: runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate',\n };\n } else {\n treeItem.node = {\n ...treeItem.node,\n isSelected: treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate:\n runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate' ||\n (!treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected'),\n };\n }\n if (treeItem.node.isSelected === true && !this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else if (treeItem.node.isSelected === false && this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n }\n }\n\n private setTreeData(path: string, item: TreeItemModel): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.processedNodes;\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTimeBackup(path: string, item: TreeItemRunTimeModel): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.treeDataRunTimeBackup;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTime(path: string, item: TreeItemRunTimeModel): void {\n const oldItem = this.getRunTimeTreeItem(path);\n if (oldItem) {\n Object.keys(item)?.forEach((key) => {\n oldItem[key] = item[key];\n });\n }\n }\n\n private setRunTimeSelectionRecursiveStateTree(path: string, item: TreeItemSelectionRecursiveModel): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private updateRunTimeSelectionRecursiveState(path: string, selectionRecursiveState: SelectionRecursiveState): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = {\n ...itemArr[pathIndex],\n selectionRecursiveState,\n };\n }\n });\n }\n\n private setIsCheckedForAll(nodeArr: TreeItemRunTimeModel[], isChecked: boolean): void {\n nodeArr.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(runTimeItem.path);\n const treeItem = this.getTreeItem(runTimeItem.path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.selectTreeItem(runtimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runtimeBackupTreeItem);\n }\n }\n if (runTimeItem?.children?.length > 0) {\n this.setIsCheckedForAll(nodeArr[index].children, isChecked);\n }\n });\n }\n\n private runStateChangesForAll(nodeArr: TreeItemRunTimeModel[]): void {\n nodeArr?.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n if (runTimeItem?.children?.length >= 0) {\n this.runStateChangesForAll(nodeArr[index].children);\n this.syncSelectionAtPath(runTimeItem);\n }\n });\n }\n\n private syncSelectionAtPath(runTimeTreeItem: TreeItemRunTimeModel): void {\n this.syncStateChangesAtPath(runTimeTreeItem.path);\n if (this.getTreeItem(runTimeTreeItem.path).node.isSelected) {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n } else {\n this.deselectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n }\n }\n\n private resolvePath(path: string): number[] {\n return path?.split('.').map((index: string) => parseInt(index, 10));\n }\n\n private getParentPaths(path: string): string[] {\n const pathArr = path.split('.');\n const hasParent = pathArr.length > 1;\n if (hasParent) {\n pathArr.pop();\n const parentPath = pathArr.join('.');\n const nodeIndexSeq = parentPath.split('.').map((indexStr) => parseInt(indexStr, 10));\n const nodePathsSeq = [];\n nodeIndexSeq.forEach((nodeIndex, index) => {\n nodePathsSeq[index] = nodeIndexSeq.slice(0, index + 1).join('.');\n });\n return nodePathsSeq.reverse();\n } else {\n return [];\n }\n }\n\n private calculateRunTimeState(treeItem: TreeItemModel, index: number, parentPath?: string): TreeItemRunTimeModel {\n const runTimeTreeItem: TreeItemRunTimeModel = {\n path: parentPath ? parentPath + '.' + index : index.toString(),\n index,\n };\n if (treeItem.children && treeItem.children.length >= 0) {\n runTimeTreeItem.children = [];\n treeItem.children.forEach((child, treeItemIndex) => {\n runTimeTreeItem.children[treeItemIndex] = this.calculateRunTimeState(child, treeItemIndex, runTimeTreeItem.path);\n });\n }\n return runTimeTreeItem;\n }\n\n private filterTreeData(runTimeTreeData: TreeDataRunTimeModel, key = 'label', filterStr: string, showChildren: boolean, show?: boolean): TreeDataRunTimeModel {\n return runTimeTreeData.filter((runTimeItem) => {\n const targetData = this.getTreeItem(runTimeItem.path).node.treeContentBlock[key];\n if (\n targetData && this.normalizedStr(targetData)?.includes(this.normalizedStr(filterStr))\n ) {\n if (runTimeItem?.children?.length > 0) {\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, showChildren);\n }\n Object.assign(runTimeItem, { matched: true });\n return true;\n } else if (runTimeItem?.children?.length > 0) {\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, show);\n runTimeItem.children = runTimeItem.children.length > 0 ? runTimeItem.children : undefined;\n return runTimeItem?.children?.length > 0 || show;\n } else {\n return show;\n }\n });\n }\n\n private normalizedStr(str: string): string {\n return str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n }\n\n private getInitialSelection(nodes: TreeDataRunTimeModel): TreeItemRunTimeModel[] {\n const selection: TreeItemRunTimeModel[] = [];\n this.scanSelection(nodes, selection);\n return selection;\n }\n\n private scanSelection(nodes: TreeDataRunTimeModel, selection: TreeItemRunTimeModel[]): void {\n nodes?.forEach((item: TreeItemRunTimeModel) => {\n if (this.getTreeItem(item.path).node?.selectable && this.getTreeItem(item.path).node.isSelected) {\n selection.push(item);\n }\n if (item?.children?.length > 0) {\n this.scanSelection(item.children, selection);\n }\n });\n }\n\n private renderInitialExpand(nodes: TreeDataRunTimeModel): void {\n const expandRecursive = (items: TreeDataRunTimeModel): void => {\n items?.forEach((item: TreeItemRunTimeModel) => {\n if (item?.children?.length > 0) {\n expandRecursive(item.children);\n }\n\n const treeItemNode = this.getTreeItem(item.path).node;\n if (typeof treeItemNode.isExpanded !== 'undefined') {\n if (treeItemNode.isExpanded && !this.cdkTreeControl.isExpanded(item)) {\n this.expandAt(item.path, false);\n } else if (!treeItemNode.isExpanded && this.cdkTreeControl.isExpanded(item)) {\n this.cdkTreeControl.collapse(item);\n }\n }\n });\n };\n\n expandRecursive(nodes);\n this.changeDetectorRef.detectChanges();\n }\n\n private getRunTimeTreeItem(path: string): TreeItemRunTimeModel {\n return this.findRunTimeTreeItem(this.treeDataRunTime, path);\n }\n\n private findRunTimeTreeItem(treeDataRunTime: TreeDataRunTimeModel, path: string): TreeItemRunTimeModel {\n for (const runTimeItem of treeDataRunTime) {\n if (runTimeItem.path === path) {\n return runTimeItem;\n } else if (runTimeItem?.children?.length > 0) {\n const found = this.findRunTimeTreeItem(runTimeItem.children, path);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private getRunTimeBackupTreeItem(path: string): TreeItemRunTimeModel {\n const indexArr: number[] = this.resolvePath(path);\n let nodeArr = this.treeDataRunTimeBackup;\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 private checkIfMultiLevel(tree: TreeDataModel): boolean {\n let isMultiLevel = false;\n tree.forEach((item: TreeItemModel) => {\n if (item?.children?.length >= 0) {\n isMultiLevel = true;\n }\n });\n return isMultiLevel;\n }\n\n private checkIfCurrentScrollable(scrolled: CdkScrollable): boolean {\n return scrolled.getElementRef().nativeElement === this.cdkScrollableRef()?.getElementRef().nativeElement;\n }\n}\n","<div class=\"eds-tree__wrapper eds-ul-rep\" cdkScrollable #cdkScrollableRef>\n @if (renderTree) {\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n class=\"eds-cdk-tree\">\n <!-- Leaf node (no children) -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eds-cdk-nested-tree-node\">\n @if (treeRunTimeItemModel) {\n <div\n class=\"eds-li-rep eds-tree-node\"\n [class.eds-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eds-tree-node--last]=\"treeRunTimeItemModel.last\"\n [title]=\"getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel\n || getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label || ''\">\n <div class=\"eds-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel, $event)\">\n <div class=\"eds-tree-node-wrapper__container\">\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef() || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n }\n </cdk-nested-tree-node>\n <!-- Expandable node (has children) -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eds-cdk-nested-tree-node eds-cdk-nested-tree-node--with-child\">\n @if (treeRunTimeItemModel) {\n <div\n class=\"eds-li-rep eds-tree-node eds-tree-node--with-child\"\n [class.eds-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eds-tree-node--last]=\"treeRunTimeItemModel.last\"\n [title]=\"getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel\n || getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label || ''\">\n <div class=\"eds-tree-node-wrapper\">\n <div (click)=\"onNodeClick(treeRunTimeItemModel, $event)\" class=\"eds-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n edsIconButton\n size=\"s\"\n rounded\n [icon]=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) ? collapsedSvgIconClass() : expandedSvgIconClass()\"\n [ariaLabel]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onToggleButtonClick(treeRunTimeItemModel, $event)\"\n class=\"eds-tree-node__button\">\n </button>\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef() || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n @if (cdkTreeControl.isExpanded(treeRunTimeItemModel)) {\n <div class=\"eds-ul-rep eds-tree-node\" role=\"group\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n }\n </div>\n }\n </cdk-nested-tree-node>\n </cdk-tree>\n }\n</div>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n @if (node) {\n <div class=\"eds-tree-node-wrapper__container-left\" [class.eds-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n @if (node && node.selectable) {\n <input\n edsInputCheckbox\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\" />\n }\n\n @if (node?.treeContentBlock?.iconSvgName) {\n <eds-icon\n [icon]=\"node?.treeContentBlock?.iconSvgName\"\n size=\"s\"\n class=\"eds-u-mr-xs\">\n </eds-icon>\n }\n\n @if (node?.treeContentBlock?.chips) {\n @for (chip of node.treeContentBlock.chips; track chip) {\n <eds-chip\n size=\"m\"\n [color]=\"$any(chip.typeClass || 'neutral')\"\n class=\"eds-u-mr-xs\">\n {{ chip.label }}\n </eds-chip>\n }\n }\n\n @if (node?.treeContentBlock?.typeLabel) {\n <eds-badge size=\"m\" [color]=\"node?.treeContentBlock?.typeClass || 'neutral'\" class=\"eds-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eds-badge>\n }\n </div>\n\n <div class=\"eds-tree-node-wrapper__container-middle\">\n @if (!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal) {\n <label\n edsLabel\n for=\"{{ id }}\"\n class=\"eds-u-text-truncate\"\n [class.eds-label--selected]=\"\n highlightPath()\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eds-u-cursor-pointer]=\"node?.selectable\">\n {{ node?.treeContentBlock?.label }}\n </label>\n }\n @if (node?.treeContentBlock?.url) {\n <label edsLabel for=\"{{ id }}\" class=\"eds-u-text-truncate\">\n <a\n class=\"eds-u-text-link\"\n [class.eds-u-text-link-standalone]=\"!showUnderlinedLinks()\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ node?.treeContentBlock?.label }}\n </a>\n </label>\n }\n @if (node?.treeContentBlock?.urlExternal) {\n <label edsLabel for=\"{{ id }}\" class=\"eds-u-text-truncate\">\n <a\n class=\"eds-u-text-link-external\"\n [class.eds-u-text-link-external-standalone]=\"!showUnderlinedLinks()\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ node?.treeContentBlock?.label }}\n </a>\n </label>\n }\n </div>\n\n @if (node?.treeContentBlock?.rightContent) {\n <div class=\"eds-tree-node-wrapper__container-right\">\n @for (badge of node.treeContentBlock.rightContent?.badges; track badge) {\n <eds-badge variant=\"outline\" [color]=\"badge.typeClass || 'neutral'\" class=\"eds-u-ml-xs\">\n {{ badge.label }}\n </eds-badge>\n }\n\n @for (chip of node.treeContentBlock.rightContent?.chips; track chip) {\n <eds-chip\n size=\"m\"\n [color]=\"$any(chip.typeClass || 'neutral')\"\n class=\"eds-u-ml-xs\">\n {{ chip.label }}\n </eds-chip>\n }\n\n @if (node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef()) {\n <eds-dropdown class=\"eds-u-ml-xs\">\n <button edsIconButton size=\"s\" rounded icon=\"dots-three-vertical\" ariaLabel=\"Options menu\"></button>\n <eds-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 </eds-dropdown-content>\n </eds-dropdown>\n }\n </div>\n }\n\n @if (node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\" />\n }\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n edsIconButton\n size=\"s\"\n rounded\n [icon]=\"metaDataContainer.expanded ? 'caret-down' : 'caret-right'\"\n ariaLabel=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n </button>\n @if (metaDataContainer.expanded) {\n <div class=\"eds-tree-node__metacontent\">\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 }\n </ng-template>\n }\n</ng-template>\n","import {\n Directive,\n AfterContentInit,\n TemplateRef,\n AfterViewInit,\n OnDestroy,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n inject,\n input,\n contentChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { EdsTree } from './eds-tree';\nimport { TreeDataModel } from './eds-tree.model';\nimport { EdsDropdown } from '@eui/eds/eds-dropdown';\n\n/**\n * Directive that integrates eds-tree with eds-dropdown for tree-based selection in dropdown menus.\n * Automatically updates dropdown trigger button label based on tree selection state.\n */\n@Directive({\n selector: 'eds-dropdown[edsDropdownTree]',\n})\nexport class EdsDropdownTreeDirective implements AfterContentInit, AfterViewInit, OnDestroy {\n /** Template reference for custom dropdown trigger button rendering. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly buttonTemplateRef = input<TemplateRef<any>>(undefined);\n readonly edsTree = contentChild(EdsTree);\n\n private buttonLabel: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private buttonViewRef: any;\n private nodesResetSub: Subscription;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private hostElement = inject(ElementRef);\n private renderer = inject(Renderer2);\n private edsDropdown = inject(EdsDropdown, { host: true });\n\n ngAfterContentInit(): void {\n this.buttonLabel = this.createButtonLabel(this.edsTree().getSelection());\n this.edsTree().selectionChange.subscribe((selectionChanges) => {\n this.buttonLabel = this.createButtonLabel(selectionChanges.selection);\n this.updateButtonView();\n });\n this.nodesResetSub = this.edsTree()._nodesReset$.subscribe((selection) => {\n this.buttonLabel = this.createButtonLabel(selection);\n this.updateButtonView();\n });\n }\n\n ngOnDestroy(): void {\n this.nodesResetSub?.unsubscribe();\n }\n\n ngAfterViewInit(): void {\n const buttonTemplateRef = this.buttonTemplateRef();\n if (buttonTemplateRef) {\n const triggerContainer = this.hostElement.nativeElement.querySelector('.eds-dropdown__trigger-container');\n if (!triggerContainer) {\n console.error('Could not find the triggerContainer');\n return;\n }\n while (triggerContainer.firstChild) {\n triggerContainer.removeChild(triggerContainer.firstChild);\n }\n this.buttonViewRef = buttonTemplateRef.createEmbeddedView({ $implicit: this.buttonLabel });\n this.buttonViewRef.detectChanges();\n\n this.buttonViewRef.rootNodes.forEach((node: Node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.renderer.appendChild(triggerContainer, node);\n }\n });\n }\n }\n\n private updateButtonView(): void {\n if (this.buttonViewRef) {\n this.buttonViewRef.context.$implicit = this.buttonLabel;\n this.buttonViewRef.detectChanges();\n }\n }\n\n private createButtonLabel(selection: TreeDataModel): string {\n if (selection?.length > 0) {\n return this.edsTree()\n .getSelection()\n ?.map((item) => item.node.treeContentBlock.label)\n .join(',') as string;\n }\n return 'No node selected.';\n }\n}\n","import { TreeDataModel, TreeItemModel } from './eds-tree.model';\n\n/**\n * Utility class for navigating and querying hierarchical tree data structures.\n * Provides methods to locate nodes by value, retrieve paths, and extract items from tree data.\n */\nexport class EdsTreeHelper {\n private readonly treeData: TreeDataModel;\n\n constructor(treeData: TreeDataModel) {\n this.treeData = treeData;\n }\n\n /**\n * Retrieves the path string for a single node matching the provided value.\n * Path format uses dot notation with indices (e.g., '0.2.1').\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPath(value: any, identifierKey = 'node.treeContentBlock.id'): string {\n if (typeof value !== 'undefined') {\n const paths: string[] = [];\n this.traverse(this.treeData, '', [value], paths, undefined, identifierKey);\n return paths[0];\n }\n return null;\n }\n\n /**\n * Retrieves path strings for multiple nodes matching the provided values.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPaths(values: any[], identifierKey?: string): string[] {\n const paths: string[] = [];\n this.traverse(this.treeData, '', values, paths, undefined, identifierKey);\n return paths;\n }\n\n /**\n * Retrieves the actual TreeItemModel objects for nodes matching the provided values.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getItems(values: any[], identifierKey?: string): TreeItemModel[] {\n const matchedItems: TreeItemModel[] = [];\n this.traverse(this.treeData, '', values, undefined, matchedItems, identifierKey);\n return matchedItems;\n }\n\n private traverse(\n tree: TreeDataModel,\n currentPath: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values: any[],\n paths?: string[],\n items?: TreeItemModel[],\n identifierKey?: string,\n ): void {\n for (const [i, item] of tree.entries()) {\n const valueToCheck = identifierKey ? this.getValueAtKey(item, identifierKey) : item;\n\n if (values.some((v) => this.deepEqual(v, valueToCheck))) {\n if (paths) paths.push(`${currentPath}${i}`);\n if (items) items.push(item);\n }\n\n if (item.children && item.children.length) {\n this.traverse(item.children, `${currentPath}${i}.`, values, paths, items, identifierKey);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getValueAtKey(object: any, key: string): any {\n const keys = key.split('.');\n let current = object;\n for (const k of keys) {\n if (current[k] !== undefined) {\n current = current[k];\n } else {\n return undefined;\n }\n }\n return current;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private deepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || !this.deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n }\n}\n","import { Directive, forwardRef, AfterContentInit, inject, input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { EdsTree } from './eds-tree';\nimport { EdsTreeSelectionChanges, TreeDataModel, TreeItemModel } from './eds-tree.model';\nimport { EdsTreeHelper } from './eds-tree-helper';\n\n/**\n * Form control directive that integrates eds-tree with Angular reactive and template-driven forms.\n * Implements ControlValueAccessor to enable two-way binding and form validation for tree selections.\n */\n@Directive({\n selector: 'eds-tree[edsTreeFormControl]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EdsTreeFormControlDirective),\n multi: true,\n },\n ],\n})\nexport class EdsTreeFormControlDirective implements ControlValueAccessor, AfterContentInit {\n /** Custom function to transform tree selection into form control value. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly edsTreeControlValueSetter = input<(selection: TreeDataModel) => any>((selection: TreeDataModel) => {\n return new EdsTreeHelper(this.tree.nodes()).getItems(selection.map((item) => item.node.treeContentBlock.id), 'node.treeContentBlock.id');\n });\n\n /** Custom function to transform form control value into tree selection items. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly edsTreeControlModelMapper = input<(model: any, tree?: TreeDataModel) => TreeItemModel[]>((model: TreeItemModel[]) => {\n return model;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (value: any) => void;\n private onTouched: () => void;\n private tree = inject(EdsTree, { host: true });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.tree.setAllSelection(false);\n if (typeof value !== 'undefined' && value !== null && value?.length > 0) {\n const initialItems = this.edsTreeControlModelMapper()(value, this.tree.nodes());\n const paths = new EdsTreeHelper(this.tree.nodes()).getPaths(initialItems);\n paths.forEach((path: string) => {\n this.tree.nodeSelected({ target: { checked: true } }, path);\n });\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n ngAfterContentInit(): void {\n this.tree.selectionChange.subscribe((selectionChanges: EdsTreeSelectionChanges) => {\n this.onChange(this.edsTreeControlValueSetter()(selectionChanges.selection));\n });\n }\n}\n","import { EdsTree } from './eds-tree';\nimport { EdsDropdownTreeDirective } from './eds-dropdown-tree.directive';\nimport { EdsTreeFormControlDirective } from './eds-tree-form-control.directive';\n\nexport { EdsTree, EdsDropdownTreeDirective, EdsTreeFormControlDirective };\n\nexport * from './eds-tree.model';\nexport * from './eds-tree-helper';\n\n/** Convenience array for importing all eds-tree components. */\nexport const EDS_TREE = [\n EdsTree,\n EdsDropdownTreeDirective,\n EdsTreeFormControlDirective,\n] as const;\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-eds-eds-tree.mjs","sources":["../../eds-tree/eds-tree.model.ts","../../eds-tree/eds-tree.ts","../../eds-tree/eds-tree.html","../../eds-tree/eds-dropdown-tree.directive.ts","../../eds-tree/eds-tree-helper.ts","../../eds-tree/eds-tree-form-control.directive.ts","../../eds-tree/index.ts","../../eds-tree/eui-eds-eds-tree.ts"],"sourcesContent":["export type TreeDataModel = TreeItemModel[];\n\nexport type TreeItemModel = {\n node: TreeNode;\n children?: TreeDataModel;\n};\n\nexport type TreeNode = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n treeContentBlock: EdsTreeContentBlockModel | any;\n} & SelectionModel &\n ExpandModel;\n\nexport interface EdsTreeContentBlockModel {\n id?: string | number;\n label: string;\n tooltipLabel?: string;\n url?: string;\n urlExternal?: string;\n urlExternalTarget?: string;\n typeLabel?: string;\n typeClass?: string;\n chips?: { 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?: { label: string; typeClass: string }[];\n chips?: { label: string; typeClass?: string; isOutline?: boolean }[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contextMenuMetaData?: any;\n };\n metadata?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport type SelectionModel = {\n selectable?: boolean;\n isSelected?: boolean;\n isIndeterminate?: boolean;\n selectConfig?: SelectConfigModel;\n};\n\nexport interface SelectConfigModel extends MultiSelectionLogic, SingleSelectionLogic {\n recursive?: boolean;\n noAutoSelectParent?: boolean;\n singleSelect?: boolean;\n}\n\nexport interface MultiSelectionLogic {\n recursive?: boolean;\n noAutoSelectParent?: boolean;\n}\n\nexport interface SingleSelectionLogic {\n singleSelect?: boolean;\n}\n\nexport type ExpandModel = {\n isExpanded?: boolean;\n};\n\nexport type EdsTreeSelectionChanges = { added: TreeDataModel; removed: TreeDataModel; selection: TreeDataModel };\n\nexport type TreeDataRunTimeModel = TreeItemRunTimeModel[];\n\nexport type TreeItemRunTimeModel = { index: number; path: string; children?: TreeItemRunTimeModel[]; last?: boolean; matched?: boolean };\n\nexport type TreeItemSelectionRecursiveModel = {\n selectionRecursiveState: SelectionRecursiveState;\n children?: TreeItemSelectionRecursiveModel[];\n};\n\nexport type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';\n\nexport class EdsTreePagination<T> {\n private data: T[];\n private startPage: number;\n private totalItems: number;\n private renderedPageCount: number;\n private perPage: number;\n private totalPages: number;\n\n constructor(data: T[], startPage: number, renderedPageCount: number, perPage: number) {\n this.data = data;\n this.setCurrentStartPage(startPage);\n this.renderedPageCount = renderedPageCount;\n this.totalItems = this.data.length;\n this.perPage = perPage;\n this.totalPages = Math.ceil(this.totalItems / this.perPage);\n }\n\n public paginateNext(): { startPage: number; data: T[] } {\n if (this.startPage < this.totalPages) {\n this.startPage += 1;\n }\n return this.getViewData();\n }\n\n public paginatePrev(): { startPage: number; data: T[] } {\n if (this.startPage > 1) {\n this.startPage -= 1;\n }\n return this.getViewData();\n }\n\n public getCurrentStartPage(): number {\n return this.startPage;\n }\n\n public setCurrentStartPage(startPage: number): void {\n this.startPage = startPage;\n }\n\n public isAtMax(): boolean {\n return this.totalPages < this.startPage + this.renderedPageCount;\n }\n\n public getViewData(): { startPage: number; data: T[] } {\n const startIndex = (this.startPage - 1) * this.perPage;\n const endIndex = startIndex + this.perPage * this.renderedPageCount;\n const pageData = structuredClone(this.data).slice(startIndex, endIndex);\n return {\n startPage: this.startPage,\n data: pageData,\n };\n }\n}\n\nexport class CustomNodeSelectFnHelper {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(private compInstance: any) {}\n\n select(path: string, isChecked: boolean): void {\n this.compInstance.silentSelect(path, isChecked);\n }\n\n getParents(path: string): string[] {\n return this.compInstance.getParentPaths(path);\n }\n\n getTreeItem(path: string): TreeItemModel {\n return this.compInstance.getTreeItem(path);\n }\n\n getSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel {\n return this.compInstance.getRunTimeSelectionRecursiveState(path);\n }\n}\n\nexport type CustomNodeSelectFn = (path: string, isChecked: boolean, treeItem: TreeItemModel, helper: CustomNodeSelectFnHelper) => void;\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n OnInit,\n OnChanges,\n OnDestroy,\n booleanAttribute,\n inject,\n numberAttribute,\n input,\n output,\n computed,\n viewChild,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n SelectionRecursiveState,\n TreeDataModel,\n TreeItemModel,\n TreeDataRunTimeModel,\n TreeItemRunTimeModel,\n TreeItemSelectionRecursiveModel,\n EdsTreeSelectionChanges,\n EdsTreePagination,\n CustomNodeSelectFn,\n CustomNodeSelectFnHelper,\n} from './eds-tree.model';\nimport { FormsModule } from '@angular/forms';\nimport { EDS_INPUT_CHECKBOX } from '@eui/eds/eds-input-checkbox';\nimport { EDS_BUTTON } from '@eui/eds/eds-button';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\nimport { EDS_LABEL } from '@eui/eds/eds-label';\nimport { EDS_BADGE } from '@eui/eds/eds-badge';\nimport { EDS_CHIP } from '@eui/eds/eds-chip';\nimport { EDS_DROPDOWN } from '@eui/eds/eds-dropdown';\nimport { NestedTreeControl, CdkTreeModule, CdkTree } from '@angular/cdk/tree';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { ScrollingModule, ScrollDispatcher, CdkScrollable } from '@angular/cdk/scrolling';\nimport { debounceTime, Subject, Subscription } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * Hierarchical tree component for displaying and interacting with nested data structures.\n * Supports single and multi-select modes, recursive selection, virtual scrolling for large datasets,\n * and custom node templates.\n *\n * Built on Angular CDK Tree for efficient rendering and state management.\n */\n@Component({\n selector: 'eds-tree',\n templateUrl: './eds-tree.html',\n styleUrl: './eds-tree.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n FormsModule,\n ScrollingModule,\n CdkTreeModule,\n RouterModule,\n ...EDS_INPUT_CHECKBOX,\n ...EDS_BUTTON,\n ...EDS_ICON,\n ...EDS_ICON_BUTTON,\n ...EDS_LABEL,\n ...EDS_BADGE,\n ...EDS_CHIP,\n ...EDS_DROPDOWN,\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsTree implements OnInit, OnChanges, OnDestroy {\n /** E2E test attribute. */\n e2eAttr = input('eds-tree');\n\n /** Hierarchy of data to display in the tree. */\n nodes = input<TreeDataModel>(undefined);\n\n /** Reference to the ng-template used to render node item. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly nodeTemplateRef = input<TemplateRef<any>>(undefined);\n\n /** Reference to the ng-template used to render node content metadata. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly nodeContentMetadataTemplateRef = input<TemplateRef<any>>(undefined);\n\n /** Reference to the ng-template used to render right context menu. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly rightContextMenuTemplateRef = input<TemplateRef<any>>(undefined);\n\n /** Custom function for handling node selection logic. */\n readonly customNodeSelectFn = input<CustomNodeSelectFn>(undefined);\n\n /** Icon to display when a node is collapsed. */\n readonly expandedSvgIconClass = input('caret-right');\n\n /** Icon to display when a node is expanded. */\n readonly collapsedSvgIconClass = input('caret-down');\n\n /** Whether the full node display can be clicked to toggle the node. */\n readonly isClickTogglingNode = input(false, { transform: booleanAttribute });\n\n /** Whether multiple nodes can be selected. */\n readonly isMultiselect = input(false, { transform: booleanAttribute });\n\n /** Whether only one node can be selected. Select one will unselect the previous selected. */\n readonly isSingleSelect = input(false, { transform: booleanAttribute });\n\n /** In combination with isMultiselect. Whether the selection of a node will automatically select its children. */\n readonly isRecursiveSelection = input(false, { transform: booleanAttribute });\n\n /** In combination with isMultiselect. Whether the selection of all children will automatically select the parent. */\n readonly isRecursiveParentSelection = input(true, { transform: booleanAttribute });\n\n /** Whether the links are underlined on hover in the tree. */\n readonly showUnderlinedLinks = input(false, { transform: booleanAttribute });\n\n /** Whether the lines are displayed on the left of nodes. */\n readonly showLines = input(true, { transform: booleanAttribute });\n\n /** Whether all parents till the selected are highlighted in bold. */\n readonly highlightPath = input(false, { transform: booleanAttribute });\n\n /** Threshold for the virtual scroll to be activated. */\n readonly virtualScrollThreshold = input(800, { transform: numberAttribute });\n\n /** Size of the virtual scroll pages. */\n readonly virtualScrollPageSize = input(400, { transform: numberAttribute });\n\n /** Emits when selection changes. */\n readonly selectionChange = output<EdsTreeSelectionChanges>();\n\n /** Emits when a node is clicked. */\n readonly nodeClick = output<TreeItemModel>();\n\n /** Emits when a node is toggled (expanded/collapsed). */\n readonly nodeToggle = output<TreeItemModel>();\n\n readonly cdkScrollableRef = viewChild('cdkScrollableRef', { read: CdkScrollable });\n public readonly treeComponentInstance = viewChild<CdkTree<TreeItemRunTimeModel>>('treeComponentInstance');\n\n cdkArrayDataSource: ArrayDataSource<TreeItemRunTimeModel>;\n cdkTreeControl: NestedTreeControl<TreeItemRunTimeModel>;\n renderTree: boolean;\n public uid: string = Math.floor(Math.random() * 1000000000).toString();\n\n /** @internal Emits after initTree() recalculates selection from new nodes input. */\n readonly _nodesReset$ = new Subject<TreeDataModel>();\n\n protected _isMultiLevel: boolean;\n\n hostClasses = computed(() => {\n return [\n 'eds-tree',\n this.isMultiselect() ? 'eds-tree--multiselect' : '',\n this._isMultiLevel ? 'eds-tree--with-children' : '',\n this.showLines() ? 'eds-tree--show-lines' : '',\n ]\n .join(' ')\n .trim();\n });\n\n private processedNodes: TreeDataModel;\n private treeDataRunTime: TreeDataRunTimeModel;\n private treeDataRunTimeBackup: TreeDataRunTimeModel;\n private runTimeSelectionRecursiveState: TreeItemSelectionRecursiveModel[];\n private selectionModel: SelectionModel<TreeItemRunTimeModel>;\n private tempSelectionModel: SelectionModel<TreeItemRunTimeModel>;\n private selectionModelSubs: Subscription;\n private scrollDispatcherSubs: Subscription;\n private _selection: TreeDataModel;\n private treePagination: EdsTreePagination<TreeItemRunTimeModel>;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private scrollDispatcher = inject(ScrollDispatcher);\n\n get getTreeDataRunTime(): TreeDataRunTimeModel {\n return this.treeDataRunTime;\n }\n\n ngOnInit(): void {\n this.initTree();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['nodes']?.currentValue !== changes['nodes']?.previousValue) {\n this.renderTree = false;\n this.initTree();\n const treeComponentInstance = this.treeComponentInstance();\n if (treeComponentInstance) {\n treeComponentInstance?.renderNodeChanges([]);\n treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);\n }\n if (!changes['nodes'].firstChange) {\n this._nodesReset$.next(this._selection);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n if (this.scrollDispatcherSubs) {\n this.scrollDispatcherSubs.unsubscribe();\n }\n this._nodesReset$.complete();\n }\n\n getSelection(): TreeDataModel {\n return this._selection;\n }\n\n getProcessedNodes(): TreeDataModel {\n return this.processedNodes;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackBy(index: number, item: TreeItemRunTimeModel): any {\n return item.path;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackByControl(item: TreeItemRunTimeModel): any {\n return item;\n }\n\n getTreeItem(path: string): TreeItemModel {\n const indexArr: number[] = this.resolvePath(path);\n let nodeArr = this.processedNodes;\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 expandAt(path: string, detectChanges = true): void {\n this.getParentPaths(path).reverse().forEach((parentPath) => {\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(parentPath));\n });\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(path));\n\n if (detectChanges) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n collapseAll(): void {\n this.cdkTreeControl.collapseAll();\n this.changeDetectorRef.markForCheck();\n }\n\n collapseAt(path: string, detectChanges = true): void {\n this.cdkTreeControl.collapse(this.getRunTimeTreeItem(path));\n\n if (detectChanges) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n filterTerm(filterInput: string, filterKey?: string, showChildrenOfMatchedItems?: boolean): void {\n if (filterInput !== '' && filterInput !== null && typeof filterInput !== 'undefined') {\n this.treeDataRunTime = this.filterTreeData(structuredClone(this.treeDataRunTimeBackup), filterKey || 'label', filterInput, showChildrenOfMatchedItems);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n\n this.treePagination = new EdsTreePagination<TreeItemRunTimeModel>(this.treeDataRunTime, 1, 2, this.virtualScrollPageSize());\n const paginatedData = this.treePagination.getViewData().data;\n\n this.cdkArrayDataSource = new ArrayDataSource(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n\n this.cdkTreeControl.dataNodes = paginatedData;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n } else {\n this.treeDataRunTime = structuredClone(this.treeDataRunTimeBackup);\n\n this.treePagination = new EdsTreePagination<TreeItemRunTimeModel>(this.treeDataRunTime, 1, 2, this.virtualScrollPageSize());\n const paginatedData = this.treePagination.getViewData().data;\n\n this.cdkArrayDataSource = new ArrayDataSource(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n this.cdkTreeControl.dataNodes = paginatedData;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n }\n }\n\n setAllSelection(isChecked: boolean): void {\n if (!this.selectionModel) {\n return;\n }\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setIsCheckedForAll(this.treeDataRunTime, isChecked);\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n this.changeDetectorRef.markForCheck();\n }\n\n updateTreeItem(givenTreeItem: TreeItemModel, path: string): void {\n const treeItem = structuredClone(givenTreeItem);\n if (treeItem && path) {\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setTreeData(path, this.processInputs([treeItem])[0]);\n const pathArr = path.split('.');\n const index = parseInt(pathArr.pop(), 10);\n const treeItemRuntime = this.calculateRunTimeState(treeItem, index, pathArr.join('.'));\n if (treeItemRuntime?.children?.length > 0) {\n treeItemRuntime.children = this.applyRunTimeLastItems(treeItemRuntime.children);\n }\n this.setTreeDataRunTimeBackup(path, treeItemRuntime);\n this.setTreeDataRunTime(path, treeItemRuntime);\n const itemRecursiveSelectionState = this.calculateItemSelectionRecursiveState(treeItem);\n this.setRunTimeSelectionRecursiveStateTree(path, itemRecursiveSelectionState);\n this.syncStateChangesAtPath(path);\n if (this.cdkTreeControl.isExpanded(treeItemRuntime) && !treeItem.node.isExpanded) {\n this.cdkTreeControl.toggle(treeItemRuntime);\n } else if (!this.cdkTreeControl.isExpanded(treeItemRuntime) && treeItem.node.isExpanded) {\n this.cdkTreeControl.expand(treeItemRuntime);\n }\n this.renderInitialExpand(this.getRunTimeTreeItem(path)?.children);\n this.getInitialSelection(this.getRunTimeTreeItem(path)?.children)?.forEach((runTimeItem) => {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeItem.path));\n });\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n this.changeDetectorRef.detectChanges();\n this.treeComponentInstance().renderNodeChanges([]);\n this.treeComponentInstance().renderNodeChanges(this.treeDataRunTime);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onNodeClick(treeRunTimeItem: TreeItemRunTimeModel, e: any): void {\n if (!this.isMultiselect() || e.pointerId !== -1) {\n this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n if (this.isClickTogglingNode()) {\n this.cdkTreeControl.toggle(treeRunTimeItem);\n this.onNodeToggle(treeRunTimeItem);\n }\n }\n\n onNodeToggle(treeRunTimeItem: TreeItemRunTimeModel): void {\n this.getTreeItem(treeRunTimeItem?.path).node.isExpanded = this.cdkTreeControl.isExpanded(treeRunTimeItem);\n this.nodeToggle.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n onToggleButtonClick(treeRunTimeItem: TreeItemRunTimeModel, event: Event): void {\n event.stopPropagation();\n this.cdkTreeControl.toggle(treeRunTimeItem);\n this.onNodeToggle(treeRunTimeItem);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeSelected(evt: any, path: string): void {\n const item = this.getTreeItem(path);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const renderedRunTimeTreeItem = this.getRunTimeTreeItem(path);\n const node = item?.node;\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n const customNodeSelectFn = this.customNodeSelectFn();\n if (customNodeSelectFn) {\n customNodeSelectFn(path, evt.target.checked, item, new CustomNodeSelectFnHelper(this));\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else if (!node?.selectConfig?.singleSelect) {\n node.isSelected = evt.target.checked;\n node.isIndeterminate = false;\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length > 0) {\n if (node?.selectConfig?.recursive) {\n this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);\n }\n }\n\n this.setRunTimeSelectionRecursiveStateTree(\n path,\n this.calculateItemSelectionRecursiveState(structuredClone(this.getTreeItem(path))),\n );\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length >= 0) {\n if (node?.selectConfig?.recursive) {\n this.runStateChangesForAll(renderedRunTimeTreeItem?.children);\n }\n const activeElement = evt.target as HTMLElement;\n const expandedNodes = this.cdkTreeControl.expansionModel.selected;\n this.treeComponentInstance()?.renderNodeChanges([]);\n this.treeComponentInstance()?.renderNodeChanges(this.treeDataRunTime);\n expandedNodes.forEach((expandedNode) => {\n const runtimeNode = this.getRunTimeTreeItem(expandedNode.path);\n if (runtimeNode) {\n this.cdkTreeControl.expand(runtimeNode);\n }\n });\n setTimeout(() => {\n const newEl = document.getElementById(activeElement.id) as HTMLElement;\n newEl?.focus();\n });\n }\n this.syncStateChangesAtPath(path);\n if (this.getTreeItem(path).node.isSelected) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n const treeItem = this.getTreeItem(nodePath);\n const childStates = this.getRunTimeSelectionRecursiveState(nodePath).children.map((_) => _.selectionRecursiveState);\n this.updateRunTimeSelectionRecursiveState(\n nodePath,\n this.decideSelectionRecursiveState(\n childStates,\n treeItem.node?.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ),\n );\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n } else {\n this.changeDetectorRef.detectChanges();\n }\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else {\n const prevItem = this.selectionModel.selected[0];\n if (evt.target.checked) {\n if (prevItem) {\n this.getTreeItem(prevItem.path).node.isSelected = false;\n this.selectionModel.deselect(prevItem);\n }\n item.node.isSelected = true;\n this.selectionModel.select(runTimeBackupTreeItem);\n } else {\n item.node.isSelected = false;\n this.selectionModel.deselect(runTimeBackupTreeItem);\n }\n if (this.highlightPath()) {\n if (evt.target.checked && prevItem) {\n const prevItemNodePathsSeq = this.getParentPaths(prevItem.path);\n if (prevItemNodePathsSeq.length > 0) {\n prevItemNodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n }\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq?.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, evt.target.checked ? 'indeterminate' : 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n }\n\n hasChild = (_: number, item: TreeItemRunTimeModel): boolean => !!item?.children && item?.children?.length >= 0;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSelectFn(path: string): (evt: any) => void {\n if (this.getTreeItem(path)?.node?.selectable) {\n const nodeSelected = this.nodeSelected.bind(this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (evt: any) => nodeSelected(evt, path);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (_evt: any) => {\n console.warn('treeItemModel.node.selectable is false, you cannot implement onSelect');\n };\n }\n\n getRunTimeSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel {\n const indexArr: 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 initTree(): void {\n const nodesValue = this.nodes();\n if (nodesValue) {\n this._isMultiLevel = this.checkIfMultiLevel(nodesValue);\n this.processedNodes = this.processInputs(structuredClone(nodesValue));\n this.treeDataRunTime = this.createTreeDataRuntime(this.processedNodes);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.runTimeSelectionRecursiveState = this.createRunTimeSelectionRecursiveState(this.processedNodes);\n this.treeDataRunTimeBackup = structuredClone(this.treeDataRunTime);\n\n if (this.treeDataRunTimeBackup.length > this.virtualScrollThreshold()) {\n this.treePagination = new EdsTreePagination<TreeItemRunTimeModel>(this.treeDataRunTimeBackup, 1, 2, this.virtualScrollPageSize());\n const paginatedData = this.treePagination.getViewData().data;\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = paginatedData;\n this.runScrollListener();\n } else {\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n }\n this.renderInitialExpand(this.treeDataRunTime);\n this.selectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.getInitialSelection(this.treeDataRunTime),\n true,\n (a, b) => a?.path === b?.path,\n );\n this._selection = [...this.selectionModel.selected]?.map((item) => this.getTreeItem(item?.path));\n this.renderTree = true;\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n this.selectionModelSubs = this.selectionModel.changed.pipe(debounceTime(1)).subscribe((sc) => {\n const selectionChangeValue = {\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 this._selection = selectionChangeValue.selection;\n this.selectionChange.emit(selectionChangeValue);\n });\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private processInputs(treeData: TreeDataModel): TreeDataModel {\n if (this.isMultiselect()) {\n treeData = this.overrideTreeDataModelForSelection(treeData, this.isRecursiveSelection(), !this.isRecursiveParentSelection());\n }\n if (this.isSingleSelect()) {\n treeData = this.overrideTreeDataModelForSelection(treeData, false, false, true);\n }\n return treeData;\n }\n\n private overrideTreeDataModelForSelection(\n nodeArr: TreeDataModel,\n isRecursive: boolean,\n noAutoSelectParent: boolean,\n singleSelect?: boolean,\n ): TreeDataModel {\n return nodeArr?.map((item: TreeItemModel) => {\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 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 singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n children: this.overrideTreeDataModelForSelection(item.children, isRecursive, noAutoSelectParent, singleSelect),\n };\n } else {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n selectConfig: {\n ...item.node?.selectConfig,\n singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n };\n }\n });\n }\n\n private runScrollListener(): void {\n this.scrollDispatcherSubs = this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable) => {\n if (scrollable && this.checkIfCurrentScrollable(scrollable)) {\n const isAtBottom =\n scrollable?.getElementRef().nativeElement.scrollTop + scrollable?.getElementRef().nativeElement.clientHeight >=\n scrollable?.getElementRef().nativeElement.scrollHeight;\n const isAtTop = scrollable?.getElementRef().nativeElement.scrollTop === 0;\n const nodesValue = this.nodes();\n if (isAtBottom && !this.treePagination.isAtMax()) {\n if (nodesValue.length > 0) {\n this.treeDataRunTime = this.treePagination.paginateNext().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 });\n }\n } else if (isAtTop && this.treePagination.getCurrentStartPage() > 1) {\n if (nodesValue.length > 0) {\n this.treeDataRunTime = this.treePagination.paginatePrev().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 + viewportHeight });\n }\n }\n }\n });\n }\n\n // todo re-think about the access from custom on node select helper\n private silentSelect(path: string, isChecked: boolean): void {\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const treeItem = this.getTreeItem(path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.tempSelectionModel.select(runtimeBackupTreeItem);\n } else {\n this.tempSelectionModel.deselect(runtimeBackupTreeItem);\n }\n }\n }\n\n private selectTreeItem(runTimeBackupTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.select(runTimeBackupTreeItem);\n }\n\n private deselectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.deselect(runTimeTreeItem);\n }\n\n private createTreeDataRuntime(nodes: TreeDataModel): TreeDataRunTimeModel {\n return structuredClone(nodes)?.map((item, index) => {\n return this.calculateRunTimeState(item, index);\n });\n }\n\n private applyRunTimeLastItems(items: TreeDataRunTimeModel): TreeDataRunTimeModel {\n return items?.map((item, index) => {\n if (item?.children) {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n children: item.children?.length > 0 ? this.applyRunTimeLastItems(item.children) : item?.children,\n };\n } else {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n };\n }\n });\n }\n\n private createRunTimeSelectionRecursiveState(nodes: TreeDataModel): TreeItemSelectionRecursiveModel[] {\n return structuredClone(nodes)?.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));\n }\n\n private calculateItemSelectionRecursiveState(treeItem: TreeItemModel): TreeItemSelectionRecursiveModel {\n const childrenSelectionRecursive: TreeItemSelectionRecursiveModel[] = [];\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, index) => {\n childrenSelectionRecursive[index] = this.calculateItemSelectionRecursiveState(child);\n });\n }\n const childStates = childrenSelectionRecursive.map((_) => _.selectionRecursiveState);\n const itemState: SelectionRecursiveState = treeItem.node.selectable ? this.decideSelectionRecursiveState(\n childStates,\n treeItem.node.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ) : undefined;\n return {\n selectionRecursiveState: itemState,\n children: childrenSelectionRecursive,\n };\n }\n\n private decideSelectionRecursiveState(\n childStates: SelectionRecursiveState[] = [],\n isSelected: boolean,\n recursive: boolean,\n noAutoSelectParent: boolean,\n ): SelectionRecursiveState {\n let itemState: SelectionRecursiveState = 'indeterminate';\n if (isSelected && childStates.filter((s) => s).every((state) => state === 'allSelected')) {\n itemState = 'allSelected';\n } else if (!isSelected && childStates.filter((s) => s).every((state) => state === 'allNotSelected')) {\n itemState = 'allNotSelected';\n } else if (recursive && childStates.filter((s) => s).every((state) => state === 'allSelected') && !isSelected && !noAutoSelectParent) {\n itemState = 'allSelected';\n } else if (recursive && childStates.filter((s) => s).every((state) => state === 'allNotSelected') && isSelected) {\n itemState = 'allNotSelected';\n }\n return itemState;\n }\n\n private syncStateChangesAtPath(nodePath: string): void {\n const treeItem = this.getTreeItem(nodePath);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(nodePath);\n const runTimeSelectionRecursiveItem = this.getRunTimeSelectionRecursiveState(nodePath);\n if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {\n if (!treeItem.node?.selectConfig?.noAutoSelectParent) {\n treeItem.node = {\n ...treeItem.node,\n isSelected: runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate: runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate',\n };\n } else {\n treeItem.node = {\n ...treeItem.node,\n isSelected: treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate:\n runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate' ||\n (!treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected'),\n };\n }\n if (treeItem.node.isSelected === true && !this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else if (treeItem.node.isSelected === false && this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n }\n }\n\n private setTreeData(path: string, item: TreeItemModel): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.processedNodes;\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTimeBackup(path: string, item: TreeItemRunTimeModel): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.treeDataRunTimeBackup;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTime(path: string, item: TreeItemRunTimeModel): void {\n const oldItem = this.getRunTimeTreeItem(path);\n if (oldItem) {\n Object.keys(item)?.forEach((key) => {\n oldItem[key] = item[key];\n });\n }\n }\n\n private setRunTimeSelectionRecursiveStateTree(path: string, item: TreeItemSelectionRecursiveModel): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private updateRunTimeSelectionRecursiveState(path: string, selectionRecursiveState: SelectionRecursiveState): void {\n const indexArr: number[] = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = {\n ...itemArr[pathIndex],\n selectionRecursiveState,\n };\n }\n });\n }\n\n private setIsCheckedForAll(nodeArr: TreeItemRunTimeModel[], isChecked: boolean): void {\n nodeArr.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(runTimeItem.path);\n const treeItem = this.getTreeItem(runTimeItem.path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.selectTreeItem(runtimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runtimeBackupTreeItem);\n }\n }\n if (runTimeItem?.children?.length > 0) {\n this.setIsCheckedForAll(nodeArr[index].children, isChecked);\n }\n });\n }\n\n private runStateChangesForAll(nodeArr: TreeItemRunTimeModel[]): void {\n nodeArr?.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n if (runTimeItem?.children?.length >= 0) {\n this.runStateChangesForAll(nodeArr[index].children);\n this.syncSelectionAtPath(runTimeItem);\n }\n });\n }\n\n private syncSelectionAtPath(runTimeTreeItem: TreeItemRunTimeModel): void {\n this.syncStateChangesAtPath(runTimeTreeItem.path);\n if (this.getTreeItem(runTimeTreeItem.path).node.isSelected) {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n } else {\n this.deselectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n }\n }\n\n private resolvePath(path: string): number[] {\n return path?.split('.').map((index: string) => parseInt(index, 10));\n }\n\n private getParentPaths(path: string): string[] {\n const pathArr = path.split('.');\n const hasParent = pathArr.length > 1;\n if (hasParent) {\n pathArr.pop();\n const parentPath = pathArr.join('.');\n const nodeIndexSeq = parentPath.split('.').map((indexStr) => parseInt(indexStr, 10));\n const nodePathsSeq = [];\n nodeIndexSeq.forEach((nodeIndex, index) => {\n nodePathsSeq[index] = nodeIndexSeq.slice(0, index + 1).join('.');\n });\n return nodePathsSeq.reverse();\n } else {\n return [];\n }\n }\n\n private calculateRunTimeState(treeItem: TreeItemModel, index: number, parentPath?: string): TreeItemRunTimeModel {\n const runTimeTreeItem: TreeItemRunTimeModel = {\n path: parentPath ? parentPath + '.' + index : index.toString(),\n index,\n };\n if (treeItem.children && treeItem.children.length >= 0) {\n runTimeTreeItem.children = [];\n treeItem.children.forEach((child, treeItemIndex) => {\n runTimeTreeItem.children[treeItemIndex] = this.calculateRunTimeState(child, treeItemIndex, runTimeTreeItem.path);\n });\n }\n return runTimeTreeItem;\n }\n\n private filterTreeData(runTimeTreeData: TreeDataRunTimeModel, key = 'label', filterStr: string, showChildren: boolean, show?: boolean): TreeDataRunTimeModel {\n return runTimeTreeData.filter((runTimeItem) => {\n const targetData = this.getTreeItem(runTimeItem.path).node.treeContentBlock[key];\n if (\n targetData && this.normalizedStr(targetData)?.includes(this.normalizedStr(filterStr))\n ) {\n if (runTimeItem?.children?.length > 0) {\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, showChildren);\n }\n Object.assign(runTimeItem, { matched: true });\n return true;\n } else if (runTimeItem?.children?.length > 0) {\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, show);\n runTimeItem.children = runTimeItem.children.length > 0 ? runTimeItem.children : undefined;\n return runTimeItem?.children?.length > 0 || show;\n } else {\n return show;\n }\n });\n }\n\n private normalizedStr(str: string): string {\n return str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n }\n\n private getInitialSelection(nodes: TreeDataRunTimeModel): TreeItemRunTimeModel[] {\n const selection: TreeItemRunTimeModel[] = [];\n this.scanSelection(nodes, selection);\n return selection;\n }\n\n private scanSelection(nodes: TreeDataRunTimeModel, selection: TreeItemRunTimeModel[]): void {\n nodes?.forEach((item: TreeItemRunTimeModel) => {\n if (this.getTreeItem(item.path).node?.selectable && this.getTreeItem(item.path).node.isSelected) {\n selection.push(item);\n }\n if (item?.children?.length > 0) {\n this.scanSelection(item.children, selection);\n }\n });\n }\n\n private renderInitialExpand(nodes: TreeDataRunTimeModel): void {\n const expandRecursive = (items: TreeDataRunTimeModel): void => {\n items?.forEach((item: TreeItemRunTimeModel) => {\n if (item?.children?.length > 0) {\n expandRecursive(item.children);\n }\n\n const treeItemNode = this.getTreeItem(item.path).node;\n if (typeof treeItemNode.isExpanded !== 'undefined') {\n if (treeItemNode.isExpanded && !this.cdkTreeControl.isExpanded(item)) {\n this.expandAt(item.path, false);\n } else if (!treeItemNode.isExpanded && this.cdkTreeControl.isExpanded(item)) {\n this.cdkTreeControl.collapse(item);\n }\n }\n });\n };\n\n expandRecursive(nodes);\n this.changeDetectorRef.detectChanges();\n }\n\n private getRunTimeTreeItem(path: string): TreeItemRunTimeModel {\n return this.findRunTimeTreeItem(this.treeDataRunTime, path);\n }\n\n private findRunTimeTreeItem(treeDataRunTime: TreeDataRunTimeModel, path: string): TreeItemRunTimeModel {\n for (const runTimeItem of treeDataRunTime) {\n if (runTimeItem.path === path) {\n return runTimeItem;\n } else if (runTimeItem?.children?.length > 0) {\n const found = this.findRunTimeTreeItem(runTimeItem.children, path);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private getRunTimeBackupTreeItem(path: string): TreeItemRunTimeModel {\n const indexArr: number[] = this.resolvePath(path);\n let nodeArr = this.treeDataRunTimeBackup;\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 private checkIfMultiLevel(tree: TreeDataModel): boolean {\n let isMultiLevel = false;\n tree.forEach((item: TreeItemModel) => {\n if (item?.children?.length >= 0) {\n isMultiLevel = true;\n }\n });\n return isMultiLevel;\n }\n\n private checkIfCurrentScrollable(scrolled: CdkScrollable): boolean {\n return scrolled.getElementRef().nativeElement === this.cdkScrollableRef()?.getElementRef().nativeElement;\n }\n}\n","<div class=\"eds-tree__wrapper eds-ul-rep\" cdkScrollable #cdkScrollableRef>\n @if (renderTree) {\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n class=\"eds-cdk-tree\">\n <!-- Leaf node (no children) -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eds-cdk-nested-tree-node\">\n @if (treeRunTimeItemModel) {\n <div\n class=\"eds-li-rep eds-tree-node\"\n [class.eds-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eds-tree-node--last]=\"treeRunTimeItemModel.last\"\n [title]=\"getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel\n || getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label || ''\">\n <div class=\"eds-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel, $event)\">\n <div class=\"eds-tree-node-wrapper__container\">\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef() || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n }\n </cdk-nested-tree-node>\n <!-- Expandable node (has children) -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eds-cdk-nested-tree-node eds-cdk-nested-tree-node--with-child\">\n @if (treeRunTimeItemModel) {\n <div\n class=\"eds-li-rep eds-tree-node eds-tree-node--with-child\"\n [class.eds-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eds-tree-node--last]=\"treeRunTimeItemModel.last\"\n [title]=\"getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel\n || getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label || ''\">\n <div class=\"eds-tree-node-wrapper\">\n <div (click)=\"onNodeClick(treeRunTimeItemModel, $event)\" class=\"eds-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n edsIconButton\n size=\"s\"\n rounded\n [icon]=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) ? collapsedSvgIconClass() : expandedSvgIconClass()\"\n [ariaLabel]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onToggleButtonClick(treeRunTimeItemModel, $event)\"\n class=\"eds-tree-node__button\">\n </button>\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef() || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n @if (cdkTreeControl.isExpanded(treeRunTimeItemModel)) {\n <div class=\"eds-ul-rep eds-tree-node\" role=\"group\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n }\n </div>\n }\n </cdk-nested-tree-node>\n </cdk-tree>\n }\n</div>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n @if (node) {\n <div class=\"eds-tree-node-wrapper__container-left\" [class.eds-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n @if (node && node.selectable) {\n <input\n edsInputCheckbox\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\" />\n }\n\n @if (node?.treeContentBlock?.iconSvgName) {\n <eds-icon\n [icon]=\"node?.treeContentBlock?.iconSvgName\"\n size=\"s\"\n class=\"eds-u-mr-xs\">\n </eds-icon>\n }\n\n @if (node?.treeContentBlock?.chips) {\n @for (chip of node.treeContentBlock.chips; track chip) {\n <eds-chip\n size=\"m\"\n [color]=\"$any(chip.typeClass || 'neutral')\"\n class=\"eds-u-mr-xs\">\n {{ chip.label }}\n </eds-chip>\n }\n }\n\n @if (node?.treeContentBlock?.typeLabel) {\n <eds-badge size=\"m\" [color]=\"node?.treeContentBlock?.typeClass || 'neutral'\" class=\"eds-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eds-badge>\n }\n </div>\n\n <div class=\"eds-tree-node-wrapper__container-middle\">\n @if (!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal) {\n <label\n edsLabel\n for=\"{{ id }}\"\n class=\"eds-u-text-truncate\"\n [class.eds-label--selected]=\"\n highlightPath()\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eds-u-cursor-pointer]=\"node?.selectable\">\n {{ node?.treeContentBlock?.label }}\n </label>\n }\n @if (node?.treeContentBlock?.url) {\n <label edsLabel for=\"{{ id }}\" class=\"eds-u-text-truncate\">\n <a\n class=\"eds-u-text-link\"\n [class.eds-u-text-link-standalone]=\"!showUnderlinedLinks()\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ node?.treeContentBlock?.label }}\n </a>\n </label>\n }\n @if (node?.treeContentBlock?.urlExternal) {\n <label edsLabel for=\"{{ id }}\" class=\"eds-u-text-truncate\">\n <a\n class=\"eds-u-text-link-external\"\n [class.eds-u-text-link-external-standalone]=\"!showUnderlinedLinks()\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ node?.treeContentBlock?.label }}\n </a>\n </label>\n }\n </div>\n\n @if (node?.treeContentBlock?.rightContent) {\n <div class=\"eds-tree-node-wrapper__container-right\">\n @for (badge of node.treeContentBlock.rightContent?.badges; track badge) {\n <eds-badge variant=\"light\" [color]=\"badge.typeClass || 'neutral'\" class=\"eds-u-ml-xs\">\n {{ badge.label }}\n </eds-badge>\n }\n\n @for (chip of node.treeContentBlock.rightContent?.chips; track chip) {\n <eds-chip\n size=\"m\"\n [color]=\"$any(chip.typeClass || 'neutral')\"\n class=\"eds-u-ml-xs\">\n {{ chip.label }}\n </eds-chip>\n }\n\n @if (node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef()) {\n <eds-dropdown class=\"eds-u-ml-xs\">\n <button edsIconButton size=\"s\" rounded icon=\"dots-three-vertical\" ariaLabel=\"Options menu\"></button>\n <eds-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 </eds-dropdown-content>\n </eds-dropdown>\n }\n </div>\n }\n\n @if (node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\" />\n }\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n edsIconButton\n size=\"s\"\n rounded\n [icon]=\"metaDataContainer.expanded ? 'caret-down' : 'caret-right'\"\n ariaLabel=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n </button>\n @if (metaDataContainer.expanded) {\n <div class=\"eds-tree-node__metacontent\">\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 }\n </ng-template>\n }\n</ng-template>\n","import {\n Directive,\n AfterContentInit,\n TemplateRef,\n AfterViewInit,\n OnDestroy,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n inject,\n input,\n contentChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { EdsTree } from './eds-tree';\nimport { TreeDataModel } from './eds-tree.model';\nimport { EdsDropdown } from '@eui/eds/eds-dropdown';\n\n/**\n * Directive that integrates eds-tree with eds-dropdown for tree-based selection in dropdown menus.\n * Automatically updates dropdown trigger button label based on tree selection state.\n */\n@Directive({\n selector: 'eds-dropdown[edsDropdownTree]',\n})\nexport class EdsDropdownTreeDirective implements AfterContentInit, AfterViewInit, OnDestroy {\n /** Template reference for custom dropdown trigger button rendering. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly buttonTemplateRef = input<TemplateRef<any>>(undefined);\n readonly edsTree = contentChild(EdsTree);\n\n private buttonLabel: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private buttonViewRef: any;\n private nodesResetSub: Subscription;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private hostElement = inject(ElementRef);\n private renderer = inject(Renderer2);\n private edsDropdown = inject(EdsDropdown, { host: true });\n\n ngAfterContentInit(): void {\n this.buttonLabel = this.createButtonLabel(this.edsTree().getSelection());\n this.edsTree().selectionChange.subscribe((selectionChanges) => {\n this.buttonLabel = this.createButtonLabel(selectionChanges.selection);\n this.updateButtonView();\n });\n this.nodesResetSub = this.edsTree()._nodesReset$.subscribe((selection) => {\n this.buttonLabel = this.createButtonLabel(selection);\n this.updateButtonView();\n });\n }\n\n ngOnDestroy(): void {\n this.nodesResetSub?.unsubscribe();\n }\n\n ngAfterViewInit(): void {\n const buttonTemplateRef = this.buttonTemplateRef();\n if (buttonTemplateRef) {\n const triggerContainer = this.hostElement.nativeElement.querySelector('.eds-dropdown__trigger-container');\n if (!triggerContainer) {\n console.error('Could not find the triggerContainer');\n return;\n }\n while (triggerContainer.firstChild) {\n triggerContainer.removeChild(triggerContainer.firstChild);\n }\n this.buttonViewRef = buttonTemplateRef.createEmbeddedView({ $implicit: this.buttonLabel });\n this.buttonViewRef.detectChanges();\n\n this.buttonViewRef.rootNodes.forEach((node: Node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.renderer.appendChild(triggerContainer, node);\n }\n });\n }\n }\n\n private updateButtonView(): void {\n if (this.buttonViewRef) {\n this.buttonViewRef.context.$implicit = this.buttonLabel;\n this.buttonViewRef.detectChanges();\n }\n }\n\n private createButtonLabel(selection: TreeDataModel): string {\n if (selection?.length > 0) {\n return this.edsTree()\n .getSelection()\n ?.map((item) => item.node.treeContentBlock.label)\n .join(',') as string;\n }\n return 'No node selected.';\n }\n}\n","import { TreeDataModel, TreeItemModel } from './eds-tree.model';\n\n/**\n * Utility class for navigating and querying hierarchical tree data structures.\n * Provides methods to locate nodes by value, retrieve paths, and extract items from tree data.\n */\nexport class EdsTreeHelper {\n private readonly treeData: TreeDataModel;\n\n constructor(treeData: TreeDataModel) {\n this.treeData = treeData;\n }\n\n /**\n * Retrieves the path string for a single node matching the provided value.\n * Path format uses dot notation with indices (e.g., '0.2.1').\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPath(value: any, identifierKey = 'node.treeContentBlock.id'): string {\n if (typeof value !== 'undefined') {\n const paths: string[] = [];\n this.traverse(this.treeData, '', [value], paths, undefined, identifierKey);\n return paths[0];\n }\n return null;\n }\n\n /**\n * Retrieves path strings for multiple nodes matching the provided values.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPaths(values: any[], identifierKey?: string): string[] {\n const paths: string[] = [];\n this.traverse(this.treeData, '', values, paths, undefined, identifierKey);\n return paths;\n }\n\n /**\n * Retrieves the actual TreeItemModel objects for nodes matching the provided values.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getItems(values: any[], identifierKey?: string): TreeItemModel[] {\n const matchedItems: TreeItemModel[] = [];\n this.traverse(this.treeData, '', values, undefined, matchedItems, identifierKey);\n return matchedItems;\n }\n\n private traverse(\n tree: TreeDataModel,\n currentPath: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values: any[],\n paths?: string[],\n items?: TreeItemModel[],\n identifierKey?: string,\n ): void {\n for (const [i, item] of tree.entries()) {\n const valueToCheck = identifierKey ? this.getValueAtKey(item, identifierKey) : item;\n\n if (values.some((v) => this.deepEqual(v, valueToCheck))) {\n if (paths) paths.push(`${currentPath}${i}`);\n if (items) items.push(item);\n }\n\n if (item.children && item.children.length) {\n this.traverse(item.children, `${currentPath}${i}.`, values, paths, items, identifierKey);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getValueAtKey(object: any, key: string): any {\n const keys = key.split('.');\n let current = object;\n for (const k of keys) {\n if (current[k] !== undefined) {\n current = current[k];\n } else {\n return undefined;\n }\n }\n return current;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private deepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || !this.deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n }\n}\n","import { Directive, forwardRef, AfterContentInit, inject, input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { EdsTree } from './eds-tree';\nimport { EdsTreeSelectionChanges, TreeDataModel, TreeItemModel } from './eds-tree.model';\nimport { EdsTreeHelper } from './eds-tree-helper';\n\n/**\n * Form control directive that integrates eds-tree with Angular reactive and template-driven forms.\n * Implements ControlValueAccessor to enable two-way binding and form validation for tree selections.\n */\n@Directive({\n selector: 'eds-tree[edsTreeFormControl]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EdsTreeFormControlDirective),\n multi: true,\n },\n ],\n})\nexport class EdsTreeFormControlDirective implements ControlValueAccessor, AfterContentInit {\n /** Custom function to transform tree selection into form control value. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly edsTreeControlValueSetter = input<(selection: TreeDataModel) => any>((selection: TreeDataModel) => {\n return new EdsTreeHelper(this.tree.nodes()).getItems(selection.map((item) => item.node.treeContentBlock.id), 'node.treeContentBlock.id');\n });\n\n /** Custom function to transform form control value into tree selection items. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly edsTreeControlModelMapper = input<(model: any, tree?: TreeDataModel) => TreeItemModel[]>((model: TreeItemModel[]) => {\n return model;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (value: any) => void;\n private onTouched: () => void;\n private tree = inject(EdsTree, { host: true });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.tree.setAllSelection(false);\n if (typeof value !== 'undefined' && value !== null && value?.length > 0) {\n const initialItems = this.edsTreeControlModelMapper()(value, this.tree.nodes());\n const paths = new EdsTreeHelper(this.tree.nodes()).getPaths(initialItems);\n paths.forEach((path: string) => {\n this.tree.nodeSelected({ target: { checked: true } }, path);\n });\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n ngAfterContentInit(): void {\n this.tree.selectionChange.subscribe((selectionChanges: EdsTreeSelectionChanges) => {\n this.onChange(this.edsTreeControlValueSetter()(selectionChanges.selection));\n });\n }\n}\n","import { EdsTree } from './eds-tree';\nimport { EdsDropdownTreeDirective } from './eds-dropdown-tree.directive';\nimport { EdsTreeFormControlDirective } from './eds-tree-form-control.directive';\n\nexport { EdsTree, EdsDropdownTreeDirective, EdsTreeFormControlDirective };\n\nexport * from './eds-tree.model';\nexport * from './eds-tree-helper';\n\n/** Convenience array for importing all eds-tree components. */\nexport const EDS_TREE = [\n EdsTree,\n EdsDropdownTreeDirective,\n EdsTreeFormControlDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|