src/treeview/treeview.service.ts
Properties |
|
Methods |
constructor()
|
Defined in src/treeview/treeview.service.ts:27
|
deselectAllNodes |
deselectAllNodes()
|
Defined in src/treeview/treeview.service.ts:75
|
Removes all selected nodes from the map
Returns :
void
|
deselectNode | ||||||||
deselectNode(node: Node)
|
||||||||
Defined in src/treeview/treeview.service.ts:63
|
||||||||
Removes selected node from the map
Parameters :
Returns :
void
|
focusNode | ||||||||
focusNode(node: Node)
|
||||||||
Defined in src/treeview/treeview.service.ts:38
|
||||||||
Emits the focused node
Parameters :
Returns :
void
|
selectNode | ||||||||
selectNode(node: Node)
|
||||||||
Defined in src/treeview/treeview.service.ts:46
|
||||||||
Store selected node in map
Parameters :
Returns :
void
|
contentProjected |
Default value : true
|
Defined in src/treeview/treeview.service.ts:15
|
Variable used across all nodes and wrapper to determine if we should allow content projection or generate the tree Value is updated by passing a value to |
focusNodeObservable |
Type : Observable<Node>
|
Defined in src/treeview/treeview.service.ts:8
|
Private focusNodeSubject |
Default value : new ReplaySubject<Node>(1)
|
Defined in src/treeview/treeview.service.ts:22
|
isMultiSelect |
Default value : false
|
Defined in src/treeview/treeview.service.ts:19
|
Experimental |
selectionObservable |
Type : Observable<any | []>
|
Defined in src/treeview/treeview.service.ts:7
|
Private selectionSubject |
Default value : new ReplaySubject<Map<string, Node>>(1)
|
Defined in src/treeview/treeview.service.ts:21
|
Private value |
Default value : new Map()
|
Defined in src/treeview/treeview.service.ts:27
|
Hold's list of selected nodes and preserves order |
import { Injectable } from "@angular/core";
import { Observable, ReplaySubject } from "rxjs";
import { Node } from "./tree-node.types";
@Injectable()
export class TreeViewService {
selectionObservable: Observable<any | any[]>;
focusNodeObservable: Observable<Node>;
/**
* Variable used across all nodes and wrapper to determine if we should allow content projection
* or generate the tree
*
* Value is updated by passing a value to `tree` input in wrapper component.
*/
contentProjected = true;
/**
* **Experimental**
*/
isMultiSelect = false;
private selectionSubject = new ReplaySubject<Map<string, Node>>(1);
private focusNodeSubject = new ReplaySubject<Node>(1);
/**
* Hold's list of selected nodes and preserves order
*/
private value = new Map();
constructor() {
this.selectionObservable = this.selectionSubject.asObservable();
this.focusNodeObservable = this.focusNodeSubject.asObservable();
}
/**
* Emits the focused node
* @param node: Node
*/
focusNode(node: Node) {
this.focusNodeSubject.next(node);
}
/**
* Store selected node in map
* @param node: Node
*/
selectNode(node: Node) {
if (!node) {
return;
}
// Since multiselect is not enabled, we clear existing map
if (!this.isMultiSelect) {
this.value.clear();
}
this.value.set(node.id, node);
this.selectionSubject.next(this.value);
}
/**
* Removes selected node from the map
* @param node: Node
*/
deselectNode(node: Node) {
if (!node) {
return;
}
this.value.delete(node.id);
this.selectionSubject.next(this.value);
}
/**
* Removes all selected nodes from the map
*/
deselectAllNodes() {
this.value.clear();
this.selectionSubject.next(this.value);
}
}