ngx-treeview
Version:
An Angular treeview component with checkbox
64 lines • 3.32 kB
JavaScript
import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
import { isNil } from 'lodash';
import { TreeviewItem } from './treeview-item';
import { TreeviewConfig } from './treeview-config';
var TreeviewItemComponent = /** @class */ (function () {
function TreeviewItemComponent(defaultConfig) {
var _this = this;
this.defaultConfig = defaultConfig;
this.checkedChange = new EventEmitter();
this.onCollapseExpand = function () {
_this.item.collapsed = !_this.item.collapsed;
};
this.onCheckedChange = function () {
var checked = _this.item.checked;
if (!isNil(_this.item.children) && !_this.config.decoupleChildFromParent) {
_this.item.children.forEach(function (child) { return child.setCheckedRecursive(checked); });
}
_this.checkedChange.emit(checked);
};
this.config = this.defaultConfig;
}
TreeviewItemComponent.prototype.onChildCheckedChange = function (child, checked) {
if (!this.config.decoupleChildFromParent) {
var itemChecked = null;
for (var _i = 0, _a = this.item.children; _i < _a.length; _i++) {
var childItem = _a[_i];
if (itemChecked === null) {
itemChecked = childItem.checked;
}
else if (itemChecked !== childItem.checked) {
itemChecked = undefined;
break;
}
}
if (itemChecked === null) {
itemChecked = false;
}
if (this.item.checked !== itemChecked) {
this.item.checked = itemChecked;
}
}
this.checkedChange.emit(checked);
};
TreeviewItemComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-treeview-item',
template: "\n <div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\" (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n </div>\n ",
styles: ["\n :host {\n display: block;\n }\n\n :host .treeview-item {\n white-space: nowrap;\n }\n\n :host .treeview-item .treeview-item {\n margin-left: 2rem;\n }\n "]
},] },
];
/** @nocollapse */
TreeviewItemComponent.ctorParameters = function () { return [
{ type: TreeviewConfig }
]; };
TreeviewItemComponent.propDecorators = {
config: [{ type: Input }],
template: [{ type: Input }],
item: [{ type: Input }],
checkedChange: [{ type: Output }]
};
return TreeviewItemComponent;
}());
export { TreeviewItemComponent };
//# sourceMappingURL=treeview-item.component.js.map