carbon-components-angular
Version:
Next generation components
45 lines • 4.54 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);
/**
* Hold's list of selected nodes and preserves order
*/
this.value = new Map();
this.selectionObservable = this.selectionSubject.asObservable();
}
/**
* 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);
}
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmVldmlldy90cmVldmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJakQsTUFBTSxPQUFPLGVBQWU7SUFxQjNCO1FBbkJBOzs7OztXQUtHO1FBQ0gscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFFbkU7O1dBRUc7UUFDSyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUd6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsSUFBVTtRQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1YsT0FBTztTQUNQO1FBRUQsMERBQTBEO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OzRHQXhDVyxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSBcIi4vdHJlZS1ub2RlLnR5cGVzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmVlVmlld1NlcnZpY2Uge1xuXHRzZWxlY3Rpb25PYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueSB8IGFueVtdPjtcblx0LyoqXG5cdCAqIFZhcmlhYmxlIHVzZWQgYWNyb3NzIGFsbCBub2RlcyBhbmQgd3JhcHBlciB0byBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIGFsbG93IGNvbnRlbnQgcHJvamVjdGlvblxuXHQgKiBvciBnZW5lcmF0ZSB0aGUgdHJlZVxuXHQgKlxuXHQgKiBWYWx1ZSBpcyB1cGRhdGVkIGJ5IHBhc3NpbmcgYSB2YWx1ZSB0byBgdHJlZWAgaW5wdXQgaW4gd3JhcHBlciBjb21wb25lbnQuXG5cdCAqL1xuXHRjb250ZW50UHJvamVjdGVkID0gdHJ1ZTtcblx0LyoqXG5cdCAqICoqRXhwZXJpbWVudGFsKipcblx0ICovXG5cdGlzTXVsdGlTZWxlY3QgPSBmYWxzZTtcblxuXHRwcml2YXRlIHNlbGVjdGlvblN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxNYXA8c3RyaW5nLCBOb2RlPj4oMSk7XG5cblx0LyoqXG5cdCAqIEhvbGQncyBsaXN0IG9mIHNlbGVjdGVkIG5vZGVzIGFuZCBwcmVzZXJ2ZXMgb3JkZXJcblx0ICovXG5cdHByaXZhdGUgdmFsdWUgPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5zZWxlY3Rpb25PYnNlcnZhYmxlID0gdGhpcy5zZWxlY3Rpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN0b3JlIHNlbGVjdGVkIG5vZGUgaW4gbWFwXG5cdCAqIEBwYXJhbSBub2RlOiBOb2RlXG5cdCAqL1xuXHRzZWxlY3ROb2RlKG5vZGU6IE5vZGUpIHtcblx0XHRpZiAoIW5vZGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBTaW5jZSBtdWx0aXNlbGVjdCBpcyBub3QgZW5hYmxlZCwgd2UgY2xlYXIgZXhpc3RpbmcgbWFwXG5cdFx0aWYgKCF0aGlzLmlzTXVsdGlTZWxlY3QpIHtcblx0XHRcdHRoaXMudmFsdWUuY2xlYXIoKTtcblx0XHR9XG5cdFx0dGhpcy52YWx1ZS5zZXQobm9kZS5pZCwgbm9kZSk7XG5cdFx0dGhpcy5zZWxlY3Rpb25TdWJqZWN0Lm5leHQodGhpcy52YWx1ZSk7XG5cdH1cbn1cbiJdfQ==