coreui-angular-ex
Version:
CoreUI Components Library for Angular
67 lines (56 loc) • 1.83 kB
text/typescript
import { AfterViewInit, Directive, HostBinding, HostListener, Input, Optional } from '@angular/core';
import { DropdownService } from '../dropdown.service';
import { DropdownComponent } from '../dropdown/dropdown.component';
export class DropdownCloseDirective implements AfterViewInit {
constructor(
private dropdownService: DropdownService,
public dropdown?: DropdownComponent
) { }
/**
* Disables a dropdown-close directive.
* @type boolean
* @default undefined
*/
disabled?: boolean;
dropdownComponent?: DropdownComponent;
ngAfterViewInit(): void {
if (this.dropdownComponent) {
this.dropdown = this.dropdownComponent;
this.dropdownService = this.dropdownComponent?.dropdownService;
}
}
get hostClasses(): any {
return {
disabled: this.disabled
};
}
set tabIndex(value: string | number | null) {
this._tabIndex = value;
}
get tabIndex() {
return this.disabled ? '-1' : this._tabIndex;
}
private _tabIndex: string | number | null = null;
get isDisabled(): boolean | null {
return this.disabled || null;
}
private onClick($event: MouseEvent): void {
!this.disabled && this.dropdownService.toggle({ visible: false, dropdown: this.dropdown });
}
private onKeyUp($event: KeyboardEvent): void {
if ($event.key === 'Enter') {
!this.disabled && this.dropdownService.toggle({ visible: false, dropdown: this.dropdown });
}
}
}