ng-devui
Version:
DevUI components based on Angular
106 lines • 10.5 kB
JavaScript
import { Input, Directive, HostBinding, EventEmitter, Output, inject, ChangeDetectorRef } from '@angular/core';
import { HostListener } from '@angular/core';
import { MenuComponent } from './menu.component';
import { SubMenuService } from './submenu.service';
import * as i0 from "@angular/core";
export class MenuItemDirective {
constructor() {
this.subMenuHost = false;
this.noStyle = false;
this.disabled = false;
this.active = false;
this.menuItemClass = true;
this.itemClick = new EventEmitter();
this.titleHover = new EventEmitter();
this.cdr = inject(ChangeDetectorRef);
this.menuComponent = inject(MenuComponent, {
skipSelf: true
});
this.submenuService = inject(SubMenuService, {
skipSelf: true,
optional: true
});
}
hostMouseEnter(event) {
this.hostHover('enter');
}
hostMouseLeave(event) {
this.hostHover('leave');
}
hostClick(event) {
if (!this.disabled) {
this.itemClick.emit(event);
if (!this.subMenuHost) {
this.menuComponent.menuItemClick.emit({
item: this,
event
});
if (this.submenuService) {
this.submenuService.childState$.next('leave');
}
}
}
}
hostHover(type) {
if (!this.disabled && this.submenuService) {
this.titleHover.emit(type);
}
}
ngOnChanges({ active }) {
if (active && this.submenuService) {
if (active.firstChange) {
setTimeout(() => {
this.submenuService.setChildActive();
this.cdr.markForCheck();
}, 0);
}
else {
this.submenuService.setChildActive();
}
}
}
ngOnInit() { }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MenuItemDirective, selector: "[dMenuItem]", inputs: { subMenuHost: "subMenuHost", noStyle: "noStyle", disabled: "disabled", active: "active" }, outputs: { itemClick: "itemClick", titleHover: "titleHover" }, host: { listeners: { "mouseenter": "hostMouseEnter($event)", "mouseleave": "hostMouseLeave($event)", "click": "hostClick($event)" }, properties: { "class.no-style": "this.noStyle", "class.disabled": "this.disabled", "class.active": "this.active", "class.devui-menu-item": "this.menuItemClass" } }, exportAs: ["dMenuItem"], usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuItemDirective, decorators: [{
type: Directive,
args: [{
selector: '[dMenuItem]',
exportAs: 'dMenuItem',
}]
}], propDecorators: { subMenuHost: [{
type: Input
}], noStyle: [{
type: HostBinding,
args: ['class.no-style']
}, {
type: Input
}], disabled: [{
type: HostBinding,
args: ['class.disabled']
}, {
type: Input
}], active: [{
type: HostBinding,
args: ['class.active']
}, {
type: Input
}], menuItemClass: [{
type: HostBinding,
args: ['class.devui-menu-item']
}], itemClick: [{
type: Output
}], titleHover: [{
type: Output
}], hostMouseEnter: [{
type: HostListener,
args: ['mouseenter', ['$event']]
}], hostMouseLeave: [{
type: HostListener,
args: ['mouseleave', ['$event']]
}], hostClick: [{
type: HostListener,
args: ['click', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL21lbnUvbWVudS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxFQUVMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBR04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFNbkQsTUFBTSxPQUFPLGlCQUFpQjtJQUo5QjtRQUtXLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ1csWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVqRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUMzQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDaEQsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUM5QyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUVPLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRTtZQUNoRCxRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO0tBNkNKO0lBM0N5QyxjQUFjLENBQUMsS0FBaUI7UUFDdEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRXVDLGNBQWMsQ0FBQyxLQUFpQjtRQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFa0MsU0FBUyxDQUFDLEtBQWlCO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNwQyxJQUFJLEVBQUUsSUFBSTtvQkFDVixLQUFLO2lCQUNOLENBQUMsQ0FBQztnQkFDSCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQW9CO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBaUI7UUFDbkMsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNSLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDOytHQTlESCxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFdBQVc7aUJBQ3BCOzhCQUVRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ2tDLE9BQU87c0JBQTlDLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFBRyxLQUFLO2dCQUNHLFFBQVE7c0JBQS9DLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFBRyxLQUFLO2dCQUNDLE1BQU07c0JBQTNDLFdBQVc7dUJBQUMsY0FBYzs7c0JBQUcsS0FBSztnQkFDRyxhQUFhO3NCQUFsRCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFFMUIsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQVlpQyxjQUFjO3NCQUFyRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRSxjQUFjO3NCQUFyRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJSCxTQUFTO3NCQUEzQyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElucHV0LFxuICBPbkluaXQsXG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBpbmplY3QsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SG92ZXJUeXBlcyB9IGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgeyBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFN1Yk1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zdWJtZW51LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZE1lbnVJdGVtXScsXG4gIGV4cG9ydEFzOiAnZE1lbnVJdGVtJyxcbiAgfSlcbmV4cG9ydCBjbGFzcyBNZW51SXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc3ViTWVudUhvc3QgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uby1zdHlsZScpIEBJbnB1dCgpIG5vU3R5bGUgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJykgQElucHV0KCkgYWN0aXZlID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGV2dWktbWVudS1pdGVtJykgbWVudUl0ZW1DbGFzcyA9IHRydWU7XG5cbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgQE91dHB1dCgpIHRpdGxlSG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVIb3ZlclR5cGVzPigpO1xuICBwcm90ZWN0ZWQgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcm90ZWN0ZWQgbWVudUNvbXBvbmVudCA9IGluamVjdChNZW51Q29tcG9uZW50LCB7XG4gICAgc2tpcFNlbGY6IHRydWVcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHN1Ym1lbnVTZXJ2aWNlID0gaW5qZWN0KFN1Yk1lbnVTZXJ2aWNlLCB7XG4gICAgc2tpcFNlbGY6IHRydWUsXG4gICAgb3B0aW9uYWw6IHRydWVcbiAgfSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pIGhvc3RNb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5ob3N0SG92ZXIoJ2VudGVyJyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSkgaG9zdE1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmhvc3RIb3ZlcignbGVhdmUnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgaG9zdENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLml0ZW1DbGljay5lbWl0KGV2ZW50KTtcbiAgICAgIGlmICghdGhpcy5zdWJNZW51SG9zdCkge1xuICAgICAgICB0aGlzLm1lbnVDb21wb25lbnQubWVudUl0ZW1DbGljay5lbWl0KHtcbiAgICAgICAgICBpdGVtOiB0aGlzLFxuICAgICAgICAgIGV2ZW50XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zdWJtZW51U2VydmljZSkge1xuICAgICAgICAgIHRoaXMuc3VibWVudVNlcnZpY2UuY2hpbGRTdGF0ZSQubmV4dCgnbGVhdmUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhvc3RIb3Zlcih0eXBlOiBNZW51SG92ZXJUeXBlcykge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLnN1Ym1lbnVTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnRpdGxlSG92ZXIuZW1pdCh0eXBlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IGFjdGl2ZSB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGFjdGl2ZSAmJiB0aGlzLnN1Ym1lbnVTZXJ2aWNlKSB7XG4gICAgICBpZiAoYWN0aXZlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWVudVNlcnZpY2Uuc2V0Q2hpbGRBY3RpdmUoKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN1Ym1lbnVTZXJ2aWNlLnNldENoaWxkQWN0aXZlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IH1cbn1cbiJdfQ==