coreui-angular-ex
Version:
CoreUI Components Library for Angular
81 lines (72 loc) • 2.03 kB
text/typescript
import { Directive, HostBinding, HostListener, Input, Optional } from '@angular/core';
import { DropdownService } from '../dropdown.service';
import { DropdownComponent } from '../dropdown/dropdown.component';
export class DropdownItemDirective {
/**
* Set active state to a dropdown-item.
* @type boolean
* @default undefined
*/
active?: boolean;
/**
* Configure dropdown-item close dropdown behavior.
* @type boolean
* @default true
*/
autoClose: boolean = true;
/**
* Disables a dropdown-item.
* @type boolean
* @default undefined
*/
disabled?: boolean;
constructor(
private dropdownService: DropdownService,
public dropdown?: DropdownComponent
) {
}
get ariaCurrent(): string | null {
return this.active ? 'true' : null;
}
get hostClasses(): any {
return {
'dropdown-item': true,
active: this.active,
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 {
if (this.autoClose) {
this.dropdownService.toggle({ visible: 'toggle', dropdown: this.dropdown });
}
}
private onKeyUp($event: KeyboardEvent): void {
if ($event.key === 'Enter') {
if (this.autoClose) {
this.dropdownService.toggle({ visible: false, dropdown: this.dropdown });
}
}
}
}