@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
94 lines • 9.43 kB
JavaScript
import { ContentChild, Directive, Host, HostBinding, HostListener, Input, Optional, } from '@angular/core';
import { DokuDropdownMenu } from './dropdown-menu.directive';
import * as i0 from "@angular/core";
import * as i1 from "./dropdown-menu.directive";
export class DokuDropdownMenuItem {
get classes() {
return ['d-dropdown-menu-item', 'd-text-body-m', `d-dropdown-menu-item-${this.appearance}`];
}
constructor(elementRef, dropdownMenu) {
this.elementRef = elementRef;
this.dropdownMenu = dropdownMenu;
/**
* Whether to disable the item.
* It prevents from being clicked and has different styles.
* @default false
*/
this.disabled = false;
/**
* Whether to disable the click functionality of the item.
* @default false
*/
this.disableClick = false;
/**
* The appearance of the menu item.
* - `normal` (default), has padding.
* - `plain`, no additional styles.
*/
this.appearance = 'normal';
}
get hasNestedDropdownMenu() {
return !!this.nestedDropdownMenu;
}
onClick(event) {
if (this.disabled || this.disableClick) {
event.preventDefault();
event.stopPropagation();
return;
}
this.dropdownMenu?.hide();
}
onMouseEnter() {
if (!this.nestedDropdownMenu)
return;
this.nestedDropdownMenu['placement'] = 'right-start';
this.nestedDropdownMenu.show();
}
onMouseLeave() {
if (!this.nestedDropdownMenu)
return;
this.nestedDropdownMenu.hide();
}
}
DokuDropdownMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuDropdownMenuItem, deps: [{ token: i0.ElementRef }, { token: i1.DokuDropdownMenu, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
DokuDropdownMenuItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DokuDropdownMenuItem, isStandalone: true, selector: "[doku-dropdown-menu-item]", inputs: { disabled: "disabled", disableClick: "disableClick", appearance: "appearance" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.d-dropdown-menu-item-disabled": "this.disabled", "class": "this.classes", "class.d-dropdown-menu-nested": "this.hasNestedDropdownMenu" } }, queries: [{ propertyName: "nestedDropdownMenu", first: true, predicate: DokuDropdownMenu, descendants: true }], exportAs: ["dokuDropdownMenuItem"], ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuDropdownMenuItem, decorators: [{
type: Directive,
args: [{
selector: '[doku-dropdown-menu-item]',
exportAs: 'dokuDropdownMenuItem',
standalone: true,
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DokuDropdownMenu, decorators: [{
type: Optional
}, {
type: Host
}] }]; }, propDecorators: { disabled: [{
type: HostBinding,
args: ['class.d-dropdown-menu-item-disabled']
}, {
type: Input
}], disableClick: [{
type: Input
}], appearance: [{
type: Input
}], classes: [{
type: HostBinding,
args: ['class']
}], nestedDropdownMenu: [{
type: ContentChild,
args: [DokuDropdownMenu]
}], hasNestedDropdownMenu: [{
type: HostBinding,
args: ['class.d-dropdown-menu-nested']
}], onClick: [{
type: HostListener,
args: ['click', ['$event']]
}], onMouseEnter: [{
type: HostListener,
args: ['mouseenter']
}], onMouseLeave: [{
type: HostListener,
args: ['mouseleave']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi1tZW51LWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUVULElBQUksRUFDSixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQU83RCxNQUFNLE9BQU8sb0JBQW9CO0lBd0IvQixJQUNjLE9BQU87UUFDbkIsT0FBTyxDQUFDLHNCQUFzQixFQUFFLGVBQWUsRUFBRSx3QkFBd0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUlELFlBQ1ksVUFBc0IsRUFDSixZQUErQjtRQURqRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ0osaUJBQVksR0FBWixZQUFZLENBQW1CO1FBaEM3RDs7OztXQUlHO1FBR0gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7O1dBR0c7UUFFSCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQjs7OztXQUlHO1FBQ00sZUFBVSxHQUF1QixRQUFRLENBQUM7SUFZaEQsQ0FBQztJQUVKLElBQ2MscUJBQXFCO1FBQ2pDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO0lBR1MsT0FBTyxDQUFDLEtBQVk7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQUUsT0FBTztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ3JELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBR1MsWUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUFFLE9BQU87UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7O2lIQTlEVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixtZkE2QmpCLGdCQUFnQjsyRkE3Qm5CLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQWtDSSxRQUFROzswQkFBSSxJQUFJOzRDQXpCbkIsUUFBUTtzQkFGUCxXQUFXO3VCQUFDLHFDQUFxQzs7c0JBQ2pELEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR1EsT0FBTztzQkFEcEIsV0FBVzt1QkFBQyxPQUFPO2dCQUtvQixrQkFBa0I7c0JBQXpELFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVFoQixxQkFBcUI7c0JBRGxDLFdBQVc7dUJBQUMsOEJBQThCO2dCQU1qQyxPQUFPO3NCQURoQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXdkIsWUFBWTtzQkFEckIsWUFBWTt1QkFBQyxZQUFZO2dCQVFoQixZQUFZO3NCQURyQixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9rdURyb3Bkb3duTWVudSB9IGZyb20gJy4vZHJvcGRvd24tbWVudS5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZG9rdS1kcm9wZG93bi1tZW51LWl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdkb2t1RHJvcGRvd25NZW51SXRlbScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERva3VEcm9wZG93bk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgaXRlbS5cbiAgICogSXQgcHJldmVudHMgZnJvbSBiZWluZyBjbGlja2VkIGFuZCBoYXMgZGlmZmVyZW50IHN0eWxlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1kcm9wZG93bi1tZW51LWl0ZW0tZGlzYWJsZWQnKVxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGNsaWNrIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGl0ZW0uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlQ2xpY2sgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGFwcGVhcmFuY2Ugb2YgdGhlIG1lbnUgaXRlbS5cbiAgICogLSBgbm9ybWFsYCAoZGVmYXVsdCksIGhhcyBwYWRkaW5nLlxuICAgKiAtIGBwbGFpbmAsIG5vIGFkZGl0aW9uYWwgc3R5bGVzLlxuICAgKi9cbiAgQElucHV0KCkgYXBwZWFyYW5jZTogJ25vcm1hbCcgfCAncGxhaW4nID0gJ25vcm1hbCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByb3RlY3RlZCBnZXQgY2xhc3NlcygpOiBOZ0NsYXNzWyduZ0NsYXNzJ10ge1xuICAgIHJldHVybiBbJ2QtZHJvcGRvd24tbWVudS1pdGVtJywgJ2QtdGV4dC1ib2R5LW0nLCBgZC1kcm9wZG93bi1tZW51LWl0ZW0tJHt0aGlzLmFwcGVhcmFuY2V9YF07XG4gIH1cblxuICBAQ29udGVudENoaWxkKERva3VEcm9wZG93bk1lbnUpIHByaXZhdGUgbmVzdGVkRHJvcGRvd25NZW51PzogRG9rdURyb3Bkb3duTWVudTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgZHJvcGRvd25NZW51PzogRG9rdURyb3Bkb3duTWVudVxuICApIHt9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kLWRyb3Bkb3duLW1lbnUtbmVzdGVkJylcbiAgcHJvdGVjdGVkIGdldCBoYXNOZXN0ZWREcm9wZG93bk1lbnUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5uZXN0ZWREcm9wZG93bk1lbnU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZUNsaWNrKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHJvcGRvd25NZW51Py5oaWRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgcHJvdGVjdGVkIG9uTW91c2VFbnRlcigpIHtcbiAgICBpZiAoIXRoaXMubmVzdGVkRHJvcGRvd25NZW51KSByZXR1cm47XG4gICAgdGhpcy5uZXN0ZWREcm9wZG93bk1lbnVbJ3BsYWNlbWVudCddID0gJ3JpZ2h0LXN0YXJ0JztcbiAgICB0aGlzLm5lc3RlZERyb3Bkb3duTWVudS5zaG93KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgcHJvdGVjdGVkIG9uTW91c2VMZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMubmVzdGVkRHJvcGRvd25NZW51KSByZXR1cm47XG4gICAgdGhpcy5uZXN0ZWREcm9wZG93bk1lbnUuaGlkZSgpO1xuICB9XG59XG4iXX0=