carbon-components-angular
Version:
Next generation components
72 lines • 6.91 kB
JavaScript
import { Injectable } from "@angular/core";
import { ReplaySubject } from "rxjs";
import * as i0 from "@angular/core";
export class TreeViewService {
constructor() {
/**
* 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.
*/
this.contentProjected = true;
/**
* **Experimental**
*/
this.isMultiSelect = false;
this.selectionSubject = new ReplaySubject(1);
this.focusNodeSubject = new ReplaySubject(1);
/**
* Hold's list of selected nodes and preserves order
*/
this.value = new Map();
this.selectionObservable = this.selectionSubject.asObservable();
this.focusNodeObservable = this.focusNodeSubject.asObservable();
}
/**
* Emits the focused node
* @param node: Node
*/
focusNode(node) {
this.focusNodeSubject.next(node);
}
/**
* Store selected node in map
* @param node: Node
*/
selectNode(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) {
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);
}
}
TreeViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
TreeViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmVldmlldy90cmVldmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJakQsTUFBTSxPQUFPLGVBQWU7SUF1QjNCO1FBcEJBOzs7OztXQUtHO1FBQ0gscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDM0QscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEQ7O1dBRUc7UUFDSyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUd6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFVO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFVO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVixPQUFPO1NBQ1A7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxJQUFVO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVixPQUFPO1NBQ1A7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs0R0F4RVcsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gXCIuL3RyZWUtbm9kZS50eXBlc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJlZVZpZXdTZXJ2aWNlIHtcblx0c2VsZWN0aW9uT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnkgfCBhbnlbXT47XG5cdGZvY3VzTm9kZU9ic2VydmFibGU6IE9ic2VydmFibGU8Tm9kZT47XG5cdC8qKlxuXHQgKiBWYXJpYWJsZSB1c2VkIGFjcm9zcyBhbGwgbm9kZXMgYW5kIHdyYXBwZXIgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBhbGxvdyBjb250ZW50IHByb2plY3Rpb25cblx0ICogb3IgZ2VuZXJhdGUgdGhlIHRyZWVcblx0ICpcblx0ICogVmFsdWUgaXMgdXBkYXRlZCBieSBwYXNzaW5nIGEgdmFsdWUgdG8gYHRyZWVgIGlucHV0IGluIHdyYXBwZXIgY29tcG9uZW50LlxuXHQgKi9cblx0Y29udGVudFByb2plY3RlZCA9IHRydWU7XG5cdC8qKlxuXHQgKiAqKkV4cGVyaW1lbnRhbCoqXG5cdCAqL1xuXHRpc011bHRpU2VsZWN0ID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBzZWxlY3Rpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWFwPHN0cmluZywgTm9kZT4+KDEpO1xuXHRwcml2YXRlIGZvY3VzTm9kZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxOb2RlPigxKTtcblxuXHQvKipcblx0ICogSG9sZCdzIGxpc3Qgb2Ygc2VsZWN0ZWQgbm9kZXMgYW5kIHByZXNlcnZlcyBvcmRlclxuXHQgKi9cblx0cHJpdmF0ZSB2YWx1ZSA9IG5ldyBNYXAoKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnNlbGVjdGlvbk9ic2VydmFibGUgPSB0aGlzLnNlbGVjdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5mb2N1c05vZGVPYnNlcnZhYmxlID0gdGhpcy5mb2N1c05vZGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXRzIHRoZSBmb2N1c2VkIG5vZGVcblx0ICogQHBhcmFtIG5vZGU6IE5vZGVcblx0ICovXG5cdGZvY3VzTm9kZShub2RlOiBOb2RlKSB7XG5cdFx0dGhpcy5mb2N1c05vZGVTdWJqZWN0Lm5leHQobm9kZSk7XG5cdH1cblxuXHQvKipcblx0ICogU3RvcmUgc2VsZWN0ZWQgbm9kZSBpbiBtYXBcblx0ICogQHBhcmFtIG5vZGU6IE5vZGVcblx0ICovXG5cdHNlbGVjdE5vZGUobm9kZTogTm9kZSkge1xuXHRcdGlmICghbm9kZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFNpbmNlIG11bHRpc2VsZWN0IGlzIG5vdCBlbmFibGVkLCB3ZSBjbGVhciBleGlzdGluZyBtYXBcblx0XHRpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCkge1xuXHRcdFx0dGhpcy52YWx1ZS5jbGVhcigpO1xuXHRcdH1cblx0XHR0aGlzLnZhbHVlLnNldChub2RlLmlkLCBub2RlKTtcblx0XHR0aGlzLnNlbGVjdGlvblN1YmplY3QubmV4dCh0aGlzLnZhbHVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHNlbGVjdGVkIG5vZGUgZnJvbSB0aGUgbWFwXG5cdCAqIEBwYXJhbSBub2RlOiBOb2RlXG5cdCAqL1xuXHRkZXNlbGVjdE5vZGUobm9kZTogTm9kZSkge1xuXHRcdGlmICghbm9kZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsdWUuZGVsZXRlKG5vZGUuaWQpO1xuXHRcdHRoaXMuc2VsZWN0aW9uU3ViamVjdC5uZXh0KHRoaXMudmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYWxsIHNlbGVjdGVkIG5vZGVzIGZyb20gdGhlIG1hcFxuXHQgKi9cblx0ZGVzZWxlY3RBbGxOb2RlcygpIHtcblx0XHR0aGlzLnZhbHVlLmNsZWFyKCk7XG5cdFx0dGhpcy5zZWxlY3Rpb25TdWJqZWN0Lm5leHQodGhpcy52YWx1ZSk7XG5cdH1cbn1cbiJdfQ==