@xui/components
Version:
xUI Components for Angular
31 lines • 6.81 kB
JavaScript
import { booleanAttribute, ChangeDetectionStrategy, Component, effect, EventEmitter, input, Output, signal } from '@angular/core';
import { XuiSubmenuService } from '../submenu.service';
import * as i0 from "@angular/core";
import * as i1 from "../submenu.service";
import * as i2 from "@angular/common";
import * as i3 from "../../icon/icon";
export class XuiSubmenu {
constructor(submenuService) {
this.submenuService = submenuService;
this.paddingLeft = this.submenuService.level * 24;
this._isOpened = signal(false);
this.title = input();
this.icon = input();
this.open = input(false, { transform: booleanAttribute });
this.openChange = new EventEmitter();
effect(() => this._isOpened.set(this.open()), { allowSignalWrites: true });
}
toggleSubmenu() {
this._isOpened.set(!this._isOpened());
this.openChange.emit();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XuiSubmenu, deps: [{ token: i1.XuiSubmenuService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: XuiSubmenu, selector: "xui-submenu", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange" }, providers: [XuiSubmenuService], ngImport: i0, template: "<div class=\"x-submenu-entry x-menu-hover\" [style.paddingLeft.px]=\"paddingLeft\" (click)=\"toggleSubmenu()\">\n <div class=\"x-submenu-title x-menu-item\">\n <ng-container *ngIf=\"icon()\">\n <xui-icon [icon]=\"icon()\"></xui-icon>\n </ng-container>\n {{ title() }}\n </div>\n\n <xui-icon [icon]=\"_isOpened() ? 'keyboard_arrow_down' : 'keyboard_arrow_up'\"></xui-icon>\n</div>\n\n@if (_isOpened()) {\n <ng-content />\n}\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.XuiIcon, selector: "xui-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "icon"], exportAs: ["xuiIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XuiSubmenu, decorators: [{
type: Component,
args: [{ selector: 'xui-submenu', providers: [XuiSubmenuService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-submenu-entry x-menu-hover\" [style.paddingLeft.px]=\"paddingLeft\" (click)=\"toggleSubmenu()\">\n <div class=\"x-submenu-title x-menu-item\">\n <ng-container *ngIf=\"icon()\">\n <xui-icon [icon]=\"icon()\"></xui-icon>\n </ng-container>\n {{ title() }}\n </div>\n\n <xui-icon [icon]=\"_isOpened() ? 'keyboard_arrow_down' : 'keyboard_arrow_up'\"></xui-icon>\n</div>\n\n@if (_isOpened()) {\n <ng-content />\n}\n" }]
}], ctorParameters: () => [{ type: i1.XuiSubmenuService }], propDecorators: { openChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveHVpL3NyYy9tZW51L3N1Ym1lbnUvc3VibWVudS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveHVpL3NyYy9tZW51L3N1Ym1lbnUvc3VibWVudS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVF2RCxNQUFNLE9BQU8sVUFBVTtJQVNyQixZQUFvQixjQUFpQztRQUFqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFSckQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDN0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixVQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDeEIsU0FBSSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNsQyxlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHeEUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQWhCVSxVQUFVO2tHQUFWLFVBQVUsMmJBSlYsQ0FBQyxpQkFBaUIsQ0FBQywwQkNkaEMsNGJBY0E7OzJGRElhLFVBQVU7a0JBTnRCLFNBQVM7K0JBQ0UsYUFBYSxhQUNaLENBQUMsaUJBQWlCLENBQUMsbUJBRWIsdUJBQXVCLENBQUMsTUFBTTtzRkFTNUIsVUFBVTtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBYdWlTdWJtZW51U2VydmljZSB9IGZyb20gJy4uL3N1Ym1lbnUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aS1zdWJtZW51JyxcbiAgcHJvdmlkZXJzOiBbWHVpU3VibWVudVNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJ3N1Ym1lbnUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFh1aVN1Ym1lbnUge1xuICBwYWRkaW5nTGVmdCA9IHRoaXMuc3VibWVudVNlcnZpY2UubGV2ZWwgKiAyNDtcbiAgX2lzT3BlbmVkID0gc2lnbmFsKGZhbHNlKTtcblxuICB0aXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgaWNvbiA9IGlucHV0PHN0cmluZz4oKTtcbiAgb3BlbiA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN1Ym1lbnVTZXJ2aWNlOiBYdWlTdWJtZW51U2VydmljZSkge1xuICAgIGVmZmVjdCgoKSA9PiB0aGlzLl9pc09wZW5lZC5zZXQodGhpcy5vcGVuKCkpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgdG9nZ2xlU3VibWVudSgpIHtcbiAgICB0aGlzLl9pc09wZW5lZC5zZXQoIXRoaXMuX2lzT3BlbmVkKCkpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ4LXN1Ym1lbnUtZW50cnkgeC1tZW51LWhvdmVyXCIgW3N0eWxlLnBhZGRpbmdMZWZ0LnB4XT1cInBhZGRpbmdMZWZ0XCIgKGNsaWNrKT1cInRvZ2dsZVN1Ym1lbnUoKVwiPlxuICA8ZGl2IGNsYXNzPVwieC1zdWJtZW51LXRpdGxlIHgtbWVudS1pdGVtXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImljb24oKVwiPlxuICAgICAgPHh1aS1pY29uIFtpY29uXT1cImljb24oKVwiPjwveHVpLWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAge3sgdGl0bGUoKSB9fVxuICA8L2Rpdj5cblxuICA8eHVpLWljb24gW2ljb25dPVwiX2lzT3BlbmVkKCkgPyAna2V5Ym9hcmRfYXJyb3dfZG93bicgOiAna2V5Ym9hcmRfYXJyb3dfdXAnXCI+PC94dWktaWNvbj5cbjwvZGl2PlxuXG5AaWYgKF9pc09wZW5lZCgpKSB7XG4gIDxuZy1jb250ZW50IC8+XG59XG4iXX0=