File
Index
Properties
|
|
Inputs
|
|
Accessors
|
|
pageDetails
|
Type : PageDetail[]
|
|
_hasChild
|
Default value : () => {...}
|
|
pageTreeNodes
|
Type : PageTreeNode[]
|
Default value : []
|
|
Accessors
pageDetails
|
setpageDetails(pageDetails: PageDetail[])
|
|
Parameters :
Name |
Type |
Optional |
pageDetails |
PageDetail[]
|
No
|
|
import { Component, Input } from '@angular/core';
import {
NxFlatTreeControl,
NxFlatTreeNode,
NxTreeFlatDataSource,
NxTreeNode
} from '@aposin/ng-aquila/tree';
interface PageTreeNode extends NxTreeNode {
children?: PageTreeNode[];
label: string;
}
/** Flat node with expandable and level information */
interface PageFlatTreeNode extends NxFlatTreeNode {
label: string;
}
interface PageDetail {
pageId: string;
bbTitles: string[];
}
@Component({
selector: 'taly-page-hierarchy',
templateUrl: './page-hierarchy.component.html',
styleUrl: './page-hierarchy.component.scss',
standalone: false
})
export class JourneyPageHierarchyComponent {
@Input() set pageDetails(pageDetails: PageDetail[]) {
this.pageTreeNodes = this.createTreeNodes(pageDetails);
this._dataSource = new NxTreeFlatDataSource(this._treeControl, this.pageTreeNodes);
}
pageTreeNodes: PageTreeNode[] = [];
_dataSource!: NxTreeFlatDataSource<PageTreeNode, PageFlatTreeNode>;
_treeControl: NxFlatTreeControl<PageFlatTreeNode>;
constructor() {
this._treeControl = new NxFlatTreeControl();
}
_hasChild = (_: number, node: NxFlatTreeNode) => node.expandable;
private createTreeNodes(pageDetails: PageDetail[]) {
return pageDetails.map((page) => {
return {
label: page.pageId,
children: page.bbTitles.map((bbTitle) => {
return {
label: bbTitle
};
})
};
});
}
}
<div class="page-tree">
<nx-tree [dataSource]="_dataSource" [treeControl]="_treeControl">
<nx-tree-node *nxTreeNodeDef="let node">
<button
nxAction
nxTreeNodeActionItem
nxTreeNodePadding
title="{{ node.label }}"
type="button"
>
{{ node.label }}
</button>
</nx-tree-node>
<nx-tree-node *nxTreeNodeDef="let node; when: _hasChild">
<button
nxAction
nxTreeNodeActionItem
nxTreeNodeToggle
nxTreeNodePadding
expandable
[expanded]="_treeControl.isExpanded(node)"
title="{{ node.label }}"
type="button"
>
{{ node.label }}
</button>
</nx-tree-node>
</nx-tree>
</div>
Legend
Html element with directive