xui
Version:
xUI Components for Angular
98 lines • 11.3 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, Optional } from '@angular/core';
import { SubmenuService } from './submenu.service';
import { MenuService } from './menu.service';
import { combineLatest, filter, map } from 'rxjs';
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
import { NavigationEnd, Router } from '@angular/router';
import { InputBoolean } from '../utils';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "./menu.service";
import * as i3 from "./submenu.service";
import * as i4 from "@angular/common";
import * as i5 from "../icon/icon.component";
export let MenuItemComponent = class MenuItemComponent {
get showLabel$() {
return this.menuService.mode$.pipe(map(x => x === 'default'));
}
constructor(router, cdr, menuService, submenuService) {
this.router = router;
this.cdr = cdr;
this.menuService = menuService;
this.submenuService = submenuService;
this.disabled = false;
this.selected = false;
this.level = (this.submenuService?.level ?? 0) + 1;
this.paddingLeft = null;
}
ngOnInit() {
combineLatest([this.menuService.mode$, this.menuService.inlineIndent$])
.pipe(untilDestroyed(this))
.subscribe(([mode, inlineIndent]) => {
this.paddingLeft = mode === 'default' ? this.level * inlineIndent : null;
this.cdr.markForCheck();
});
this.router.events
.pipe(untilDestroyed(this), filter(x => x instanceof NavigationEnd), map(x => x.url === this.link))
.subscribe(selected => (this.selected = selected));
}
clickMenuItem(e) {
if (this.disabled) {
e.preventDefault();
e.stopPropagation();
}
else {
// Do stuff
this.router.navigateByUrl(this.link);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MenuItemComponent, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.MenuService }, { token: i3.SubmenuService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MenuItemComponent, selector: "xui-menu-item", inputs: { icon: "icon", link: "link", disabled: "disabled" }, host: { listeners: { "click": "clickMenuItem($event)" }, properties: { "style.paddingLeft.px": "paddingLeft", "class.x-menu-item-selected": "this.selected" }, classAttribute: "x-menu-item x-menu-hover" }, ngImport: i0, template: `
<ng-container *ngIf="icon">
<xui-icon>{{ icon }}</xui-icon>
</ng-container>
<ng-content *ngIf="showLabel$ | async"></ng-content>
`, isInline: true, dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.IconComponent, selector: "xui-icon" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], MenuItemComponent.prototype, "disabled", void 0);
MenuItemComponent = __decorate([
UntilDestroy(),
__metadata("design:paramtypes", [Router,
ChangeDetectorRef,
MenuService,
SubmenuService])
], MenuItemComponent);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MenuItemComponent, decorators: [{
type: Component,
args: [{
selector: 'xui-menu-item',
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<ng-container *ngIf="icon">
<xui-icon>{{ icon }}</xui-icon>
</ng-container>
<ng-content *ngIf="showLabel$ | async"></ng-content>
`,
host: {
class: 'x-menu-item x-menu-hover',
'[style.paddingLeft.px]': 'paddingLeft',
'(click)': 'clickMenuItem($event)'
}
}]
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.MenuService }, { type: i3.SubmenuService, decorators: [{
type: Optional
}] }]; }, propDecorators: { icon: [{
type: Input
}], link: [{
type: Input
}], disabled: [{
type: Input
}], selected: [{
type: HostBinding,
args: ['class.x-menu-item-selected']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMveHVpL3NyYy9tZW51L21lbnUtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUVMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQW1CakMsV0FBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFTNUIsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUtELFlBQ1UsTUFBYyxFQUNkLEdBQXNCLEVBQ3RCLFdBQXdCLEVBQ1osY0FBOEI7UUFIMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ1osbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBZjNCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBTXBELFVBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxnQkFBVyxHQUFrQixJQUFJLENBQUM7SUFPL0IsQ0FBQztJQUVKLFFBQVE7UUFDTixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUNmLElBQUksQ0FDSCxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxhQUFhLENBQUMsRUFDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBbUIsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNqRDthQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBYTtRQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNyQjthQUFNO1lBQ0wsV0FBVztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7OEdBaERVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdVQVpsQjs7Ozs7R0FLVDs7QUFZd0I7SUFBZixZQUFZLEVBQUU7O21EQUFrQjtBQUwvQixpQkFBaUI7SUFoQjdCLFlBQVksRUFBRTtxQ0FpQ0ssTUFBTTtRQUNULGlCQUFpQjtRQUNULFdBQVc7UUFDSSxjQUFjO0dBcEJ6QyxpQkFBaUIsQ0FpRDdCOzJGQWpEWSxpQkFBaUI7a0JBZjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7O0dBS1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSwwQkFBMEI7d0JBQ2pDLHdCQUF3QixFQUFFLGFBQWE7d0JBQ3ZDLFNBQVMsRUFBRSx1QkFBdUI7cUJBQ25DO2lCQUNGOzswQkFxQkksUUFBUTs0Q0FqQkYsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDbUIsUUFBUTtzQkFBaEMsS0FBSztnQkFFcUMsUUFBUTtzQkFBbEQsV0FBVzt1QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VibWVudVNlcnZpY2UgfSBmcm9tICcuL3N1Ym1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aS1tZW51LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvblwiPlxuICAgICAgPHh1aS1pY29uPnt7IGljb24gfX08L3h1aS1pY29uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwic2hvd0xhYmVsJCB8IGFzeW5jXCI+PC9uZy1jb250ZW50PlxuICBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICd4LW1lbnUtaXRlbSB4LW1lbnUtaG92ZXInLFxuICAgICdbc3R5bGUucGFkZGluZ0xlZnQucHhdJzogJ3BhZGRpbmdMZWZ0JyxcbiAgICAnKGNsaWNrKSc6ICdjbGlja01lbnVJdGVtKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcblxuICBASW5wdXQoKSBpY29uITogc3RyaW5nO1xuICBASW5wdXQoKSBsaW5rITogc3RyaW5nO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLngtbWVudS1pdGVtLXNlbGVjdGVkJykgc2VsZWN0ZWQgPSBmYWxzZTtcblxuICBnZXQgc2hvd0xhYmVsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51U2VydmljZS5tb2RlJC5waXBlKG1hcCh4ID0+IHggPT09ICdkZWZhdWx0JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBsZXZlbCA9ICh0aGlzLnN1Ym1lbnVTZXJ2aWNlPy5sZXZlbCA/PyAwKSArIDE7XG4gIHBhZGRpbmdMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHN1Ym1lbnVTZXJ2aWNlOiBTdWJtZW51U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5tZW51U2VydmljZS5tb2RlJCwgdGhpcy5tZW51U2VydmljZS5pbmxpbmVJbmRlbnQkXSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoW21vZGUsIGlubGluZUluZGVudF0pID0+IHtcbiAgICAgICAgdGhpcy5wYWRkaW5nTGVmdCA9IG1vZGUgPT09ICdkZWZhdWx0JyA/IHRoaXMubGV2ZWwgKiBpbmxpbmVJbmRlbnQgOiBudWxsO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICAgIGZpbHRlcih4ID0+IHggaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgbWFwKHggPT4gKHggYXMgTmF2aWdhdGlvbkVuZCkudXJsID09PSB0aGlzLmxpbmspXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHNlbGVjdGVkID0+ICh0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQpKTtcbiAgfVxuXG4gIGNsaWNrTWVudUl0ZW0oZTogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEbyBzdHVmZlxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmxpbmspO1xuICAgIH1cbiAgfVxufVxuIl19