@mediusinc/mng-commons-layout 8.0.0-rc.0 → 8.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { inject, Component } from '@angular/core';
3
3
  import { RouterLink } from '@angular/router';
4
4
  import { TranslatePipe } from '@ngx-translate/core';
5
5
  import { ButtonDirective } from '@openng/optimus-ui/button';
@@ -10,11 +10,11 @@ class ErrorPageComponent {
10
10
  this.layout = inject(LayoutService);
11
11
  }
12
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ErrorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ErrorPageComponent, isStandalone: true, selector: "mng-error-page", ngImport: i0, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.error.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ErrorPageComponent, isStandalone: true, selector: "mng-error-page", ngImport: i0, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.error.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ErrorPageComponent, decorators: [{
16
16
  type: Component,
17
- args: [{ selector: 'mng-error-page', imports: [TranslatePipe, RouterLink, ButtonDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.error.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"] }]
17
+ args: [{ selector: 'mng-error-page', imports: [TranslatePipe, RouterLink, ButtonDirective], template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.error.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"] }]
18
18
  }] });
19
19
 
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-layout-components-pages-error.mjs","sources":["../../components/pages/error/src/lib/error.page.component.ts","../../components/pages/error/src/lib/error.page.component.html","../../components/pages/error/src/mediusinc-mng-commons-layout-components-pages-error.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from '@openng/optimus-ui/button';\n\nimport {LayoutService} from '@mediusinc/mng-commons-layout';\n\n@Component({\n selector: 'mng-error-page',\n imports: [TranslatePipe, RouterLink, ButtonDirective],\n styleUrls: ['error.page.component.css'],\n templateUrl: './error.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.error.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAea,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;AAQoB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD,IAAA;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,0ECf/B,siCAiBA,EAAA,MAAA,EAAA,CAAA,g4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDP6B,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,gRAA1C,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKd,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACI,gBAAgB,EAAA,OAAA,EACjB,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAA,eAAA,EAGpC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,siCAAA,EAAA,MAAA,EAAA,CAAA,g4BAAA,CAAA,EAAA;;;AEbnD;;AAEG;;"}
1
+ {"version":3,"file":"mediusinc-mng-commons-layout-components-pages-error.mjs","sources":["../../components/pages/error/src/lib/error.page.component.ts","../../components/pages/error/src/lib/error.page.component.html","../../components/pages/error/src/mediusinc-mng-commons-layout-components-pages-error.ts"],"sourcesContent":["import {Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from '@openng/optimus-ui/button';\n\nimport {LayoutService} from '@mediusinc/mng-commons-layout';\n\n@Component({\n selector: 'mng-error-page',\n imports: [TranslatePipe, RouterLink, ButtonDirective],\n styleUrls: ['error.page.component.css'],\n templateUrl: './error.page.component.html'\n})\nexport class ErrorPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.error.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAca,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;AAOoB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD,IAAA;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,0ECd/B,siCAiBA,EAAA,MAAA,EAAA,CAAA,g4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDP6B,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,gRAA1C,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAId,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,siCAAA,EAAA,MAAA,EAAA,CAAA,g4BAAA,CAAA,EAAA;;;AEVzD;;AAEG;;"}
@@ -1,6 +1,6 @@
1
1
  import { NgClass, NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, Renderer2, viewChild, signal, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { inject, Renderer2, viewChild, signal, Component } from '@angular/core';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import * as i1 from '@angular/router';
6
6
  import { RouterModule } from '@angular/router';
@@ -82,11 +82,11 @@ class MainLayoutComponent {
82
82
  }
83
83
  }
84
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MainLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MainLayoutComponent, isStandalone: true, selector: "mng-main-layout", viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-expanded': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "component", type: NotificationWrapperComponent, selector: "mng-notification-wrapper" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MainLayoutComponent, isStandalone: true, selector: "mng-main-layout", viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-expanded': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "component", type: NotificationWrapperComponent, selector: "mng-notification-wrapper" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
86
86
  }
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MainLayoutComponent, decorators: [{
88
88
  type: Component,
89
- args: [{ standalone: true, selector: 'mng-main-layout', imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-expanded': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n" }]
89
+ args: [{ standalone: true, selector: 'mng-main-layout', imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet], template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-expanded': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n" }]
90
90
  }], ctorParameters: () => [], propDecorators: { appTopbar: [{ type: i0.ViewChild, args: ['topbarCmp', { isSignal: true }] }] } });
91
91
 
92
92
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-layout-components-pages-main.mjs","sources":["../../components/pages/main/src/lib/main-layout.component.ts","../../components/pages/main/src/lib/main-layout.component.html","../../components/pages/main/src/lib/route-builder.ts","../../components/pages/main/src/mediusinc-mng-commons-layout-components-pages-main.ts"],"sourcesContent":["import {NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {BreadcrumbComponent, FooterComponent, TopbarComponent} from '@mediusinc/mng-commons-layout/components';\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.menuService.reset();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-expanded': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","import {RouteBuilder, createRoute} from '@mediusinc/mng-commons/core';\n\nimport {MainLayoutComponent} from './main-layout.component';\n\n/**\n * Creates a layout route on the specified path.\n *\n * @param {String} path - The path of the route.\n * @return {RouteBuilder} - The route builder for the layout route.\n */\nexport function createLayoutRoute(path: string): RouteBuilder {\n return createRoute(path, MainLayoutComponent);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-layout-components-pages-main.mjs","sources":["../../components/pages/main/src/lib/main-layout.component.ts","../../components/pages/main/src/lib/main-layout.component.html","../../components/pages/main/src/lib/route-builder.ts","../../components/pages/main/src/mediusinc-mng-commons-layout-components-pages-main.ts"],"sourcesContent":["import {NgClass, NgTemplateOutlet} from '@angular/common';\nimport {Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {BreadcrumbComponent, FooterComponent, TopbarComponent} from '@mediusinc/mng-commons-layout/components';\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html'\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.menuService.reset();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-expanded': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","import {RouteBuilder, createRoute} from '@mediusinc/mng-commons/core';\n\nimport {MainLayoutComponent} from './main-layout.component';\n\n/**\n * Creates a layout route on the specified path.\n *\n * @param {String} path - The path of the route.\n * @return {RouteBuilder} - The route builder for the layout route.\n */\nexport function createLayoutRoute(path: string): RouteBuilder {\n return createRoute(path, MainLayoutComponent);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { inject, Component } from '@angular/core';
3
3
  import { RouterLink } from '@angular/router';
4
4
  import { TranslatePipe } from '@ngx-translate/core';
5
5
  import { ButtonDirective } from '@openng/optimus-ui/button';
@@ -10,11 +10,11 @@ class NotFoundPageComponent {
10
10
  this.layout = inject(LayoutService);
11
11
  }
12
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NotFoundPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NotFoundPageComponent, isStandalone: true, selector: "mng-not-found-page", ngImport: i0, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel p{font-size:24px;font-weight:400;max-width:320px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NotFoundPageComponent, isStandalone: true, selector: "mng-not-found-page", ngImport: i0, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel p{font-size:24px;font-weight:400;max-width:320px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NotFoundPageComponent, decorators: [{
16
16
  type: Component,
17
- args: [{ selector: 'mng-not-found-page', imports: [RouterLink, TranslatePipe, ButtonDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel p{font-size:24px;font-weight:400;max-width:320px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"] }]
17
+ args: [{ selector: 'mng-not-found-page', imports: [RouterLink, TranslatePipe, ButtonDirective], template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(#fc6161,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel p{font-size:24px;font-weight:400;max-width:320px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"] }]
18
18
  }] });
19
19
 
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-layout-components-pages-not-found.mjs","sources":["../../components/pages/not-found/src/lib/not-found.page.component.ts","../../components/pages/not-found/src/lib/not-found.page.component.html","../../components/pages/not-found/src/mediusinc-mng-commons-layout-components-pages-not-found.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from '@openng/optimus-ui/button';\n\nimport {LayoutService} from '@mediusinc/mng-commons-layout';\n\n@Component({\n selector: 'mng-not-found-page',\n imports: [RouterLink, TranslatePipe, ButtonDirective],\n styleUrls: ['not-found.page.component.css'],\n templateUrl: './not-found.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAea,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;AAQoB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8ECflC,2mCAkBA,EAAA,MAAA,EAAA,CAAA,u+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRc,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,eAAe,gRAA9B,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACI,oBAAoB,EAAA,OAAA,EACrB,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,eAAA,EAGpC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2mCAAA,EAAA,MAAA,EAAA,CAAA,u+BAAA,CAAA,EAAA;;;AEbnD;;AAEG;;"}
1
+ {"version":3,"file":"mediusinc-mng-commons-layout-components-pages-not-found.mjs","sources":["../../components/pages/not-found/src/lib/not-found.page.component.ts","../../components/pages/not-found/src/lib/not-found.page.component.html","../../components/pages/not-found/src/mediusinc-mng-commons-layout-components-pages-not-found.ts"],"sourcesContent":["import {Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {ButtonDirective} from '@openng/optimus-ui/button';\n\nimport {LayoutService} from '@mediusinc/mng-commons-layout';\n\n@Component({\n selector: 'mng-not-found-page',\n imports: [RouterLink, TranslatePipe, ButtonDirective],\n styleUrls: ['not-found.page.component.css'],\n templateUrl: './not-found.page.component.html'\n})\nexport class NotFoundPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex items-center justify-center flex-col bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex items-center justify-center flex-col\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-4\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAca,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;AAOoB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8ECdlC,2mCAkBA,EAAA,MAAA,EAAA,CAAA,u+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRc,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,eAAe,gRAA9B,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAI1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,2mCAAA,EAAA,MAAA,EAAA,CAAA,u+BAAA,CAAA,EAAA;;;AEVzD;;AAEG;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, DestroyRef, input, signal, computed, ChangeDetectionStrategy, Component, output, viewChild, effect, untracked, ElementRef, HostListener, Injector, Renderer2 } from '@angular/core';
2
+ import { inject, DestroyRef, input, signal, computed, Component, output, viewChild, effect, untracked, ElementRef, HostListener, Injector, Renderer2 } from '@angular/core';
3
3
  import { TranslatePipe, TranslateService } from '@ngx-translate/core';
4
4
  import { VersionService, COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService } from '@mediusinc/mng-commons-layout';
5
5
  import { CommonsConfigurationService, JsonPathPipe, ComponentDirective, CommonsService, PermissionService, toObservable as toObservable$1, NotificationWrapperComponent } from '@mediusinc/mng-commons/core';
@@ -110,11 +110,11 @@ class VersionComponent {
110
110
  });
111
111
  }
112
112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: VersionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: VersionComponent, isStandalone: true, selector: "mng-version", inputs: { versionInput: { classPropertyName: "versionInput", publicName: "version", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (versionAsArray()) {\n @for (v of versionAsArray(); track v; let last = $last) {\n <!-- Bypasses problems with self-importing component -->\n <ng-container [mngComponent]=\"cmp\" [inputs]=\"{version: v}\"></ng-container>\n @if (!last) {\n <br />\n }\n }\n} @else if (displayText()) {\n {{ displayText() }}\n}\n", dependencies: [{ kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: VersionComponent, isStandalone: true, selector: "mng-version", inputs: { versionInput: { classPropertyName: "versionInput", publicName: "version", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (versionAsArray()) {\n @for (v of versionAsArray(); track v; let last = $last) {\n <!-- Bypasses problems with self-importing component -->\n <ng-container [mngComponent]=\"cmp\" [inputs]=\"{version: v}\"></ng-container>\n @if (!last) {\n <br />\n }\n }\n} @else if (displayText()) {\n {{ displayText() }}\n}\n", dependencies: [{ kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }] }); }
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: VersionComponent, decorators: [{
116
116
  type: Component,
117
- args: [{ selector: 'mng-version', imports: [ComponentDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (versionAsArray()) {\n @for (v of versionAsArray(); track v; let last = $last) {\n <!-- Bypasses problems with self-importing component -->\n <ng-container [mngComponent]=\"cmp\" [inputs]=\"{version: v}\"></ng-container>\n @if (!last) {\n <br />\n }\n }\n} @else if (displayText()) {\n {{ displayText() }}\n}\n" }]
117
+ args: [{ selector: 'mng-version', imports: [ComponentDirective], template: "@if (versionAsArray()) {\n @for (v of versionAsArray(); track v; let last = $last) {\n <!-- Bypasses problems with self-importing component -->\n <ng-container [mngComponent]=\"cmp\" [inputs]=\"{version: v}\"></ng-container>\n @if (!last) {\n <br />\n }\n }\n} @else if (displayText()) {\n {{ displayText() }}\n}\n" }]
118
118
  }], ctorParameters: () => [], propDecorators: { versionInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "version", required: false }] }] } });
119
119
 
120
120
  class FooterComponent {
@@ -128,11 +128,11 @@ class FooterComponent {
128
128
  ...(ngDevMode ? [{ debugName: "versionComponent" }] : /* istanbul ignore next */ []));
129
129
  }
130
130
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: FooterComponent, isStandalone: true, selector: "mng-footer", host: { classAttribute: "mt-auto" }, ngImport: i0, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-col\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: FooterComponent, isStandalone: true, selector: "mng-footer", host: { classAttribute: "mt-auto" }, ngImport: i0, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-col\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
132
132
  }
133
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: FooterComponent, decorators: [{
134
134
  type: Component,
135
- args: [{ selector: 'mng-footer', imports: [TranslatePipe, ComponentDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
135
+ args: [{ selector: 'mng-footer', imports: [TranslatePipe, ComponentDirective], host: {
136
136
  class: 'mt-auto'
137
137
  }, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-col\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n" }]
138
138
  }] });
@@ -155,11 +155,11 @@ class BreadcrumbComponent {
155
155
  };
156
156
  }
157
157
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
158
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: BreadcrumbComponent, isStandalone: true, selector: "mng-breadcrumb", host: { classAttribute: "layout-breadcrumb flex items-center relative h-12" }, ngImport: i0, template: "<nav>\n <ol class=\"relative z-20\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n</nav>\n", dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: BreadcrumbComponent, isStandalone: true, selector: "mng-breadcrumb", host: { classAttribute: "layout-breadcrumb flex items-center relative h-12" }, ngImport: i0, template: "<nav>\n <ol class=\"relative z-20\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n</nav>\n", dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
159
159
  }
160
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
161
161
  type: Component,
162
- args: [{ selector: 'mng-breadcrumb', imports: [TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
162
+ args: [{ selector: 'mng-breadcrumb', imports: [TranslatePipe], host: {
163
163
  class: 'layout-breadcrumb flex items-center relative h-12'
164
164
  }, template: "<nav>\n <ol class=\"relative z-20\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n</nav>\n" }]
165
165
  }] });
@@ -294,11 +294,11 @@ class MenuItemComponent {
294
294
  }
295
295
  }
296
296
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
297
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MenuItemComponent, isStandalone: true, selector: "[mng-menuitem]", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class.active-menuitem": "!root() && submenuVisible()", "class.layout-root-menuitem": "root()" } }, providers: [PermissionService], viewQueries: [{ propertyName: "submenuElRef", first: true, predicate: ["submenu"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n [ngClass]=\"item().className\"\n [routerLink]=\"item().routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item().routerLinkActiveOptions || {paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored'}\"\n [fragment]=\"item().fragment\"\n [queryParamsHandling]=\"item().queryParamsHandling\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [state]=\"item().state\"\n [queryParams]=\"item().queryParams\"\n [attr.target]=\"item().target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hrefExternalIcon !== null) {\n <i [ngClass]=\"item().hrefExternalIcon ?? 'pi pi-fw pi-external-link'\" class=\"ml-auto\"></i>\n }\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems() && submenuVisible()) {\n @let isSlimOrSlimPlus = layout.isSlim() || layout.isSlimPlus();\n <ul\n #submenu\n [animate.enter]=\"initialized() && !isSlimOrSlimPlus ? 'p-submenu-enter' : null\"\n [animate.leave]=\"!isSlimOrSlimPlus ? 'p-submenu-leave' : null\"\n [class.layout-root-submenulist]=\"root()\"\n class=\"block!\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n", styles: [".p-submenu-enter{animation:p-animate-submenu-expand .45s cubic-bezier(.86,0,.07,1) forwards;overflow:hidden}.p-submenu-leave{animation:p-animate-submenu-collapse .45s cubic-bezier(.86,0,.07,1) forwards;overflow:hidden}@keyframes p-animate-submenu-collapse{0%{max-height:1000px;overflow:hidden}to{max-height:0;overflow:hidden}}@keyframes p-animate-submenu-expand{0%{max-height:0}to{max-height:1000px}}\n"], dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "root"], outputs: ["visibleChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
297
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MenuItemComponent, isStandalone: true, selector: "[mng-menuitem]", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class.active-menuitem": "!root() && submenuVisible()", "class.layout-root-menuitem": "root()" } }, providers: [PermissionService], viewQueries: [{ propertyName: "submenuElRef", first: true, predicate: ["submenu"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n [ngClass]=\"item().className\"\n [routerLink]=\"item().routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item().routerLinkActiveOptions || {paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored'}\"\n [fragment]=\"item().fragment\"\n [queryParamsHandling]=\"item().queryParamsHandling\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [state]=\"item().state\"\n [queryParams]=\"item().queryParams\"\n [attr.target]=\"item().target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hrefExternalIcon !== null) {\n <i [ngClass]=\"item().hrefExternalIcon ?? 'pi pi-fw pi-external-link'\" class=\"ml-auto\"></i>\n }\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems() && submenuVisible()) {\n @let isSlimOrSlimPlus = layout.isSlim() || layout.isSlimPlus();\n <ul\n #submenu\n [animate.enter]=\"initialized() && !isSlimOrSlimPlus ? 'p-submenu-enter' : null\"\n [animate.leave]=\"!isSlimOrSlimPlus ? 'p-submenu-leave' : null\"\n [class.layout-root-submenulist]=\"root()\"\n class=\"block!\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n", styles: [".p-submenu-enter{animation:p-animate-submenu-expand .45s cubic-bezier(.86,0,.07,1) forwards;overflow:hidden}.p-submenu-leave{animation:p-animate-submenu-collapse .45s cubic-bezier(.86,0,.07,1) forwards;overflow:hidden}@keyframes p-animate-submenu-collapse{0%{max-height:1000px;overflow:hidden}to{max-height:0;overflow:hidden}}@keyframes p-animate-submenu-expand{0%{max-height:0}to{max-height:1000px}}\n"], dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "root"], outputs: ["visibleChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: Ripple, selector: "[pRipple]" }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
298
298
  }
299
299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MenuItemComponent, decorators: [{
300
300
  type: Component,
301
- args: [{ selector: '[mng-menuitem]', imports: [NgClass, RouterModule, TranslatePipe, Ripple, Tooltip], changeDetection: ChangeDetectionStrategy.OnPush, host: {
301
+ args: [{ selector: '[mng-menuitem]', imports: [NgClass, RouterModule, TranslatePipe, Ripple, Tooltip], host: {
302
302
  '[class.active-menuitem]': '!root() && submenuVisible()',
303
303
  '[class.layout-root-menuitem]': 'root()'
304
304
  }, providers: [PermissionService], template: "@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n [ngClass]=\"item().className\"\n [routerLink]=\"item().routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item().routerLinkActiveOptions || {paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored'}\"\n [fragment]=\"item().fragment\"\n [queryParamsHandling]=\"item().queryParamsHandling\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [state]=\"item().state\"\n [queryParams]=\"item().queryParams\"\n [attr.target]=\"item().target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hrefExternalIcon !== null) {\n <i [ngClass]=\"item().hrefExternalIcon ?? 'pi pi-fw pi-external-link'\" class=\"ml-auto\"></i>\n }\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems() && submenuVisible()) {\n @let isSlimOrSlimPlus = layout.isSlim() || layout.isSlimPlus();\n <ul\n #submenu\n [animate.enter]=\"initialized() && !isSlimOrSlimPlus ? 'p-submenu-enter' : null\"\n [animate.leave]=\"!isSlimOrSlimPlus ? 'p-submenu-leave' : null\"\n [class.layout-root-submenulist]=\"root()\"\n class=\"block!\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n", styles: [".p-submenu-enter{animation:p-animate-submenu-expand .45s cubic-bezier(.86,0,.07,1) forwards;overflow:hidden}.p-submenu-leave{animation:p-animate-submenu-collapse .45s cubic-bezier(.86,0,.07,1) forwards;overflow:hidden}@keyframes p-animate-submenu-collapse{0%{max-height:1000px;overflow:hidden}to{max-height:0;overflow:hidden}}@keyframes p-animate-submenu-expand{0%{max-height:0}to{max-height:1000px}}\n"] }]
@@ -327,11 +327,11 @@ class MenuComponent {
327
327
  });
328
328
  }
329
329
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
330
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MenuComponent, isStandalone: true, selector: "mng-menu", ngImport: i0, template: "<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n", dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "root"], outputs: ["visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
330
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MenuComponent, isStandalone: true, selector: "mng-menu", ngImport: i0, template: "<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n", dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "root"], outputs: ["visibleChange"] }] }); }
331
331
  }
332
332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MenuComponent, decorators: [{
333
333
  type: Component,
334
- args: [{ selector: 'mng-menu', imports: [MenuItemComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n" }]
334
+ args: [{ selector: 'mng-menu', imports: [MenuItemComponent], template: "<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n" }]
335
335
  }], ctorParameters: () => [] });
336
336
 
337
337
  class SidebarComponent {
@@ -372,11 +372,11 @@ class SidebarComponent {
372
372
  }));
373
373
  }
374
374
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarComponent, isStandalone: true, selector: "mng-sidebar", host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, classAttribute: "layout-sidebar" }, ngImport: i0, template: "<div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"ml-6 inline-block!\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-20 hover:cursor-pointer\" type=\"button\" (click)=\"anchor()\"></button>\n</div>\n\n@if (menuComponent()) {\n <div class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
375
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarComponent, isStandalone: true, selector: "mng-sidebar", host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, classAttribute: "layout-sidebar" }, ngImport: i0, template: "<div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"ml-6 inline-block!\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-20 hover:cursor-pointer\" type=\"button\" (click)=\"anchor()\"></button>\n</div>\n\n@if (menuComponent()) {\n <div class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }] }); }
376
376
  }
377
377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarComponent, decorators: [{
378
378
  type: Component,
379
- args: [{ selector: 'mng-sidebar', imports: [RouterModule, ComponentDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
379
+ args: [{ selector: 'mng-sidebar', imports: [RouterModule, ComponentDirective], host: {
380
380
  class: 'layout-sidebar'
381
381
  }, template: "<div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"ml-6 inline-block!\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-20 hover:cursor-pointer\" type=\"button\" (click)=\"anchor()\"></button>\n</div>\n\n@if (menuComponent()) {\n <div class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n}\n" }]
382
382
  }], propDecorators: { onMouseEnter: [{
@@ -450,11 +450,11 @@ class SettingsComponent {
450
450
  this.dynamicDialogRef.close();
451
451
  }
452
452
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
453
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SettingsComponent, isStandalone: true, selector: "mng-settings", ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"grow mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"flex\">\n @if (commons.appLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-select>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-select [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-select>\n </div>\n }\n </div>\n }\n\n <h5 class=\"mt-2\">{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"flex\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5 class=\"mt-2\">{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"grid grid-cols-12\">\n @for (mode of menuModes; track mode) {\n <div class=\"mb-2 col-span-6 md:col-span-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: RadioButton, selector: "p-radioButton, p-radiobutton, p-radio-button", inputs: ["value", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "styleClass", "autofocus", "binary", "variant", "size"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SelectButton, selector: "p-selectButton, p-selectbutton, p-select-button", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "styleClass", "ariaLabelledBy", "dataKey", "autofocus", "size", "fluid"], outputs: ["onOptionClick", "onChange"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
453
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SettingsComponent, isStandalone: true, selector: "mng-settings", ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"grow mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"flex\">\n @if (commons.appLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-select>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-select [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-select>\n </div>\n }\n </div>\n }\n\n <h5 class=\"mt-2\">{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"flex\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5 class=\"mt-2\">{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"grid grid-cols-12\">\n @for (mode of menuModes; track mode) {\n <div class=\"mb-2 col-span-6 md:col-span-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: RadioButton, selector: "p-radioButton, p-radiobutton, p-radio-button", inputs: ["value", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "styleClass", "autofocus", "binary", "variant", "size"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SelectButton, selector: "p-selectButton, p-selectbutton, p-select-button", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "styleClass", "ariaLabelledBy", "dataKey", "autofocus", "size", "fluid"], outputs: ["onOptionClick", "onChange"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
454
454
  }
455
455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SettingsComponent, decorators: [{
456
456
  type: Component,
457
- args: [{ selector: 'mng-settings', imports: [TranslatePipe, RadioButton, FormsModule, Button, SelectButton, Select], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full flex flex-col\">\n <div class=\"grow mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"flex\">\n @if (commons.appLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-select>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-select [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-select>\n </div>\n }\n </div>\n }\n\n <h5 class=\"mt-2\">{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"flex\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5 class=\"mt-2\">{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"grid grid-cols-12\">\n @for (mode of menuModes; track mode) {\n <div class=\"mb-2 col-span-6 md:col-span-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n" }]
457
+ args: [{ selector: 'mng-settings', imports: [TranslatePipe, RadioButton, FormsModule, Button, SelectButton, Select], template: "<div class=\"h-full flex flex-col\">\n <div class=\"grow mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"flex\">\n @if (commons.appLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-select>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-select [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-select>\n </div>\n }\n </div>\n }\n\n <h5 class=\"mt-2\">{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"flex\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5 class=\"mt-2\">{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"grid grid-cols-12\">\n @for (mode of menuModes; track mode) {\n <div class=\"mb-2 col-span-6 md:col-span-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n" }]
458
458
  }], ctorParameters: () => [] });
459
459
 
460
460
  class TopbarUserComponent {
@@ -491,11 +491,11 @@ class TopbarUserComponent {
491
491
  });
492
492
  }
493
493
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TopbarUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
494
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: TopbarUserComponent, isStandalone: true, selector: "mng-topbar-user-component", ngImport: i0, template: "<a\n [hideOnOutsideClick]=\"true\"\n class=\"cursor-pointer\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span>&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu p-6! w-60 z-50 hidden! rounded\">\n <li role=\"menuitem\" class=\"m-0! mb-4!\">\n <a\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n", dependencies: [{ kind: "directive", type: StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: TopbarUserComponent, isStandalone: true, selector: "mng-topbar-user-component", ngImport: i0, template: "<a\n [hideOnOutsideClick]=\"true\"\n class=\"cursor-pointer\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span>&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu p-6! w-60 z-50 hidden! rounded\">\n <li role=\"menuitem\" class=\"m-0! mb-4!\">\n <a\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n", dependencies: [{ kind: "directive", type: StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
495
495
  }
496
496
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TopbarUserComponent, decorators: [{
497
497
  type: Component,
498
- args: [{ selector: 'mng-topbar-user-component', imports: [TranslatePipe, StyleClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [hideOnOutsideClick]=\"true\"\n class=\"cursor-pointer\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span>&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu p-6! w-60 z-50 hidden! rounded\">\n <li role=\"menuitem\" class=\"m-0! mb-4!\">\n <a\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n" }]
498
+ args: [{ selector: 'mng-topbar-user-component', imports: [TranslatePipe, StyleClass], template: "<a\n [hideOnOutsideClick]=\"true\"\n class=\"cursor-pointer\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span>&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu p-6! w-60 z-50 hidden! rounded\">\n <li role=\"menuitem\" class=\"m-0! mb-4!\">\n <a\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n" }]
499
499
  }] });
500
500
 
501
501
  class TopbarComponent {
@@ -516,11 +516,11 @@ class TopbarComponent {
516
516
  this.commons.setAppLocale(language);
517
517
  }
518
518
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
519
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: TopbarComponent, isStandalone: true, selector: "mng-topbar", host: { classAttribute: "layout-topbar" }, ngImport: i0, template: "<div class=\"topbar-start\">\n <button #menubutton pButton type=\"button\" class=\"topbar-menubutton p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n<div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n</div>\n<div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"topbar-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\" appendTo=\"body\" />\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-8\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n</div>\n", dependencies: [{ kind: "component", type: SidebarComponent, selector: "mng-sidebar" }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
519
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: TopbarComponent, isStandalone: true, selector: "mng-topbar", host: { classAttribute: "layout-topbar" }, ngImport: i0, template: "<div class=\"topbar-start\">\n <button #menubutton pButton type=\"button\" class=\"topbar-menubutton p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n<div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n</div>\n<div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"topbar-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\" appendTo=\"body\" />\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-8\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n</div>\n", dependencies: [{ kind: "component", type: SidebarComponent, selector: "mng-sidebar" }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }] }); }
520
520
  }
521
521
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TopbarComponent, decorators: [{
522
522
  type: Component,
523
- args: [{ selector: 'mng-topbar', imports: [SidebarComponent, StyleClassModule, ComponentDirective, FormsModule, Select, ButtonDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
523
+ args: [{ selector: 'mng-topbar', imports: [SidebarComponent, StyleClassModule, ComponentDirective, FormsModule, Select, ButtonDirective], host: {
524
524
  class: 'layout-topbar'
525
525
  }, template: "<div class=\"topbar-start\">\n <button #menubutton pButton type=\"button\" class=\"topbar-menubutton p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n<div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n</div>\n<div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"topbar-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\" appendTo=\"body\" />\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-8\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n</div>\n" }]
526
526
  }] });
@@ -599,11 +599,11 @@ class MainLayoutComponent {
599
599
  }
600
600
  }
601
601
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MainLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
602
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MainLayoutComponent, isStandalone: true, selector: "mng-main-layout", viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "component", type: NotificationWrapperComponent, selector: "mng-notification-wrapper" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
602
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: MainLayoutComponent, isStandalone: true, selector: "mng-main-layout", viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "component", type: NotificationWrapperComponent, selector: "mng-notification-wrapper" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
603
603
  }
604
604
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: MainLayoutComponent, decorators: [{
605
605
  type: Component,
606
- args: [{ selector: 'mng-main-layout', imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n" }]
606
+ args: [{ selector: 'mng-main-layout', imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet], template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n" }]
607
607
  }], ctorParameters: () => [], propDecorators: { appTopbar: [{ type: i0.ViewChild, args: ['topbarCmp', { isSignal: true }] }] } });
608
608
 
609
609
  // components
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-layout-components.mjs","sources":["../../components/src/lib/components/version.component.ts","../../components/src/lib/components/version.component.html","../../components/src/lib/components/footer.component.ts","../../components/src/lib/components/footer.component.html","../../components/src/lib/components/breadcrumb.component.ts","../../components/src/lib/components/breadcrumb.component.html","../../components/src/lib/components/menu-item.component.ts","../../components/src/lib/components/menu-item.component.html","../../components/src/lib/components/menu.component.ts","../../components/src/lib/components/menu.component.html","../../components/src/lib/components/sidebar.component.ts","../../components/src/lib/components/sidebar.component.html","../../components/src/lib/components/settings.component.ts","../../components/src/lib/components/settings.component.html","../../components/src/lib/components/topbar-user.component.ts","../../components/src/lib/components/topbar-user.component.html","../../components/src/lib/components/topbar.component.ts","../../components/src/lib/components/topbar.component.html","../../components/src/lib/components/main-layout.component.ts","../../components/src/lib/components/main-layout.component.html","../../components/src/index.ts","../../components/src/mediusinc-mng-commons-layout-components.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, DestroyRef, computed, inject, input, signal} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\nimport {catchError, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {VersionService} from '@mediusinc/mng-commons-layout';\nimport {CommonsConfigurationService, ComponentDirective, JsonPathPipe, VersionConfig, VersionConfigType, VersionInfo} from '@mediusinc/mng-commons/core';\n\n@Component({\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionComponent {\n protected readonly cmp = VersionComponent;\n\n private readonly versionService = inject(VersionService);\n private readonly configService = inject(CommonsConfigurationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly jsonPathPipe = new JsonPathPipe();\n\n public readonly versionInput = input<VersionConfigType>(undefined, {alias: 'version'});\n\n public readonly isLoading = signal<boolean>(false);\n private readonly loadedVersion = signal<VersionInfo | string | undefined>(undefined);\n\n public versionAsArray = computed<Array<VersionConfig> | undefined>(() => {\n if (Array.isArray(this.versionInput())) {\n return this.versionInput() as Array<VersionConfig>;\n }\n return undefined;\n });\n\n private readonly versionInfo = computed(() => {\n if (this.versionAsArray() !== undefined) {\n return undefined; // Each version will be processed separately in child component\n }\n const initVersion = this.versionInput();\n if (typeof initVersion === 'string') {\n return initVersion;\n } else if (typeof initVersion !== 'undefined' && !Array.isArray(initVersion)) {\n const source = initVersion.source;\n switch (source) {\n case 'config':\n return this.configService.getConfigValue<string | VersionInfo>(initVersion.configKey);\n case 'httpResource':\n return this.loadedVersion();\n case 'info':\n return initVersion.info;\n default:\n return initVersion;\n }\n }\n return undefined;\n });\n\n private readonly versionAsString = computed(() => {\n const versionInfo = this.versionInfo();\n if (versionInfo == null) {\n return undefined;\n } else if (typeof versionInfo === 'string') {\n return versionInfo;\n } else {\n return versionInfo.raw;\n }\n });\n\n private readonly displayName = computed(() => (this.versionInput() as VersionConfig | undefined)?.displayName);\n\n public readonly displayText = computed(\n () => `${this.displayName() ?? ''}${this.displayName() && this.versionAsString() ? ': ' : ''}${!this.isLoading() ? (this.versionAsString() ?? '') : ''}`\n );\n\n constructor() {\n toObservable(this.versionInput)\n .pipe(\n catchError(() => of(undefined)),\n switchMap(version => {\n if (typeof version !== 'undefined' && !Array.isArray(version)) {\n const config = version as VersionConfig;\n if (config.source === 'httpResource') {\n this.isLoading.set(true);\n const infoJsonPath = config.infoJsonPath;\n return this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).pipe(\n take(1),\n map(res => ({res, infoJsonPath}))\n );\n }\n }\n return of({res: undefined, infoJsonPath: undefined});\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: ({res, infoJsonPath}) => {\n if (typeof res !== 'undefined') {\n this.loadedVersion.set(this.jsonPathPipe.transform(res, infoJsonPath ?? '$'));\n } else {\n this.loadedVersion.set(undefined);\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.loadedVersion.set('');\n this.isLoading.set(false);\n }\n });\n }\n}\n","@if (versionAsArray()) {\n @for (v of versionAsArray(); track v; let last = $last) {\n <!-- Bypasses problems with self-importing component -->\n <ng-container [mngComponent]=\"cmp\" [inputs]=\"{version: v}\"></ng-container>\n @if (!last) {\n <br />\n }\n }\n} @else if (displayText()) {\n {{ displayText() }}\n}\n","import {ChangeDetectionStrategy, Component, Type, inject, signal} from '@angular/core';\n\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {VersionComponent} from './version.component';\n\n@Component({\n selector: 'mng-footer',\n templateUrl: 'footer.component.html',\n imports: [TranslatePipe, ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mt-auto'\n }\n})\nexport class FooterComponent {\n private config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public commons = inject(CommonsService);\n\n public currentYear = signal(new Date().getFullYear());\n public versionComponent = signal<Type<any> | undefined>(this.config?.components?.version === false ? undefined : (this.config?.components?.version ?? VersionComponent));\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-col\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {MenuItem} from '@openng/optimus-ui/api';\n\nimport {CommonsMenuItem, CommonsService} from '@mediusinc/mng-commons/core';\n\n@Component({\n selector: 'mng-breadcrumb',\n imports: [TranslatePipe],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'layout-breadcrumb flex items-center relative h-12'\n }\n})\nexport class BreadcrumbComponent {\n private commons = inject(CommonsService);\n\n public mappedBreadcrumbs = computed(() => {\n const items: CommonsMenuItem[] = this.commons.breadcrumbs();\n return items.map(el => this.mapMenuItem(el));\n });\n\n private mapMenuItem(item: CommonsMenuItem): MenuItem {\n return {\n ...item,\n url: item.href,\n badgeStyleClass: item.badgeClassName,\n styleClass: item.className\n };\n }\n}\n","<nav>\n <ol class=\"relative z-20\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n</nav>\n","import {NgClass} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, computed, effect, inject, input, output, signal, viewChild} from '@angular/core';\nimport {toObservable as ngToObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Ripple} from '@openng/optimus-ui/ripple';\nimport {Tooltip} from '@openng/optimus-ui/tooltip';\nimport {distinctUntilChanged, of, switchMap} from 'rxjs';\n\nimport {LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {InternalCommonsMenuItem, PermissionService, toObservable} from '@mediusinc/mng-commons/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RouterModule, TranslatePipe, Ripple, Tooltip],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n .p-submenu-enter {\n animation: p-animate-submenu-expand 450ms cubic-bezier(0.86, 0, 0.07, 1) forwards;\n overflow: hidden;\n }\n\n .p-submenu-leave {\n animation: p-animate-submenu-collapse 450ms cubic-bezier(0.86, 0, 0.07, 1) forwards;\n overflow: hidden;\n }\n\n @keyframes p-animate-submenu-collapse {\n from {\n max-height: 1000px;\n overflow: hidden;\n }\n to {\n max-height: 0;\n overflow: hidden;\n }\n }\n\n @keyframes p-animate-submenu-expand {\n from {\n max-height: 0;\n }\n to {\n max-height: 1000px;\n }\n }\n `\n ],\n host: {\n '[class.active-menuitem]': '!root() && submenuVisible()',\n '[class.layout-root-menuitem]': 'root()'\n },\n providers: [PermissionService]\n})\nexport class MenuItemComponent implements AfterViewInit {\n private readonly menuService = inject(MenuService);\n private readonly permissionService = inject(PermissionService);\n public readonly layout = inject(LayoutService);\n\n public item = input.required<InternalCommonsMenuItem>();\n public root = input(false);\n public visibleChange = output<boolean>();\n\n private submenuElRef = viewChild<ElementRef>('submenu');\n\n public isPermitted = toSignal(ngToObservable(this.item).pipe(switchMap(i => (i.permissions ? this.permissionService.isMenuItemVisible(i.permissions, i.config) : of(true)))));\n public isVisibleFromItemSettings = toSignal(\n ngToObservable(this.item).pipe(switchMap(i => (typeof i.isVisible === 'function' ? toObservable(i.isVisible(i.config)) : of(i.isVisible ?? true))))\n );\n private menuChangeEvents = toSignal(this.menuService.menuChange$.pipe(distinctUntilChanged((v1, v2) => v1.key === v2.key)));\n public active = computed(() => {\n if (!this.isPermitted()) {\n return false;\n }\n const menuChangeEvent = this.menuChangeEvents();\n if (menuChangeEvent) {\n return menuChangeEvent.eventType === 'reset' || !menuChangeEvent.key\n ? false\n : this.item().key === menuChangeEvent.key || menuChangeEvent.key.startsWith((this.item().key ?? '') + '-');\n }\n return false;\n });\n public visible = computed(() => {\n const isPermitted = this.isPermitted();\n if (!isPermitted) {\n return false;\n }\n if (!this.isVisibleFromItemSettings()) {\n return false;\n }\n const items = this.item().items();\n if (\n Array.isArray(items) &&\n items.length > 0 &&\n this.item()\n .itemsVisibility()\n .every(v => !v())\n ) {\n return false;\n }\n return true;\n });\n protected isTooltipDisabled = computed(() => !(this.layout.isSlim() && this.root() && !this.active()));\n protected initialized = signal<boolean>(false);\n private menuHoverActive = computed(() => this.layout.state().menuHoverActive);\n\n protected submenuVisible = computed(() => {\n if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n return this.layout.submenuOverlayKey() === this.item().key;\n } else {\n return this.root() || this.active();\n }\n });\n\n constructor() {\n effect(() => {\n if (this.root() && this.submenuVisible() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);\n }\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initialized.set(true);\n });\n }\n\n public itemClick(event: Event) {\n const item = this.item();\n // avoid processing disabled items\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n if (item.hasItemsOrLazyChildren()) {\n // open submenu in slim/slim+ mode\n if (this.root() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.layout.onOverlaySubmenuOpen(item.key);\n }\n } else {\n if (this.layout.isMobile()) {\n this.layout.state.update(state => ({\n ...state,\n staticMenuMobileActive: false\n }));\n }\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: false\n }));\n }\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: InternalCommonsMenuItem, idx: number) {\n this.item().itemsVisibility()[idx]?.set(visible);\n }\n\n protected onMouseEnter() {\n if (this.layout.isDesktop() && this.root() && this.item().hasItemsOrLazyChildren() && this.menuHoverActive() && !this.active()) {\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: true\n }));\n }\n }\n\n private calculatePosition(overlay: HTMLElement, target: HTMLElement) {\n if (overlay) {\n const top = target.getBoundingClientRect().top;\n const vHeight = window.innerHeight;\n const oHeight = overlay.offsetHeight;\n\n // reset\n overlay.style.top = '';\n overlay.style.left = '';\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n const height = top + oHeight;\n overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;\n }\n }\n }\n}\n","@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n [ngClass]=\"item().className\"\n [routerLink]=\"item().routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item().routerLinkActiveOptions || {paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored'}\"\n [fragment]=\"item().fragment\"\n [queryParamsHandling]=\"item().queryParamsHandling\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [state]=\"item().state\"\n [queryParams]=\"item().queryParams\"\n [attr.target]=\"item().target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hrefExternalIcon !== null) {\n <i [ngClass]=\"item().hrefExternalIcon ?? 'pi pi-fw pi-external-link'\" class=\"ml-auto\"></i>\n }\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems() && submenuVisible()) {\n @let isSlimOrSlimPlus = layout.isSlim() || layout.isSlimPlus();\n <ul\n #submenu\n [animate.enter]=\"initialized() && !isSlimOrSlimPlus ? 'p-submenu-enter' : null\"\n [animate.leave]=\"!isSlimOrSlimPlus ? 'p-submenu-leave' : null\"\n [class.layout-root-submenulist]=\"root()\"\n class=\"block!\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n","import {ChangeDetectionStrategy, Component, effect, inject, untracked} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {CommonsMenuItem, CommonsRouteData} from '@mediusinc/mng-commons/core';\n\nimport {MenuItemComponent} from './menu-item.component';\n\n@Component({\n selector: 'mng-menu',\n imports: [MenuItemComponent],\n templateUrl: './menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MenuComponent {\n private readonly route = inject(ActivatedRoute);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly layout = inject(LayoutService);\n public readonly menuService = inject(MenuService);\n\n public routeData = toSignal(this.route.data);\n\n constructor() {\n effect(() => {\n let items: CommonsMenuItem[] = [];\n if (this.config?.menuItems && Array.isArray(this.config.menuItems)) {\n items = this.config.menuItems;\n } else if (Array.isArray((this.routeData() as CommonsRouteData | undefined)?.menuItems)) {\n items = (this.routeData() as CommonsRouteData).menuItems!;\n }\n // Wraps menu items\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n items = [{items}];\n }\n\n untracked(() => this.menuService.setItems(items));\n });\n }\n}\n","<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n","import {ChangeDetectionStrategy, Component, ElementRef, HostListener, Type, inject, signal} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {MenuComponent} from './menu.component';\n\n@Component({\n selector: 'mng-sidebar',\n imports: [RouterModule, ComponentDirective],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'layout-sidebar'\n }\n})\nexport class SidebarComponent {\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public readonly el = inject(ElementRef);\n\n public menuComponent = signal<Type<any> | undefined>(this.config?.components?.menu === false ? undefined : (this.config?.components?.menu ?? MenuComponent));\n private timeout: ReturnType<typeof setTimeout> | null = null;\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (!this.layout.state().anchored) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: true\n }));\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (!this.layout.state().anchored) {\n if (!this.timeout) {\n this.timeout = setTimeout(\n () =>\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: false\n })),\n 300\n );\n }\n }\n }\n\n anchor() {\n this.layout.state.update(state => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n}\n","<div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"ml-6 inline-block!\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-20 hover:cursor-pointer\" type=\"button\" (click)=\"anchor()\"></button>\n</div>\n\n@if (menuComponent()) {\n <div class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n}\n","import {ChangeDetectionStrategy, Component, Injector, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {Button} from '@openng/optimus-ui/button';\nimport {DynamicDialogConfig, DynamicDialogRef} from '@openng/optimus-ui/dynamicdialog';\nimport {RadioButton} from '@openng/optimus-ui/radiobutton';\nimport {Select} from '@openng/optimus-ui/select';\nimport {SelectButton} from '@openng/optimus-ui/selectbutton';\n\nimport {LayoutMenuMode, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {ColorScheme, CommonsService} from '@mediusinc/mng-commons/core';\n\ninterface ColorSchemeOption {\n value: ColorScheme;\n label: string;\n}\n\nconst defaultColorSchemeOpts: ColorSchemeOption[] = [\n {\n value: 'auto',\n label: 'system'\n },\n {\n value: 'light',\n label: 'light'\n },\n {\n value: 'dark',\n label: 'dark'\n }\n];\n\n@Component({\n selector: 'mng-settings',\n imports: [TranslatePipe, RadioButton, FormsModule, Button, SelectButton, Select],\n templateUrl: './settings.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsComponent {\n private readonly dynamicDialogConfig = inject(DynamicDialogConfig);\n private readonly dynamicDialogRef = inject(DynamicDialogRef);\n public readonly injector: Injector;\n public readonly translate;\n public readonly commons;\n public readonly layout;\n\n public readonly menuModes;\n\n public colorSchemeOptions = signal(defaultColorSchemeOpts);\n\n constructor() {\n this.injector = this.dynamicDialogConfig.data.injector;\n this.translate = this.injector.get(TranslateService);\n this.commons = this.injector.get(CommonsService);\n this.layout = this.injector.get(LayoutService);\n this.menuModes = this.layout.menuModes;\n\n this.translate\n .stream('mngSettings.title')\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n setTimeout(() => (this.dynamicDialogConfig.header = t));\n });\n\n const translateKey = 'mngSettings.colorScheme.options';\n this.translate\n .stream(translateKey)\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n if (t === translateKey) {\n this.colorSchemeOptions.set(defaultColorSchemeOpts);\n } else {\n this.colorSchemeOptions.update(options =>\n options.map(o => ({\n value: o.value,\n label: `${t[o.value]}`\n }))\n );\n }\n });\n }\n\n switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n\n switchDataLocale(language: string) {\n this.commons.setAppDataLocale(language);\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n this.layout.onMenuModeChange(mode);\n }\n\n onColorSchemeChange(scheme: ColorScheme) {\n this.layout.setColorScheme(scheme);\n }\n\n closeDialog() {\n this.dynamicDialogRef.close();\n }\n}\n","<div class=\"h-full flex flex-col\">\n <div class=\"grow mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"flex\">\n @if (commons.appLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-select>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-select [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-select>\n </div>\n }\n </div>\n }\n\n <h5 class=\"mt-2\">{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"flex\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5 class=\"mt-2\">{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"grid grid-cols-12\">\n @for (mode of menuModes; track mode) {\n <div class=\"mb-2 col-span-6 md:col-span-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, Injector, computed, inject, signal} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {DialogService} from '@openng/optimus-ui/dynamicdialog';\nimport {StyleClass} from '@openng/optimus-ui/styleclass';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '@mediusinc/mng-commons-layout';\nimport {CommonsService, IUser} from '@mediusinc/mng-commons/core';\n\nimport {SettingsComponent} from './settings.component';\n\n@Component({\n selector: 'mng-topbar-user-component',\n imports: [TranslatePipe, StyleClass],\n templateUrl: './topbar-user.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarUserComponent {\n private readonly injector = inject(Injector);\n private readonly dialogService = inject(DialogService);\n private readonly commons = inject(CommonsService);\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public user = computed<IUser | undefined>(() => this.commons.user());\n public userRoles = computed<string[]>(() => this.commons.userRoles());\n\n public settingsDisabled = signal(this.config?.components?.settings === false);\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n\n public openSettings() {\n if (this.config?.components?.settings === false) {\n return;\n }\n\n this.dialogService.open(this.config?.components?.settings ?? SettingsComponent, {\n modal: true,\n styleClass: 'mng-dialog mng-action-editor-dialog mng-dialog-xs',\n data: {\n injector: this.injector\n }\n });\n }\n}\n","<a\n [hideOnOutsideClick]=\"true\"\n class=\"cursor-pointer\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span>&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu p-6! w-60 z-50 hidden! rounded\">\n <li role=\"menuitem\" class=\"m-0! mb-4!\">\n <a\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n","import {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonDirective} from '@openng/optimus-ui/button';\nimport {Select} from '@openng/optimus-ui/select';\nimport {StyleClassModule} from '@openng/optimus-ui/styleclass';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {SidebarComponent} from './sidebar.component';\nimport {TopbarUserComponent} from './topbar-user.component';\n\n@Component({\n selector: 'mng-topbar',\n imports: [SidebarComponent, StyleClassModule, ComponentDirective, FormsModule, Select, ButtonDirective],\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'layout-topbar'\n }\n})\nexport class TopbarComponent {\n public readonly el = inject(ElementRef);\n public readonly commons = inject(CommonsService);\n public readonly layout = inject(LayoutService);\n protected readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public topbarUserComponent = signal<Type<any> | undefined>(\n this.config?.components?.topbarUser === false ? undefined : (this.config?.components?.topbarUser ?? TopbarUserComponent)\n );\n public breadcrumbComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n\n public onMenuButtonClick() {\n this.layout.onMenuToggle();\n }\n\n public switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n}\n","<div class=\"topbar-start\">\n <button #menubutton pButton type=\"button\" class=\"topbar-menubutton p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n<div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n</div>\n<div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"topbar-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\" appendTo=\"body\" />\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-8\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n</div>\n","import {NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {FooterComponent} from './footer.component';\nimport {TopbarComponent} from './topbar.component';\n\n@Component({\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.menuService.reset();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","// components\nexport * from './lib/components/footer.component';\nexport * from './lib/components/breadcrumb.component';\nexport * from './lib/components/main-layout.component';\nexport * from './lib/components/menu.component';\nexport * from './lib/components/menu-item.component';\nexport * from './lib/components/settings.component';\nexport * from './lib/components/sidebar.component';\nexport * from './lib/components/topbar.component';\nexport * from './lib/components/topbar-user.component';\nexport * from './lib/components/version.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ngToObservable","toObservable","i1"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-layout-components.mjs","sources":["../../components/src/lib/components/version.component.ts","../../components/src/lib/components/version.component.html","../../components/src/lib/components/footer.component.ts","../../components/src/lib/components/footer.component.html","../../components/src/lib/components/breadcrumb.component.ts","../../components/src/lib/components/breadcrumb.component.html","../../components/src/lib/components/menu-item.component.ts","../../components/src/lib/components/menu-item.component.html","../../components/src/lib/components/menu.component.ts","../../components/src/lib/components/menu.component.html","../../components/src/lib/components/sidebar.component.ts","../../components/src/lib/components/sidebar.component.html","../../components/src/lib/components/settings.component.ts","../../components/src/lib/components/settings.component.html","../../components/src/lib/components/topbar-user.component.ts","../../components/src/lib/components/topbar-user.component.html","../../components/src/lib/components/topbar.component.ts","../../components/src/lib/components/topbar.component.html","../../components/src/lib/components/main-layout.component.ts","../../components/src/lib/components/main-layout.component.html","../../components/src/index.ts","../../components/src/mediusinc-mng-commons-layout-components.ts"],"sourcesContent":["import {Component, DestroyRef, computed, inject, input, signal} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\nimport {catchError, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {VersionService} from '@mediusinc/mng-commons-layout';\nimport {CommonsConfigurationService, ComponentDirective, JsonPathPipe, VersionConfig, VersionConfigType, VersionInfo} from '@mediusinc/mng-commons/core';\n\n@Component({\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [ComponentDirective]\n})\nexport class VersionComponent {\n protected readonly cmp = VersionComponent;\n\n private readonly versionService = inject(VersionService);\n private readonly configService = inject(CommonsConfigurationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly jsonPathPipe = new JsonPathPipe();\n\n public readonly versionInput = input<VersionConfigType>(undefined, {alias: 'version'});\n\n public readonly isLoading = signal<boolean>(false);\n private readonly loadedVersion = signal<VersionInfo | string | undefined>(undefined);\n\n public versionAsArray = computed<Array<VersionConfig> | undefined>(() => {\n if (Array.isArray(this.versionInput())) {\n return this.versionInput() as Array<VersionConfig>;\n }\n return undefined;\n });\n\n private readonly versionInfo = computed(() => {\n if (this.versionAsArray() !== undefined) {\n return undefined; // Each version will be processed separately in child component\n }\n const initVersion = this.versionInput();\n if (typeof initVersion === 'string') {\n return initVersion;\n } else if (typeof initVersion !== 'undefined' && !Array.isArray(initVersion)) {\n const source = initVersion.source;\n switch (source) {\n case 'config':\n return this.configService.getConfigValue<string | VersionInfo>(initVersion.configKey);\n case 'httpResource':\n return this.loadedVersion();\n case 'info':\n return initVersion.info;\n default:\n return initVersion;\n }\n }\n return undefined;\n });\n\n private readonly versionAsString = computed(() => {\n const versionInfo = this.versionInfo();\n if (versionInfo == null) {\n return undefined;\n } else if (typeof versionInfo === 'string') {\n return versionInfo;\n } else {\n return versionInfo.raw;\n }\n });\n\n private readonly displayName = computed(() => (this.versionInput() as VersionConfig | undefined)?.displayName);\n\n public readonly displayText = computed(\n () => `${this.displayName() ?? ''}${this.displayName() && this.versionAsString() ? ': ' : ''}${!this.isLoading() ? (this.versionAsString() ?? '') : ''}`\n );\n\n constructor() {\n toObservable(this.versionInput)\n .pipe(\n catchError(() => of(undefined)),\n switchMap(version => {\n if (typeof version !== 'undefined' && !Array.isArray(version)) {\n const config = version as VersionConfig;\n if (config.source === 'httpResource') {\n this.isLoading.set(true);\n const infoJsonPath = config.infoJsonPath;\n return this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).pipe(\n take(1),\n map(res => ({res, infoJsonPath}))\n );\n }\n }\n return of({res: undefined, infoJsonPath: undefined});\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: ({res, infoJsonPath}) => {\n if (typeof res !== 'undefined') {\n this.loadedVersion.set(this.jsonPathPipe.transform(res, infoJsonPath ?? '$'));\n } else {\n this.loadedVersion.set(undefined);\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.loadedVersion.set('');\n this.isLoading.set(false);\n }\n });\n }\n}\n","@if (versionAsArray()) {\n @for (v of versionAsArray(); track v; let last = $last) {\n <!-- Bypasses problems with self-importing component -->\n <ng-container [mngComponent]=\"cmp\" [inputs]=\"{version: v}\"></ng-container>\n @if (!last) {\n <br />\n }\n }\n} @else if (displayText()) {\n {{ displayText() }}\n}\n","import {Component, Type, inject, signal} from '@angular/core';\n\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {VersionComponent} from './version.component';\n\n@Component({\n selector: 'mng-footer',\n templateUrl: 'footer.component.html',\n imports: [TranslatePipe, ComponentDirective],\n host: {\n class: 'mt-auto'\n }\n})\nexport class FooterComponent {\n private config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public commons = inject(CommonsService);\n\n public currentYear = signal(new Date().getFullYear());\n public versionComponent = signal<Type<any> | undefined>(this.config?.components?.version === false ? undefined : (this.config?.components?.version ?? VersionComponent));\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-col\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n","import {Component, computed, inject} from '@angular/core';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {MenuItem} from '@openng/optimus-ui/api';\n\nimport {CommonsMenuItem, CommonsService} from '@mediusinc/mng-commons/core';\n\n@Component({\n selector: 'mng-breadcrumb',\n imports: [TranslatePipe],\n templateUrl: './breadcrumb.component.html',\n host: {\n class: 'layout-breadcrumb flex items-center relative h-12'\n }\n})\nexport class BreadcrumbComponent {\n private commons = inject(CommonsService);\n\n public mappedBreadcrumbs = computed(() => {\n const items: CommonsMenuItem[] = this.commons.breadcrumbs();\n return items.map(el => this.mapMenuItem(el));\n });\n\n private mapMenuItem(item: CommonsMenuItem): MenuItem {\n return {\n ...item,\n url: item.href,\n badgeStyleClass: item.badgeClassName,\n styleClass: item.className\n };\n }\n}\n","<nav>\n <ol class=\"relative z-20\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n</nav>\n","import {NgClass} from '@angular/common';\nimport {AfterViewInit, Component, ElementRef, computed, effect, inject, input, output, signal, viewChild} from '@angular/core';\nimport {toObservable as ngToObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Ripple} from '@openng/optimus-ui/ripple';\nimport {Tooltip} from '@openng/optimus-ui/tooltip';\nimport {distinctUntilChanged, of, switchMap} from 'rxjs';\n\nimport {LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {InternalCommonsMenuItem, PermissionService, toObservable} from '@mediusinc/mng-commons/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RouterModule, TranslatePipe, Ripple, Tooltip],\n styles: [\n `\n .p-submenu-enter {\n animation: p-animate-submenu-expand 450ms cubic-bezier(0.86, 0, 0.07, 1) forwards;\n overflow: hidden;\n }\n\n .p-submenu-leave {\n animation: p-animate-submenu-collapse 450ms cubic-bezier(0.86, 0, 0.07, 1) forwards;\n overflow: hidden;\n }\n\n @keyframes p-animate-submenu-collapse {\n from {\n max-height: 1000px;\n overflow: hidden;\n }\n to {\n max-height: 0;\n overflow: hidden;\n }\n }\n\n @keyframes p-animate-submenu-expand {\n from {\n max-height: 0;\n }\n to {\n max-height: 1000px;\n }\n }\n `\n ],\n host: {\n '[class.active-menuitem]': '!root() && submenuVisible()',\n '[class.layout-root-menuitem]': 'root()'\n },\n providers: [PermissionService]\n})\nexport class MenuItemComponent implements AfterViewInit {\n private readonly menuService = inject(MenuService);\n private readonly permissionService = inject(PermissionService);\n public readonly layout = inject(LayoutService);\n\n public item = input.required<InternalCommonsMenuItem>();\n public root = input(false);\n public visibleChange = output<boolean>();\n\n private submenuElRef = viewChild<ElementRef>('submenu');\n\n public isPermitted = toSignal(ngToObservable(this.item).pipe(switchMap(i => (i.permissions ? this.permissionService.isMenuItemVisible(i.permissions, i.config) : of(true)))));\n public isVisibleFromItemSettings = toSignal(\n ngToObservable(this.item).pipe(switchMap(i => (typeof i.isVisible === 'function' ? toObservable(i.isVisible(i.config)) : of(i.isVisible ?? true))))\n );\n private menuChangeEvents = toSignal(this.menuService.menuChange$.pipe(distinctUntilChanged((v1, v2) => v1.key === v2.key)));\n public active = computed(() => {\n if (!this.isPermitted()) {\n return false;\n }\n const menuChangeEvent = this.menuChangeEvents();\n if (menuChangeEvent) {\n return menuChangeEvent.eventType === 'reset' || !menuChangeEvent.key\n ? false\n : this.item().key === menuChangeEvent.key || menuChangeEvent.key.startsWith((this.item().key ?? '') + '-');\n }\n return false;\n });\n public visible = computed(() => {\n const isPermitted = this.isPermitted();\n if (!isPermitted) {\n return false;\n }\n if (!this.isVisibleFromItemSettings()) {\n return false;\n }\n const items = this.item().items();\n if (\n Array.isArray(items) &&\n items.length > 0 &&\n this.item()\n .itemsVisibility()\n .every(v => !v())\n ) {\n return false;\n }\n return true;\n });\n protected isTooltipDisabled = computed(() => !(this.layout.isSlim() && this.root() && !this.active()));\n protected initialized = signal<boolean>(false);\n private menuHoverActive = computed(() => this.layout.state().menuHoverActive);\n\n protected submenuVisible = computed(() => {\n if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n return this.layout.submenuOverlayKey() === this.item().key;\n } else {\n return this.root() || this.active();\n }\n });\n\n constructor() {\n effect(() => {\n if (this.root() && this.submenuVisible() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);\n }\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initialized.set(true);\n });\n }\n\n public itemClick(event: Event) {\n const item = this.item();\n // avoid processing disabled items\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n if (item.hasItemsOrLazyChildren()) {\n // open submenu in slim/slim+ mode\n if (this.root() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.layout.onOverlaySubmenuOpen(item.key);\n }\n } else {\n if (this.layout.isMobile()) {\n this.layout.state.update(state => ({\n ...state,\n staticMenuMobileActive: false\n }));\n }\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: false\n }));\n }\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: InternalCommonsMenuItem, idx: number) {\n this.item().itemsVisibility()[idx]?.set(visible);\n }\n\n protected onMouseEnter() {\n if (this.layout.isDesktop() && this.root() && this.item().hasItemsOrLazyChildren() && this.menuHoverActive() && !this.active()) {\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: true\n }));\n }\n }\n\n private calculatePosition(overlay: HTMLElement, target: HTMLElement) {\n if (overlay) {\n const top = target.getBoundingClientRect().top;\n const vHeight = window.innerHeight;\n const oHeight = overlay.offsetHeight;\n\n // reset\n overlay.style.top = '';\n overlay.style.left = '';\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n const height = top + oHeight;\n overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;\n }\n }\n }\n}\n","@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n [ngClass]=\"item().className\"\n [routerLink]=\"item().routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item().routerLinkActiveOptions || {paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored'}\"\n [fragment]=\"item().fragment\"\n [queryParamsHandling]=\"item().queryParamsHandling\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [state]=\"item().state\"\n [queryParams]=\"item().queryParams\"\n [attr.target]=\"item().target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item().label | translate\"\n [tooltipDisabled]=\"isTooltipDisabled()\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\">\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hrefExternalIcon !== null) {\n <i [ngClass]=\"item().hrefExternalIcon ?? 'pi pi-fw pi-external-link'\" class=\"ml-auto\"></i>\n }\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems() && submenuVisible()) {\n @let isSlimOrSlimPlus = layout.isSlim() || layout.isSlimPlus();\n <ul\n #submenu\n [animate.enter]=\"initialized() && !isSlimOrSlimPlus ? 'p-submenu-enter' : null\"\n [animate.leave]=\"!isSlimOrSlimPlus ? 'p-submenu-leave' : null\"\n [class.layout-root-submenulist]=\"root()\"\n class=\"block!\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n","import {Component, effect, inject, untracked} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {CommonsMenuItem, CommonsRouteData} from '@mediusinc/mng-commons/core';\n\nimport {MenuItemComponent} from './menu-item.component';\n\n@Component({\n selector: 'mng-menu',\n imports: [MenuItemComponent],\n templateUrl: './menu.component.html'\n})\nexport class MenuComponent {\n private readonly route = inject(ActivatedRoute);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly layout = inject(LayoutService);\n public readonly menuService = inject(MenuService);\n\n public routeData = toSignal(this.route.data);\n\n constructor() {\n effect(() => {\n let items: CommonsMenuItem[] = [];\n if (this.config?.menuItems && Array.isArray(this.config.menuItems)) {\n items = this.config.menuItems;\n } else if (Array.isArray((this.routeData() as CommonsRouteData | undefined)?.menuItems)) {\n items = (this.routeData() as CommonsRouteData).menuItems!;\n }\n // Wraps menu items\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n items = [{items}];\n }\n\n untracked(() => this.menuService.setItems(items));\n });\n }\n}\n","<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n","import {Component, ElementRef, HostListener, Type, inject, signal} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {MenuComponent} from './menu.component';\n\n@Component({\n selector: 'mng-sidebar',\n imports: [RouterModule, ComponentDirective],\n templateUrl: './sidebar.component.html',\n host: {\n class: 'layout-sidebar'\n }\n})\nexport class SidebarComponent {\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public readonly el = inject(ElementRef);\n\n public menuComponent = signal<Type<any> | undefined>(this.config?.components?.menu === false ? undefined : (this.config?.components?.menu ?? MenuComponent));\n private timeout: ReturnType<typeof setTimeout> | null = null;\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (!this.layout.state().anchored) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: true\n }));\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (!this.layout.state().anchored) {\n if (!this.timeout) {\n this.timeout = setTimeout(\n () =>\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: false\n })),\n 300\n );\n }\n }\n }\n\n anchor() {\n this.layout.state.update(state => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n}\n","<div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"inline-block!\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"ml-6 inline-block!\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-20 hover:cursor-pointer\" type=\"button\" (click)=\"anchor()\"></button>\n</div>\n\n@if (menuComponent()) {\n <div class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n}\n","import {Component, Injector, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {Button} from '@openng/optimus-ui/button';\nimport {DynamicDialogConfig, DynamicDialogRef} from '@openng/optimus-ui/dynamicdialog';\nimport {RadioButton} from '@openng/optimus-ui/radiobutton';\nimport {Select} from '@openng/optimus-ui/select';\nimport {SelectButton} from '@openng/optimus-ui/selectbutton';\n\nimport {LayoutMenuMode, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {ColorScheme, CommonsService} from '@mediusinc/mng-commons/core';\n\ninterface ColorSchemeOption {\n value: ColorScheme;\n label: string;\n}\n\nconst defaultColorSchemeOpts: ColorSchemeOption[] = [\n {\n value: 'auto',\n label: 'system'\n },\n {\n value: 'light',\n label: 'light'\n },\n {\n value: 'dark',\n label: 'dark'\n }\n];\n\n@Component({\n selector: 'mng-settings',\n imports: [TranslatePipe, RadioButton, FormsModule, Button, SelectButton, Select],\n templateUrl: './settings.component.html'\n})\nexport class SettingsComponent {\n private readonly dynamicDialogConfig = inject(DynamicDialogConfig);\n private readonly dynamicDialogRef = inject(DynamicDialogRef);\n public readonly injector: Injector;\n public readonly translate;\n public readonly commons;\n public readonly layout;\n\n public readonly menuModes;\n\n public colorSchemeOptions = signal(defaultColorSchemeOpts);\n\n constructor() {\n this.injector = this.dynamicDialogConfig.data.injector;\n this.translate = this.injector.get(TranslateService);\n this.commons = this.injector.get(CommonsService);\n this.layout = this.injector.get(LayoutService);\n this.menuModes = this.layout.menuModes;\n\n this.translate\n .stream('mngSettings.title')\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n setTimeout(() => (this.dynamicDialogConfig.header = t));\n });\n\n const translateKey = 'mngSettings.colorScheme.options';\n this.translate\n .stream(translateKey)\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n if (t === translateKey) {\n this.colorSchemeOptions.set(defaultColorSchemeOpts);\n } else {\n this.colorSchemeOptions.update(options =>\n options.map(o => ({\n value: o.value,\n label: `${t[o.value]}`\n }))\n );\n }\n });\n }\n\n switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n\n switchDataLocale(language: string) {\n this.commons.setAppDataLocale(language);\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n this.layout.onMenuModeChange(mode);\n }\n\n onColorSchemeChange(scheme: ColorScheme) {\n this.layout.setColorScheme(scheme);\n }\n\n closeDialog() {\n this.dynamicDialogRef.close();\n }\n}\n","<div class=\"h-full flex flex-col\">\n <div class=\"grow mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"flex\">\n @if (commons.appLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-select>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"mb-2 pr-6\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-select [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-select>\n </div>\n }\n </div>\n }\n\n <h5 class=\"mt-2\">{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"flex\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5 class=\"mt-2\">{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"grid grid-cols-12\">\n @for (mode of menuModes; track mode) {\n <div class=\"mb-2 col-span-6 md:col-span-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n","import {Component, Injector, computed, inject, signal} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {DialogService} from '@openng/optimus-ui/dynamicdialog';\nimport {StyleClass} from '@openng/optimus-ui/styleclass';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '@mediusinc/mng-commons-layout';\nimport {CommonsService, IUser} from '@mediusinc/mng-commons/core';\n\nimport {SettingsComponent} from './settings.component';\n\n@Component({\n selector: 'mng-topbar-user-component',\n imports: [TranslatePipe, StyleClass],\n templateUrl: './topbar-user.component.html'\n})\nexport class TopbarUserComponent {\n private readonly injector = inject(Injector);\n private readonly dialogService = inject(DialogService);\n private readonly commons = inject(CommonsService);\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public user = computed<IUser | undefined>(() => this.commons.user());\n public userRoles = computed<string[]>(() => this.commons.userRoles());\n\n public settingsDisabled = signal(this.config?.components?.settings === false);\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n\n public openSettings() {\n if (this.config?.components?.settings === false) {\n return;\n }\n\n this.dialogService.open(this.config?.components?.settings ?? SettingsComponent, {\n modal: true,\n styleClass: 'mng-dialog mng-action-editor-dialog mng-dialog-xs',\n data: {\n injector: this.injector\n }\n });\n }\n}\n","<a\n [hideOnOutsideClick]=\"true\"\n class=\"cursor-pointer\"\n pStyleClass=\"@next\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span>&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu p-6! w-60 z-50 hidden! rounded\">\n <li role=\"menuitem\" class=\"m-0! mb-4!\">\n <a\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\" class=\"m-0!\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex items-center hover:text-primary-500 duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"hidden!\"\n enterActiveClass=\"animate-scalein\"\n leaveToClass=\"hidden!\"\n leaveActiveClass=\"animate-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n","import {Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonDirective} from '@openng/optimus-ui/button';\nimport {Select} from '@openng/optimus-ui/select';\nimport {StyleClassModule} from '@openng/optimus-ui/styleclass';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService} from '@mediusinc/mng-commons-layout';\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {SidebarComponent} from './sidebar.component';\nimport {TopbarUserComponent} from './topbar-user.component';\n\n@Component({\n selector: 'mng-topbar',\n imports: [SidebarComponent, StyleClassModule, ComponentDirective, FormsModule, Select, ButtonDirective],\n templateUrl: './topbar.component.html',\n host: {\n class: 'layout-topbar'\n }\n})\nexport class TopbarComponent {\n public readonly el = inject(ElementRef);\n public readonly commons = inject(CommonsService);\n public readonly layout = inject(LayoutService);\n protected readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public topbarUserComponent = signal<Type<any> | undefined>(\n this.config?.components?.topbarUser === false ? undefined : (this.config?.components?.topbarUser ?? TopbarUserComponent)\n );\n public breadcrumbComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n\n public onMenuButtonClick() {\n this.layout.onMenuToggle();\n }\n\n public switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n}\n","<div class=\"topbar-start\">\n <button #menubutton pButton type=\"button\" class=\"topbar-menubutton p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n<div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n</div>\n<div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"topbar-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-select [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\" appendTo=\"body\" />\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-8\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n</div>\n","import {NgClass, NgTemplateOutlet} from '@angular/common';\nimport {Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {FooterComponent} from './footer.component';\nimport {TopbarComponent} from './topbar.component';\n\n@Component({\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html'\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.menuService.reset();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","// components\nexport * from './lib/components/footer.component';\nexport * from './lib/components/breadcrumb.component';\nexport * from './lib/components/main-layout.component';\nexport * from './lib/components/menu.component';\nexport * from './lib/components/menu-item.component';\nexport * from './lib/components/settings.component';\nexport * from './lib/components/sidebar.component';\nexport * from './lib/components/topbar.component';\nexport * from './lib/components/topbar-user.component';\nexport * from './lib/components/version.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ngToObservable","toObservable","i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-layout",
3
- "version": "8.0.0-rc.0",
3
+ "version": "8.0.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^22.1.0",
6
6
  "@angular/core": "^22.1.0",
7
7
  "@angular/forms": "^22.1.0",
8
8
  "@angular/platform-browser": "^22.1.0",
9
9
  "@angular/router": "^22.1.0",
10
+ "@mediusinc/mng-commons": "~8.0.0-rc.2",
10
11
  "@ngx-translate/core": "^18.0.0",
11
- "@openng/optimus-ui": "^2.0.0",
12
- "@mediusinc/mng-commons": "~8.0.0-rc.0"
12
+ "@openng/optimus-ui": "^2.0.0"
13
13
  },
14
14
  "dependencies": {
15
15
  "tslib": "^2.8.1"