UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

94 lines 9.43 kB
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=