UNPKG

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
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