@coreui/angular
Version:
CoreUI Components Library for Angular
96 lines • 10.1 kB
JavaScript
import { Directive, ElementRef, HostBinding, HostListener, inject, Input, Optional } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../dropdown.service";
import * as i2 from "../dropdown/dropdown.component";
export class DropdownItemDirective {
#elementRef;
constructor(dropdownService, dropdown) {
this.dropdownService = dropdownService;
this.dropdown = dropdown;
/**
* Configure dropdown-item close dropdown behavior.
* @type boolean
* @default true
*/
this.autoClose = true;
this.#elementRef = inject(ElementRef);
this._tabIndex = null;
}
focus(origin) {
this.#elementRef?.nativeElement?.focus();
}
getLabel() {
return this.#elementRef?.nativeElement?.textContent.trim();
}
get ariaCurrent() {
return this.active ? 'true' : null;
}
get hostClasses() {
return {
'dropdown-item': true,
active: this.active,
disabled: this.disabled
};
}
set tabIndex(value) {
this._tabIndex = value;
}
get tabIndex() {
return this.disabled ? '-1' : this._tabIndex;
}
get isDisabled() {
return this.disabled || null;
}
onClick($event) {
if (this.autoClose) {
this.dropdownService.toggle({ visible: 'toggle', dropdown: this.dropdown });
}
}
onKeyUp($event) {
if ($event.key === 'Enter') {
if (this.autoClose) {
this.dropdownService.toggle({ visible: false, dropdown: this.dropdown });
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownItemDirective, deps: [{ token: i1.DropdownService }, { token: i2.DropdownComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: DropdownItemDirective, isStandalone: true, selector: "[cDropdownItem]", inputs: { active: "active", autoClose: "autoClose", disabled: "disabled", tabIndex: "tabIndex" }, host: { listeners: { "click": "onClick($event)", "keyup": "onKeyUp($event)" }, properties: { "attr.aria-current": "this.ariaCurrent", "class": "this.hostClasses", "attr.tabindex": "this.tabIndex", "attr.aria-disabled": "this.isDisabled" }, classAttribute: "dropdown-item" }, exportAs: ["cDropdownItem"], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownItemDirective, decorators: [{
type: Directive,
args: [{
selector: '[cDropdownItem]',
exportAs: 'cDropdownItem',
standalone: true,
host: { class: 'dropdown-item' }
}]
}], ctorParameters: () => [{ type: i1.DropdownService }, { type: i2.DropdownComponent, decorators: [{
type: Optional
}] }], propDecorators: { active: [{
type: Input
}], autoClose: [{
type: Input
}], disabled: [{
type: Input
}], ariaCurrent: [{
type: HostBinding,
args: ['attr.aria-current']
}], hostClasses: [{
type: HostBinding,
args: ['class']
}], tabIndex: [{
type: HostBinding,
args: ['attr.tabindex']
}, {
type: Input
}], isDisabled: [{
type: HostBinding,
args: ['attr.aria-disabled']
}], onClick: [{
type: HostListener,
args: ['click', ['$event']]
}], onKeyUp: [{
type: HostListener,
args: ['keyup', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0vZHJvcGRvd24taXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVcxRyxNQUFNLE9BQU8scUJBQXFCO0lBb0JoQyxXQUFXLENBQWtDO0lBRTdDLFlBQ1UsZUFBZ0MsRUFDckIsUUFBNEI7UUFEdkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBakJqRDs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQVFuQyxnQkFBVyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQXVDckMsY0FBUyxHQUEyQixJQUFJLENBQUM7SUFsQzlDLENBQUM7SUFFSixLQUFLLENBQUMsTUFBZ0M7UUFDcEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFDSSxXQUFXO1FBQ2IsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUVJLFFBQVEsQ0FBQyxLQUE2QjtRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUlELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUdPLE9BQU8sQ0FBQyxNQUFrQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUM7SUFDSCxDQUFDO0lBR08sT0FBTyxDQUFDLE1BQXFCO1FBQ25DLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBaEZVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQU5qQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtpQkFDakM7OzBCQXlCSSxRQUFRO3lDQWxCRixNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQWtCRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFXaEIsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLGVBQWU7O3NCQUMzQixLQUFLO2dCQVlGLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTXpCLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUXpCLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi4vZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjRHJvcGRvd25JdGVtXScsXG4gIGV4cG9ydEFzOiAnY0Ryb3Bkb3duSXRlbScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdkcm9wZG93bi1pdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIEZvY3VzYWJsZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBTZXQgYWN0aXZlIHN0YXRlIHRvIGEgZHJvcGRvd24taXRlbS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGFjdGl2ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmUgZHJvcGRvd24taXRlbSBjbG9zZSBkcm9wZG93biBiZWhhdmlvci5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSBhdXRvQ2xvc2U6IGJvb2xlYW4gPSB0cnVlO1xuICAvKipcbiAgICogRGlzYWJsZXMgYSBkcm9wZG93bi1pdGVtLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGRyb3Bkb3duPzogRHJvcGRvd25Db21wb25lbnRcbiAgKSB7fVxuXG4gIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy4jZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIGdldExhYmVsPygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNlbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py50ZXh0Q29udGVudC50cmltKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jdXJyZW50JylcbiAgZ2V0IGFyaWFDdXJyZW50KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZSA/ICd0cnVlJyA6IG51bGw7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdkcm9wZG93bi1pdGVtJzogdHJ1ZSxcbiAgICAgIGFjdGl2ZTogdGhpcy5hY3RpdmUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBASW5wdXQoKVxuICBzZXQgdGFiSW5kZXgodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IG51bGwpIHtcbiAgICB0aGlzLl90YWJJbmRleCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRhYkluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gJy0xJyA6IHRoaXMuX3RhYkluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBfdGFiSW5kZXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJylcbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25DbGljaygkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvQ2xvc2UpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25TZXJ2aWNlLnRvZ2dsZSh7IHZpc2libGU6ICd0b2dnbGUnLCBkcm9wZG93bjogdGhpcy5kcm9wZG93biB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgaWYgKHRoaXMuYXV0b0Nsb3NlKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25TZXJ2aWNlLnRvZ2dsZSh7IHZpc2libGU6IGZhbHNlLCBkcm9wZG93bjogdGhpcy5kcm9wZG93biB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==