import { Component, EventEmitter, Input, Output, HostListener, ViewChild, TemplateRef } from '@angular/core'; import { TreeviewI18n } from './treeview-i18n'; import { TreeviewItem } from './treeview-item'; import { TreeviewConfig } from './treeview-config'; import { TreeviewComponent } from './treeview.component'; import { DropdownDirective } from './dropdown.directive'; import { TreeviewHeaderTemplateContext } from './treeview-header-template-context'; import { TreeviewItemTemplateContext } from './treeview-item-template-context'; @Component({ selector: 'ngx-dropdown-treeview', templateUrl: './dropdown-treeview.component.html', styleUrls: ['./dropdown-treeview.component.scss'] }) export class DropdownTreeviewComponent { @Input() buttonClass = 'btn-outline-secondary'; @Input() headerTemplate: TemplateRef; @Input() itemTemplate: TemplateRef; @Input() items: TreeviewItem[]; @Input() config: TreeviewConfig; @Output() selectedChange = new EventEmitter(true); @Output() filterChange = new EventEmitter(); @ViewChild(TreeviewComponent) treeviewComponent: TreeviewComponent; @ViewChild(DropdownDirective) dropdownDirective: DropdownDirective; constructor( public i18n: TreeviewI18n, private defaultConfig: TreeviewConfig ) { this.config = this.defaultConfig; } getText(): string { return this.treeviewComponent && this.treeviewComponent.selection ? this.i18n.getText(this.treeviewComponent.selection) : ""; } onSelectedChange(values: any[]) { this.selectedChange.emit(values); } onFilterChange(text: string) { this.filterChange.emit(text); } }