angular-custom-selector
Version:
```bash NOTE*** This library was generated using Angular CLI version 9.0.0. Therefore, it is recommended that you use a compatible version of Angular to ensure proper functionality ```
139 lines • 16.3 kB
JavaScript
import { __decorate } from "tslib";
import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';
let MultiSelectorTreeViewComponent = class MultiSelectorTreeViewComponent {
constructor(cdRef) {
this.cdRef = cdRef;
this.isDisableParent = false;
this.closeEvent = new EventEmitter();
this.onChange = new EventEmitter();
this.enableAllNodes = false;
this.searchKey = "name";
this.checkedKeys = [];
}
ngOnChanges(changes) {
this.checkDefaultValue(changes.checkedKeys.currentValue, this.data);
}
ngOnInit() {
this.checkDefaultValue(this.checkedKeys, this.data);
this.onChange.emit(this.checkedKeys);
if (this.enableAllNodes) {
this.enableAll(this.data);
}
}
ngAfterContentInit() {
this.addExpandListItem(this.data);
}
ngAfterViewInit() {
this.cdRef.detectChanges();
}
checkDefaultValue(checkedKeys, items) {
for (var i = 0; i < items.length; i++) {
if (checkedKeys.indexOf(items[i].id) > -1) {
if (items[i].isSelectable) {
items[i].isSelected = true;
this.checkDefaultValue(checkedKeys, items[i].items);
}
else {
items[i].isSelected = false;
}
}
else {
items[i].isSelected = false;
this.checkDefaultValue(checkedKeys, items[i].items);
}
}
}
handleCheck(dataItem) {
dataItem.isSelected = !dataItem.isSelected;
this.handleChildCheck(dataItem.items, dataItem.isSelected);
this.checkedKeys = [];
this.checkedKeys = this.getCheckedKeys(this.data, this.checkedKeys);
this.onChange.emit(this.checkedKeys);
}
handleChildCheck(childItems, isSelected) {
for (var i = 0; i < childItems.length; i++) {
if (childItems[i].isSelectable) {
childItems[i].isSelected = isSelected;
this.handleChildCheck(childItems[i].items, isSelected);
}
else {
this.handleChildCheck(childItems[i].items, isSelected);
}
}
}
enableAll(data) {
data.map(item => {
item.isSelectable = true;
this.enableAll(item.items);
});
}
unCheckAll(items) {
for (var i = 0; i < items.length; i++) {
if (items[i].isSelectable) {
items[i].isSelected = false;
this.unCheckAll(items[i].items);
}
}
}
getCheckedKeys(items, keys) {
for (var i = 0; i < items.length; i++) {
if (items[i].isSelected) {
keys.push(items[i].id);
}
keys = this.getCheckedKeys(items[i].items, keys);
}
return keys;
}
showClick(dataItem) {
this.closeEvent.emit(dataItem);
}
addExpandListItem(treeItem) {
treeItem.forEach(item => {
if (item.hasChild) {
this.addExpandListItem(item.items);
}
});
}
};
MultiSelectorTreeViewComponent.ctorParameters = () => [
{ type: ChangeDetectorRef }
];
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "expandedKeys", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "selectedId", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "isDisableParent", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "data", void 0);
__decorate([
Output()
], MultiSelectorTreeViewComponent.prototype, "closeEvent", void 0);
__decorate([
Output()
], MultiSelectorTreeViewComponent.prototype, "onChange", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "displayName", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "enableAllNodes", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "searchKey", void 0);
__decorate([
Input()
], MultiSelectorTreeViewComponent.prototype, "checkedKeys", void 0);
MultiSelectorTreeViewComponent = __decorate([
Component({
selector: 'multi-selector-tree-view',
template: "<kendo-treeview [nodes]=\"data\" textField={{searchKey}} childrenField=\"items\" \r\n[(expandedKeys)]=\"expandedKeys\" expandBy=\"id\" \r\n[filterable]=\"true\" \r\n filterInputPlaceholder=\"Search\" kendoTreeViewExpandable \r\n kendoTreeViewHierarchyBinding>\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem>\r\n <input [(ngModel)]=\"dataItem.isSelected\" (click)=\"handleCheck(dataItem)\" [disabled]=\"!dataItem.isSelectable\" class=\"k-checkbox\" type=\"checkbox\"\r\n kendoCheckBox /><span class=\"selectoritem\" (click)=\"handleCheck(dataItem)\" [ngClass]=\"{'disableNode': dataItem.isSelectable === false,'itemactive' : selectedId == dataItem.id}\"> \r\n {{ dataItem[displayName] }} \r\n </span> \r\n </ng-template>\r\n</kendo-treeview>\r\n",
styles: [":host ::ng-deep .k-checkbox{border-color:#000}:host ::ng-deep .k-textbox{width:100%;margin-bottom:8px}:host ::ng-deep .k-in.k-state-focused{box-shadow:none!important}:host ::ng-deep .selectoritem:hover{background-color:#005151;border-radius:3px;color:#fff;font-weight:500;cursor:default}:host ::ng-deep .k-treeview .k-icon{font-size:20px}:host ::ng-deep .k-treeview .k-in{padding:0;width:100%}:host ::ng-deep .selectoritem{padding:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}:host ::ng-deep .disableNode{opacity:.6;pointer-events:none}:host ::ng-deep .itemactive{color:#005151;font-weight:500}"]
})
], MultiSelectorTreeViewComponent);
export { MultiSelectorTreeViewComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0b3ItdHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItY3VzdG9tLXNlbGVjdG9yLyIsInNvdXJjZXMiOlsibGliL211bHRpLXNlbGVjdG9yL211bHRpLXNlbGVjdG9yLXRyZWUtdmlldy9tdWx0aS1zZWxlY3Rvci10cmVlLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNakgsSUFBYSw4QkFBOEIsR0FBM0MsTUFBYSw4QkFBOEI7SUFpQnpDLFlBQW9CLEtBQXdCO1FBQXhCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBYm5DLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWhDLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4RCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEQsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsY0FBUyxHQUFXLE1BQU0sQ0FBQztRQUNwQixnQkFBVyxHQUFVLEVBQUUsQ0FBQztJQU1RLENBQUM7SUFKakQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUlNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUcsSUFBSSxDQUFDLGNBQWMsRUFBQztZQUNyQixJQUFJ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QVIsS0FBSyxFQUFFO2tFQUFvQjtBQUNuQjtJQUFSLEtBQUssRUFBRTt1RUFBa0M7QUFDakM7SUFBUixLQUFLLEVBQUU7NERBQWtCO0FBQ2hCO0lBQVQsTUFBTSxFQUFFO2tFQUF5RDtBQUN4RDtJQUFULE1BQU0sRUFBRTtnRUFBa0Q7QUFDbEQ7SUFBUixLQUFLLEVBQUU7bUVBQXFCO0FBQ3BCO0lBQVIsS0FBSyxFQUFFO3NFQUFpQztBQUNoQztJQUFSLEtBQUssRUFBRTtpRUFBNEI7QUFDM0I7SUFBUixLQUFLLEVBQUU7bUVBQWdDO0FBWDdCLDhCQUE4QjtJQUwxQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsMEJBQTBCO1FBQ3BDLDZ6QkFBd0Q7O0tBRXpELENBQUM7R0FDVyw4QkFBOEIsQ0E2RzFDO1NBN0dZLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXVsdGktc2VsZWN0b3ItdHJlZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0b3ItdHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3Rvci10cmVlLXZpZXcuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RvclRyZWVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kZWRLZXlzOiBhbnlbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZElkOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXNEaXNhYmxlUGFyZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGF0YTogQXJyYXk8YW55PjtcclxuICBAT3V0cHV0KCkgY2xvc2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZW5hYmxlQWxsTm9kZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWFyY2hLZXk6IHN0cmluZyA9IFwibmFtZVwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja2VkS2V5czogYW55W10gPSBbXTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5jaGVja0RlZmF1bHRWYWx1ZShjaGFuZ2VzLmNoZWNrZWRLZXlzLmN1cnJlbnRWYWx1ZSwgdGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja0RlZmF1bHRWYWx1ZSh0aGlzLmNoZWNrZWRLZXlzLCB0aGlzLmRhdGEpO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZEtleXMpO1xyXG4gICAgaWYodGhpcy5lbmFibGVBbGxOb2Rlcyl7XHJcbiAgICAgIHRoaXMuZW5hYmxlQWxsKHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLmFkZEV4cGFuZExpc3RJdGVtKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0RlZmF1bHRWYWx1ZShjaGVja2VkS2V5czogbnVtYmVyW10sIGl0ZW1zOiBBcnJheTxhbnk+KSB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChjaGVja2VkS2V5cy5pbmRleE9mKGl0ZW1zW2ldLmlkKSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1zW2ldLmlzU2VsZWN0YWJsZSkge1xyXG4gICAgICAgICAgaXRlbXNbaV0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdFZhbHVlKGNoZWNrZWRLZXlzLCBpdGVtc1tpXS5pdGVtcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGl0ZW1zW2ldLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaXRlbXNbaV0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hlY2tEZWZhdWx0VmFsdWUoY2hlY2tlZEtleXMsIGl0ZW1zW2ldLml0ZW1zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2hlY2soZGF0YUl0ZW06IGFueSkge1xyXG4gICAgZGF0YUl0ZW0uaXNTZWxlY3RlZCA9ICFkYXRhSXRlbS5pc1NlbGVjdGVkO1xyXG4gICAgdGhpcy5oYW5kbGVDaGlsZENoZWNrKGRhdGFJdGVtLml0ZW1zLCBkYXRhSXRlbS5pc1NlbGVjdGVkKTtcclxuICAgIHRoaXMuY2hlY2tlZEtleXMgPSBbXTtcclxuICAgIHRoaXMuY2hlY2tlZEtleXMgPSB0aGlzLmdldENoZWNrZWRLZXlzKHRoaXMuZGF0YSwgdGhpcy5jaGVja2VkS2V5cyk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5jaGVja2VkS2V5cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2hpbGRDaGVjayhjaGlsZEl0ZW1zOiBBcnJheTxhbnk+LCBpc1NlbGVjdGVkOiBib29sZWFuKSB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkSXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGNoaWxkSXRlbXNbaV0uaXNTZWxlY3RhYmxlKSB7XHJcbiAgICAgICAgY2hpbGRJdGVtc1tpXS5pc1NlbGVjdGVkID0gaXNTZWxlY3RlZDtcclxuICAgICAgICB0aGlzLmhhbmRsZUNoaWxkQ2hlY2soY2hpbGRJdGVtc1tpXS5pdGVtcywgaXNTZWxlY3RlZCk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hpbGRDaGVjayhjaGlsZEl0ZW1zW2ldLml0ZW1zLCBpc1NlbGVjdGVkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuYWJsZUFsbChkYXRhOiBBcnJheTxhbnk+KXtcclxuICAgIGRhdGEubWFwKGl0ZW09PiB7XHJcbiAgICAgIGl0ZW0uaXNTZWxlY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lbmFibGVBbGwoaXRlbS5pdGVtcyk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuQ2hlY2tBbGwoaXRlbXM6IEFycmF5PGFueT4pIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGl0ZW1zW2ldLmlzU2VsZWN0YWJsZSkge1xyXG4gICAgICAgIGl0ZW1zW2ldLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVuQ2hlY2tBbGwoaXRlbXNbaV0uaXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2hlY2tlZEtleXMoaXRlbXM6IEFycmF5PGFueT4sIGtleXM6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaXRlbXNbaV0uaXNTZWxlY3RlZCkge1xyXG4gICAgICAgIGtleXMucHVzaChpdGVtc1tpXS5pZCk7XHJcbiAgICAgIH1cclxuICAgICAga2V5cyA9IHRoaXMuZ2V0Q2hlY2tlZEtleXMoaXRlbXNbaV0uaXRlbXMsIGtleXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICBzaG93Q2xpY2soZGF0YUl0ZW06IGFueSkge1xyXG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoZGF0YUl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRFeHBhbmRMaXN0SXRlbSh0cmVlSXRlbTogQXJyYXk8YW55Pikge1xyXG4gICAgdHJlZUl0ZW0uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGQpIHtcclxuICAgICAgICB0aGlzLmFkZEV4cGFuZExpc3RJdGVtKGl0ZW0uaXRlbXMpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19