@mediusinc/mng-commons-layout 5.4.0-rc.4 → 5.4.0-rc.6
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.
- package/esm2022/lib/components/main-layout.component.mjs +7 -2
- package/esm2022/lib/components/menu-item.component.mjs +17 -15
- package/esm2022/lib/services/layout.service.mjs +11 -2
- package/fesm2022/mediusinc-mng-commons-layout.mjs +32 -16
- package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
- package/lib/components/menu-item.component.d.ts +3 -2
- package/lib/services/layout.service.d.ts +3 -1
- package/package.json +2 -2
- package/version-info.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-layout.mjs","sources":["../../src/lib/services/layout-feature-config.token.ts","../../src/lib/services/layout.service.ts","../../src/lib/components/pages/error/error.page.component.ts","../../src/lib/components/pages/error/error.page.component.html","../../src/lib/components/pages/not-found/not-found.page.component.ts","../../src/lib/components/pages/not-found/not-found.page.component.html","../../src/lib/services/version.service.ts","../../src/lib/components/version.component.ts","../../src/lib/components/version.component.html","../../src/lib/components/footer.component.ts","../../src/lib/components/footer.component.html","../../src/lib/components/breadcrumb.component.ts","../../src/lib/components/breadcrumb.component.html","../../src/lib/helpers/menu-items.ts","../../src/lib/services/menu.service.ts","../../src/lib/components/menu-item.component.ts","../../src/lib/components/menu-item.component.html","../../src/lib/components/menu.component.ts","../../src/lib/components/menu.component.html","../../src/lib/components/sidebar.component.ts","../../src/lib/components/sidebar.component.html","../../src/lib/components/settings.component.ts","../../src/lib/components/settings.component.html","../../src/lib/components/topbar-user.component.ts","../../src/lib/components/topbar-user.component.html","../../src/lib/components/topbar.component.ts","../../src/lib/components/topbar.component.html","../../src/lib/components/main-layout.component.ts","../../src/lib/components/main-layout.component.html","../../src/lib/helpers/route-builder.ts","../../src/lib/provide.ts","../../src/index.ts","../../src/mediusinc-mng-commons-layout.ts"],"sourcesContent":["import {InjectionToken, Type} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\n\nexport type LayoutMenuMode = 'static' | 'overlay' | 'reveal' | 'drawer' | 'slim' | 'slim-plus';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\n/**\n * Set of configurations for layout customization.\n */\nexport interface LayoutFeatureConfig {\n /**\n * Choose default menu mode.\n */\n menuMode?: LayoutMenuMode;\n /**\n * Sets available menu modes.\n */\n menuModes?: LayoutMenuMode[];\n /**\n * Predefines menu modes (instead of taking them from route data config).\n */\n menuItems?: MenuItem[];\n /**\n * Logo path (usually icon part only).\n */\n logoPath?: string;\n /**\n * Logo path for light color mode (usually icon part only).\n */\n logoPathLight?: string;\n /**\n * Logo path for dark color mode (usually icon part only).\n */\n logoPathDark?: string;\n /**\n * Logo path (usually name part only).\n */\n logoNamePath?: string;\n /**\n * Logo path for light color mode (usually name part only).\n */\n logoNamePathLight?: string;\n /**\n * Logo path for dark color mode (usually name part only).\n */\n logoNamePathDark?: string;\n /**\n * Default color scheme (defaults to 'auto').\n */\n colorScheme?: ColorScheme;\n /**\n * Enable ripple effect.\n */\n ripple?: boolean;\n /**\n * Disables wrapping layout in notification wrapper.\n */\n disableNotificationWrapper?: boolean;\n /**\n * Set custom components instead of default layout's one. If false provided for component, then it will not be displayed.\n */\n components?: {\n /**\n * Specify custom topbar component or disable (if false).\n */\n topbar?: Type<any> | false;\n /**\n * Specify custom menu component or disable (if false).\n */\n menu?: Type<any> | false;\n /**\n * Specify custom footer component or disable (if false).\n */\n footer?: Type<any> | false;\n /**\n * Specify custom breadcrumb component or disable (if false).\n */\n breadcrumb?: Type<any> | false;\n /**\n * Specify custom topbarUser component or disable (if false).\n */\n topbarUser?: Type<any> | false;\n /**\n * Specify custom version component or disable (if false).\n */\n version?: Type<any> | false;\n /**\n * Specify custom settings component or disable (if false).\n */\n settings?: Type<any> | false;\n };\n}\n\nexport const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken<LayoutFeatureConfig>('COMMONS_LAYOUT_FEATURE_CONFIG');\n","import {DOCUMENT} from '@angular/common';\nimport {Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {COMMONS_MODULE_CONFIG_IT, CommonsStorageService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutState} from '../models/layout-state.model';\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, ColorScheme, LayoutMenuMode} from './layout-feature-config.token';\n\n@Injectable()\nexport class LayoutService {\n private readonly typeName = 'MainLayoutComponentService';\n private readonly storageMenuModeKey = 'menuMode';\n private readonly storageColorSchemeKey = 'colorScheme';\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly storageService = inject(CommonsStorageService);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n // color scheme\n private _colorSchemeSetting = signal(this.getInitColorScheme());\n public colorSchemeSetting = this._colorSchemeSetting.asReadonly();\n private _colorScheme = signal<Exclude<ColorScheme, 'system'>>(this.getInitActualColorScheme(this.colorSchemeSetting()));\n public colorScheme = this._colorScheme.asReadonly();\n public colorSchemeIsLight = computed(() => this._colorScheme() === 'light');\n\n private getInitColorScheme(): ColorScheme {\n let colorScheme = this.storageService.getItem<ColorScheme>(this.typeName, this.storageColorSchemeKey);\n if (colorScheme == null || !(['dark', 'light', 'auto'] as ColorScheme[]).includes(colorScheme)) {\n colorScheme = this.getDefaultColorScheme();\n }\n return colorScheme;\n }\n\n private getInitActualColorScheme(colorScheme: ColorScheme): Exclude<ColorScheme, 'system'> {\n if (colorScheme === 'auto') {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n return colorScheme;\n }\n }\n\n private getDefaultColorScheme(): ColorScheme {\n return this.config?.colorScheme ?? this.commonsConfig?.app?.colorScheme ?? 'auto';\n }\n\n public setColorScheme(scheme: ColorScheme) {\n const defaultColorScheme = this.getDefaultColorScheme();\n if (scheme === defaultColorScheme) {\n this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);\n }\n this._colorSchemeSetting.set(scheme);\n this._colorScheme.set(this.getInitActualColorScheme(scheme));\n }\n\n // menu mode\n public readonly menuModes: LayoutMenuMode[] = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];\n private _menuMode = signal(this.initMenuMode());\n public menuMode = this._menuMode.asReadonly();\n\n // logos\n private appLogoLight = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathLight ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n private appLogoDark = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathDark ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n private appLogoNameLight = signal(\n this.config?.logoNamePathLight ??\n this.commonsConfig?.app?.logoNamePathLight ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n private appLogoNameDark = signal(\n this.config?.logoNamePathDark ??\n this.commonsConfig?.app?.logoNamePathDark ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n // overlays\n public isOverlay = computed(() => this.menuMode() === 'overlay');\n public isSlim = computed(() => this.menuMode() === 'slim');\n public isSlimPlus = computed(() => this.menuMode() === 'slim-plus');\n\n constructor() {\n afterNextRender(() => {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n if (this.colorSchemeSetting() === 'auto') {\n const newColorScheme = event.matches ? 'dark' : 'light';\n this._colorScheme.set(newColorScheme);\n }\n });\n });\n\n effect(() => {\n const colorScheme = this._colorScheme();\n const linkElement = this.document.getElementById('app-theme') as HTMLLinkElement | undefined;\n if (colorScheme === 'dark' && linkElement?.href.includes('light')) {\n linkElement.href = 'theme-dark.css';\n } else if (colorScheme === 'light' && linkElement?.href.includes('dark')) {\n linkElement.href = 'theme-light.css';\n }\n });\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n if (!this.menuModes.includes(mode)) {\n return;\n }\n if (mode === this.config?.menuMode) {\n this.storageService.removeItem(this.typeName, this.storageMenuModeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);\n }\n this._menuMode.set(mode);\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen() {\n this.overlayOpen.next(null);\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n private initMenuMode(): LayoutMenuMode {\n const lsMode = this.storageService.getItem<LayoutMenuMode>(this.typeName, this.storageMenuModeKey);\n if (lsMode && this.menuModes.includes(lsMode)) {\n return lsMode;\n }\n return this.config?.menuMode ?? 'static';\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\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 align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\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 <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\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 align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\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 align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {CommonsConfigurationService, LoggerService} from '@mediusinc/mng-commons/core';\n\n@Injectable()\nexport class VersionService {\n private readonly logger = inject(LoggerService).create('VersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: CommonsConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {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 {JsonPathPipe, VersionConfig, VersionConfigType, VersionInfo} from '@mediusinc/mng-commons/core';\n\nimport {VersionService} from '../services/version.service';\n\n@Component({\n standalone: true,\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionComponent {\n private readonly versionService = inject(VersionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly jsonPathPipe = new JsonPathPipe();\n\n public initVersion = input<VersionConfigType>(undefined, {alias: 'version'});\n\n public isLoading = signal<boolean>(false);\n private loadedVersion = signal<VersionConfigType | undefined>(undefined);\n\n public displayVersion = computed<string | undefined>(() => {\n if (typeof this.initVersion() === 'string') {\n return this.initVersion();\n } else if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n if (typeof this.loadedVersion() !== 'undefined') {\n return this.loadedVersion();\n } else if (this.initVersion()!['info' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion() as VersionInfo;\n return this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n return;\n });\n\n public versions = computed<Array<VersionConfig> | undefined>(() => {\n if (Array.isArray(this.initVersion())) {\n return this.initVersion() as Array<VersionConfig>;\n }\n return;\n });\n\n public displayName = computed<string | undefined>(() => {\n if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return config.displayName;\n }\n }\n return;\n });\n\n constructor() {\n toObservable(this.initVersion)\n .pipe(\n catchError(() => of(undefined)),\n switchMap(version => {\n if (typeof version !== 'undefined' && (version['info' as keyof object] || version['urlPath' as keyof object])) {\n const config = version as VersionConfig;\n if (config.urlPath) {\n this.isLoading.set(true);\n return this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).pipe(\n take(1),\n map(res => ({res, config}))\n );\n }\n }\n return of({res: undefined, config: undefined});\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: ({res, config}) => {\n if (typeof res !== 'undefined' && typeof config !== 'undefined') {\n this.loadedVersion.set(this.jsonPathPipe.transform(res, config.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 (versions()) {\n @for (v of versions(); track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br />\n }\n }\n} @else {\n @if (displayName()) {{{ displayName() }}}\n @if (displayName() && displayVersion()) {: }\n @if (!isLoading()) {{{ displayVersion() }}}\n}\n","import {NgOptimizedImage} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Type, inject, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {VersionComponent} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-footer',\n templateUrl: 'footer.component.html',\n imports: [TranslateModule, NgOptimizedImage, VersionComponent, ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\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 <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">© {{ 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 {TranslateModule} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\n\nimport {CommonsMenuItem, CommonsService} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb',\n imports: [TranslateModule],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\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","<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\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</div>\n","import {computed, signal} from '@angular/core';\n\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '@mediusinc/mng-commons/core';\n\nexport function prepareMenuItemsToInternal(menuItems: CommonsMenuItem[], parentKey = ''): InternalCommonsMenuItem[] {\n const newItems = menuItems.map((item, idx) => {\n const itemsProp = signal<InternalCommonsMenuItem[]>([]);\n const lazyChildrenProp = signal(item.lazyChildren ?? false);\n const hasItemsProp = computed(() => itemsProp().length > 0);\n const newItem: InternalCommonsMenuItem = {\n ...item,\n isVisible: typeof item.isVisible !== 'undefined' ? item.isVisible : item.visible,\n key: parentKey ? parentKey + '-' + idx : idx.toString(),\n config: item,\n items: itemsProp,\n lazyChildren: lazyChildrenProp,\n itemsVisibility: signal([]),\n hasItems: hasItemsProp,\n hasItemsOrLazyChildren: computed(() => lazyChildrenProp() || hasItemsProp())\n };\n\n if (Array.isArray(item.items) && item.items.length > 0) {\n newItem.items.set(prepareMenuItemsToInternal(item.items, newItem.key));\n newItem.itemsVisibility.set(newItem.items()?.map(() => signal(true)));\n }\n\n return newItem;\n });\n\n return newItems;\n}\n","import {DestroyRef, Injectable, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subscription, startWith, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {\n CommonsMenuItem,\n CommonsRouteData,\n CommonsRouterService,\n InternalCommonsMenuItem,\n LoggerService,\n adjustRouteMenuLazyChildrenRouterLinks,\n doesUrlMatchRouterLink\n} from '@mediusinc/mng-commons/core';\n\nimport {prepareMenuItemsToInternal} from '../helpers/menu-items';\nimport {MenuChangeEvent} from '../models/menu.model';\n\n@Injectable()\nexport class MenuService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly logger = LoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly commonsRouter = inject(CommonsRouterService);\n\n private _menuItems = signal<InternalCommonsMenuItem[]>([]);\n public menuItems = this._menuItems.asReadonly();\n\n private readonly menuChangeSubject = new ReplaySubject<MenuChangeEvent>(1);\n menuChange$ = this.menuChangeSubject.asObservable();\n\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n setItems(menuItems: Array<CommonsMenuItem>) {\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this._menuItems.set(prepareMenuItemsToInternal(menuItems));\n this.appendListenersToLazyChildren(this._menuItems());\n\n this.router.events;\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter(event => event instanceof NavigationEnd),\n map(e => e as NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(e => {\n this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects);\n });\n }\n\n private appendListenersToLazyChildren(menuItems: InternalCommonsMenuItem[]) {\n menuItems.forEach(item => {\n if (item.lazyChildren()) {\n this.listenToMenuItemLazyChildrenLoad(item);\n } else if (item.items()) {\n this.appendListenersToLazyChildren(item.items());\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems(), url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuChangeSubject.next({\n key: matchKey,\n eventType: 'routeChange'\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: InternalCommonsMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.commonsRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n const menuItemsFromRoutes = routes\n .filter(r => Array.isArray((r.data as CommonsRouteData | undefined)?.menuItems))\n .flatMap(r => (r.data as CommonsRouteData).menuItems!);\n const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);\n\n menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));\n this.appendListenersToLazyChildren(menuItem.items());\n menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));\n menuItem.lazyChildren.set(false);\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<InternalCommonsMenuItem>, url: string): InternalCommonsMenuItem[][] {\n const matches: InternalCommonsMenuItem[][] = [];\n for (const menuItem of menuItems) {\n const chidldren = menuItem.items();\n if (menuItem.routerLink) {\n const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.menuChangeSubject.next({\n eventType: 'reset'\n });\n }\n}\n","import {AnimationEvent, animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, computed, effect, inject, input, output, viewChild} from '@angular/core';\nimport {toObservable as ngToObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {distinctUntilChanged, of, switchMap} from 'rxjs';\n\nimport {InternalCommonsMenuItem, PermissionService, toObservable} from '@mediusinc/mng-commons/core';\n\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RippleModule, TooltipModule, RouterModule, TranslateModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('children', [\n state(\n 'collapsed',\n style({\n height: '0'\n })\n ),\n state(\n 'expanded',\n style({\n height: '*'\n })\n ),\n state(\n 'hidden',\n style({\n display: 'none'\n })\n ),\n state(\n 'visible',\n style({\n display: 'block'\n })\n ),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ],\n host: {\n '[class.active-menuitem]': '!root() && active()',\n '[class.layout-root-menuitem]': 'root()'\n },\n providers: [PermissionService]\n})\nexport class MenuItemComponent {\n private readonly menuService = inject(MenuService);\n private readonly permissionService = inject(PermissionService);\n private 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\n constructor() {\n effect(() => {\n if (this.root() && this.active() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);\n }\n });\n }\n\n get submenuAnimation() {\n if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n return this.active() ? 'visible' : 'hidden';\n } else {\n return this.root() ? 'expanded' : this.active() ? 'expanded' : 'collapsed';\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 // toggle active state\n if (item.hasItemsOrLazyChildren()) {\n if ((this.root() || this.active()) && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.layout.onOverlaySubmenuOpen();\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.menuService.reset();\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: false\n }));\n }\n }\n }\n\n onSubmenuAnimated(event: AnimationEvent) {\n if (event.toState === 'visible' && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n const el = <HTMLUListElement>event.element;\n const elParent = <HTMLUListElement>el.parentElement;\n this.calculatePosition(el, elParent);\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: InternalCommonsMenuItem, idx: number) {\n this.item().itemsVisibility()[idx]?.set(visible);\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 (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? ''\"\n pRipple>\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 [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [queryParams]=\"item().queryParams\"\n pRipple>\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 ?? ''\" pRipple>\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 }\n @if (item().hasItems()) {\n <ul #submenu [@children]=\"submenuAnimation\" (@children.done)=\"onSubmenuAnimated($event)\">\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 {CommonsMenuItem, CommonsRouteData} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {MenuItemComponent} from './menu-item.component';\n\n@Component({\n standalone: true,\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, Type, inject, signal} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuComponent} from './menu.component';\n\n@Component({\n standalone: true,\n selector: 'mng-sidebar',\n imports: [RouterModule, MenuComponent, ComponentDirective],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\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 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 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=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n <img [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n </div>\n <div class=\"app-logo-normal\">\n <img class=\"h-2rem\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n <img class=\"h-2rem ml-3\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent()) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, Injector, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {SelectButtonModule} from 'primeng/selectbutton';\n\nimport {ColorScheme, CommonsService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutMenuMode} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\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 standalone: true,\n selector: 'mng-settings',\n imports: [TranslateModule, RadioButtonModule, FormsModule, Button, DropdownModule, InputSwitchModule, SelectButtonModule],\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-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\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>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-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-content-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 {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Injector, computed, inject, signal} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DialogService} from 'primeng/dynamicdialog';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, EnumerateAsyncPipe, IUser} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {SettingsComponent} from './settings.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component',\n imports: [AsyncPipe, EnumerateAsyncPipe, TranslateModule, RippleModule, StyleClassModule],\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 class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\"> {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-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\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-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\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-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 {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonModule} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {SidebarComponent} from './sidebar.component';\nimport {TopbarUserComponent} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar',\n imports: [SidebarComponent, NgClass, ButtonModule, StyleClassModule, RippleModule, BreadcrumbComponent, AsyncPipe, DropdownModule, ComponentDirective, FormsModule],\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarComponent {\n public readonly el = inject(ElementRef);\n public readonly commons = inject(CommonsService);\n public readonly layout = inject(LayoutService);\n private 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=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link 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=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n","import {AsyncPipe, 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 {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {FooterComponent} from './footer.component';\nimport {TopbarComponent} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, TopbarComponent, BreadcrumbComponent, ComponentDirective, AsyncPipe, 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 this.menuService.reset();\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-container\"\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 #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 '../components/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","import {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutFeatureConfig} from './services/layout-feature-config.token';\nimport {LayoutService} from './services/layout.service';\nimport {MenuService} from './services/menu.service';\nimport {VersionService} from './services/version.service';\n\n/**\n * Prepares providers for usage of the layout functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withLayout(config?: LayoutFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Layout,\n providers: [\n MenuService,\n VersionService,\n LayoutService,\n {\n provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,\n useValue: config\n }\n ]\n };\n}\n","// components\nexport * from './lib/components/pages/error/error.page.component';\nexport * from './lib/components/pages/not-found/not-found.page.component';\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// helpers\nexport * from './lib/helpers/route-builder';\n\n// models\nexport * from './lib/models/layout-state.model';\nexport * from './lib/models/menu.model';\n\n// services\nexport * from './lib/services/layout-feature-config.token';\nexport * from './lib/services/layout.service';\nexport * from './lib/services/menu.service';\nexport * from './lib/services/version.service';\n\n// provide\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","ngToObservable","toObservable","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-layout.mjs","sources":["../../src/lib/services/layout-feature-config.token.ts","../../src/lib/services/layout.service.ts","../../src/lib/components/pages/error/error.page.component.ts","../../src/lib/components/pages/error/error.page.component.html","../../src/lib/components/pages/not-found/not-found.page.component.ts","../../src/lib/components/pages/not-found/not-found.page.component.html","../../src/lib/services/version.service.ts","../../src/lib/components/version.component.ts","../../src/lib/components/version.component.html","../../src/lib/components/footer.component.ts","../../src/lib/components/footer.component.html","../../src/lib/components/breadcrumb.component.ts","../../src/lib/components/breadcrumb.component.html","../../src/lib/helpers/menu-items.ts","../../src/lib/services/menu.service.ts","../../src/lib/components/menu-item.component.ts","../../src/lib/components/menu-item.component.html","../../src/lib/components/menu.component.ts","../../src/lib/components/menu.component.html","../../src/lib/components/sidebar.component.ts","../../src/lib/components/sidebar.component.html","../../src/lib/components/settings.component.ts","../../src/lib/components/settings.component.html","../../src/lib/components/topbar-user.component.ts","../../src/lib/components/topbar-user.component.html","../../src/lib/components/topbar.component.ts","../../src/lib/components/topbar.component.html","../../src/lib/components/main-layout.component.ts","../../src/lib/components/main-layout.component.html","../../src/lib/helpers/route-builder.ts","../../src/lib/provide.ts","../../src/index.ts","../../src/mediusinc-mng-commons-layout.ts"],"sourcesContent":["import {InjectionToken, Type} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\n\nexport type LayoutMenuMode = 'static' | 'overlay' | 'reveal' | 'drawer' | 'slim' | 'slim-plus';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\n/**\n * Set of configurations for layout customization.\n */\nexport interface LayoutFeatureConfig {\n /**\n * Choose default menu mode.\n */\n menuMode?: LayoutMenuMode;\n /**\n * Sets available menu modes.\n */\n menuModes?: LayoutMenuMode[];\n /**\n * Predefines menu modes (instead of taking them from route data config).\n */\n menuItems?: MenuItem[];\n /**\n * Logo path (usually icon part only).\n */\n logoPath?: string;\n /**\n * Logo path for light color mode (usually icon part only).\n */\n logoPathLight?: string;\n /**\n * Logo path for dark color mode (usually icon part only).\n */\n logoPathDark?: string;\n /**\n * Logo path (usually name part only).\n */\n logoNamePath?: string;\n /**\n * Logo path for light color mode (usually name part only).\n */\n logoNamePathLight?: string;\n /**\n * Logo path for dark color mode (usually name part only).\n */\n logoNamePathDark?: string;\n /**\n * Default color scheme (defaults to 'auto').\n */\n colorScheme?: ColorScheme;\n /**\n * Enable ripple effect.\n */\n ripple?: boolean;\n /**\n * Disables wrapping layout in notification wrapper.\n */\n disableNotificationWrapper?: boolean;\n /**\n * Set custom components instead of default layout's one. If false provided for component, then it will not be displayed.\n */\n components?: {\n /**\n * Specify custom topbar component or disable (if false).\n */\n topbar?: Type<any> | false;\n /**\n * Specify custom menu component or disable (if false).\n */\n menu?: Type<any> | false;\n /**\n * Specify custom footer component or disable (if false).\n */\n footer?: Type<any> | false;\n /**\n * Specify custom breadcrumb component or disable (if false).\n */\n breadcrumb?: Type<any> | false;\n /**\n * Specify custom topbarUser component or disable (if false).\n */\n topbarUser?: Type<any> | false;\n /**\n * Specify custom version component or disable (if false).\n */\n version?: Type<any> | false;\n /**\n * Specify custom settings component or disable (if false).\n */\n settings?: Type<any> | false;\n };\n}\n\nexport const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken<LayoutFeatureConfig>('COMMONS_LAYOUT_FEATURE_CONFIG');\n","import {DOCUMENT} from '@angular/common';\nimport {Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {COMMONS_MODULE_CONFIG_IT, CommonsStorageService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutState} from '../models/layout-state.model';\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, ColorScheme, LayoutMenuMode} from './layout-feature-config.token';\n\n@Injectable()\nexport class LayoutService {\n private readonly typeName = 'MainLayoutComponentService';\n private readonly storageMenuModeKey = 'menuMode';\n private readonly storageColorSchemeKey = 'colorScheme';\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly storageService = inject(CommonsStorageService);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n // color scheme\n private _colorSchemeSetting = signal(this.getInitColorScheme());\n public colorSchemeSetting = this._colorSchemeSetting.asReadonly();\n private _colorScheme = signal<Exclude<ColorScheme, 'system'>>(this.getInitActualColorScheme(this.colorSchemeSetting()));\n public colorScheme = this._colorScheme.asReadonly();\n public colorSchemeIsLight = computed(() => this._colorScheme() === 'light');\n\n private getInitColorScheme(): ColorScheme {\n let colorScheme = this.storageService.getItem<ColorScheme>(this.typeName, this.storageColorSchemeKey);\n if (colorScheme == null || !(['dark', 'light', 'auto'] as ColorScheme[]).includes(colorScheme)) {\n colorScheme = this.getDefaultColorScheme();\n }\n return colorScheme;\n }\n\n private getInitActualColorScheme(colorScheme: ColorScheme): Exclude<ColorScheme, 'system'> {\n if (colorScheme === 'auto') {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n return colorScheme;\n }\n }\n\n private getDefaultColorScheme(): ColorScheme {\n return this.config?.colorScheme ?? this.commonsConfig?.app?.colorScheme ?? 'auto';\n }\n\n public setColorScheme(scheme: ColorScheme) {\n const defaultColorScheme = this.getDefaultColorScheme();\n if (scheme === defaultColorScheme) {\n this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);\n }\n this._colorSchemeSetting.set(scheme);\n this._colorScheme.set(this.getInitActualColorScheme(scheme));\n }\n\n // menu mode\n public readonly menuModes: LayoutMenuMode[] = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];\n private _menuMode = signal(this.initMenuMode());\n public menuMode = this._menuMode.asReadonly();\n\n // logos\n private appLogoLight = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathLight ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n private appLogoDark = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathDark ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n private appLogoNameLight = signal(\n this.config?.logoNamePathLight ??\n this.commonsConfig?.app?.logoNamePathLight ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n private appLogoNameDark = signal(\n this.config?.logoNamePathDark ??\n this.commonsConfig?.app?.logoNamePathDark ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n // overlays\n public isOverlay = computed(() => this.menuMode() === 'overlay');\n public isSlim = computed(() => this.menuMode() === 'slim');\n public isSlimPlus = computed(() => this.menuMode() === 'slim-plus');\n\n // used for managing the submenu dropdown overlay in slim and slim+ layouts\n public submenuOverlayKey = signal<string | undefined>(undefined);\n\n constructor() {\n afterNextRender(() => {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n if (this.colorSchemeSetting() === 'auto') {\n const newColorScheme = event.matches ? 'dark' : 'light';\n this._colorScheme.set(newColorScheme);\n }\n });\n });\n\n effect(() => {\n const colorScheme = this._colorScheme();\n const linkElement = this.document.getElementById('app-theme') as HTMLLinkElement | undefined;\n if (colorScheme === 'dark' && linkElement?.href.includes('light')) {\n linkElement.href = 'theme-dark.css';\n } else if (colorScheme === 'light' && linkElement?.href.includes('dark')) {\n linkElement.href = 'theme-light.css';\n }\n });\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n if (!this.menuModes.includes(mode)) {\n return;\n }\n if (mode === this.config?.menuMode) {\n this.storageService.removeItem(this.typeName, this.storageMenuModeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);\n }\n this._menuMode.set(mode);\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen(key: string) {\n if (this.submenuOverlayKey() === key) {\n return;\n }\n\n this.submenuOverlayKey.set(key);\n this.overlayOpen.next(null);\n }\n\n onOverlaySubmenuClose() {\n this.submenuOverlayKey.set(undefined);\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n private initMenuMode(): LayoutMenuMode {\n const lsMode = this.storageService.getItem<LayoutMenuMode>(this.typeName, this.storageMenuModeKey);\n if (lsMode && this.menuModes.includes(lsMode)) {\n return lsMode;\n }\n return this.config?.menuMode ?? 'static';\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\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 align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\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 <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\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 align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\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 align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {CommonsConfigurationService, LoggerService} from '@mediusinc/mng-commons/core';\n\n@Injectable()\nexport class VersionService {\n private readonly logger = inject(LoggerService).create('VersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: CommonsConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {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 {JsonPathPipe, VersionConfig, VersionConfigType, VersionInfo} from '@mediusinc/mng-commons/core';\n\nimport {VersionService} from '../services/version.service';\n\n@Component({\n standalone: true,\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionComponent {\n private readonly versionService = inject(VersionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly jsonPathPipe = new JsonPathPipe();\n\n public initVersion = input<VersionConfigType>(undefined, {alias: 'version'});\n\n public isLoading = signal<boolean>(false);\n private loadedVersion = signal<VersionConfigType | undefined>(undefined);\n\n public displayVersion = computed<string | undefined>(() => {\n if (typeof this.initVersion() === 'string') {\n return this.initVersion();\n } else if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n if (typeof this.loadedVersion() !== 'undefined') {\n return this.loadedVersion();\n } else if (this.initVersion()!['info' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion() as VersionInfo;\n return this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n return;\n });\n\n public versions = computed<Array<VersionConfig> | undefined>(() => {\n if (Array.isArray(this.initVersion())) {\n return this.initVersion() as Array<VersionConfig>;\n }\n return;\n });\n\n public displayName = computed<string | undefined>(() => {\n if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return config.displayName;\n }\n }\n return;\n });\n\n constructor() {\n toObservable(this.initVersion)\n .pipe(\n catchError(() => of(undefined)),\n switchMap(version => {\n if (typeof version !== 'undefined' && (version['info' as keyof object] || version['urlPath' as keyof object])) {\n const config = version as VersionConfig;\n if (config.urlPath) {\n this.isLoading.set(true);\n return this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).pipe(\n take(1),\n map(res => ({res, config}))\n );\n }\n }\n return of({res: undefined, config: undefined});\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: ({res, config}) => {\n if (typeof res !== 'undefined' && typeof config !== 'undefined') {\n this.loadedVersion.set(this.jsonPathPipe.transform(res, config.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 (versions()) {\n @for (v of versions(); track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br />\n }\n }\n} @else {\n @if (displayName()) {{{ displayName() }}}\n @if (displayName() && displayVersion()) {: }\n @if (!isLoading()) {{{ displayVersion() }}}\n}\n","import {NgOptimizedImage} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Type, inject, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {VersionComponent} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-footer',\n templateUrl: 'footer.component.html',\n imports: [TranslateModule, NgOptimizedImage, VersionComponent, ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\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 <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">© {{ 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 {TranslateModule} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\n\nimport {CommonsMenuItem, CommonsService} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb',\n imports: [TranslateModule],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\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","<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\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</div>\n","import {computed, signal} from '@angular/core';\n\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '@mediusinc/mng-commons/core';\n\nexport function prepareMenuItemsToInternal(menuItems: CommonsMenuItem[], parentKey = ''): InternalCommonsMenuItem[] {\n const newItems = menuItems.map((item, idx) => {\n const itemsProp = signal<InternalCommonsMenuItem[]>([]);\n const lazyChildrenProp = signal(item.lazyChildren ?? false);\n const hasItemsProp = computed(() => itemsProp().length > 0);\n const newItem: InternalCommonsMenuItem = {\n ...item,\n isVisible: typeof item.isVisible !== 'undefined' ? item.isVisible : item.visible,\n key: parentKey ? parentKey + '-' + idx : idx.toString(),\n config: item,\n items: itemsProp,\n lazyChildren: lazyChildrenProp,\n itemsVisibility: signal([]),\n hasItems: hasItemsProp,\n hasItemsOrLazyChildren: computed(() => lazyChildrenProp() || hasItemsProp())\n };\n\n if (Array.isArray(item.items) && item.items.length > 0) {\n newItem.items.set(prepareMenuItemsToInternal(item.items, newItem.key));\n newItem.itemsVisibility.set(newItem.items()?.map(() => signal(true)));\n }\n\n return newItem;\n });\n\n return newItems;\n}\n","import {DestroyRef, Injectable, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subscription, startWith, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {\n CommonsMenuItem,\n CommonsRouteData,\n CommonsRouterService,\n InternalCommonsMenuItem,\n LoggerService,\n adjustRouteMenuLazyChildrenRouterLinks,\n doesUrlMatchRouterLink\n} from '@mediusinc/mng-commons/core';\n\nimport {prepareMenuItemsToInternal} from '../helpers/menu-items';\nimport {MenuChangeEvent} from '../models/menu.model';\n\n@Injectable()\nexport class MenuService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly logger = LoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly commonsRouter = inject(CommonsRouterService);\n\n private _menuItems = signal<InternalCommonsMenuItem[]>([]);\n public menuItems = this._menuItems.asReadonly();\n\n private readonly menuChangeSubject = new ReplaySubject<MenuChangeEvent>(1);\n menuChange$ = this.menuChangeSubject.asObservable();\n\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n setItems(menuItems: Array<CommonsMenuItem>) {\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this._menuItems.set(prepareMenuItemsToInternal(menuItems));\n this.appendListenersToLazyChildren(this._menuItems());\n\n this.router.events;\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter(event => event instanceof NavigationEnd),\n map(e => e as NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(e => {\n this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects);\n });\n }\n\n private appendListenersToLazyChildren(menuItems: InternalCommonsMenuItem[]) {\n menuItems.forEach(item => {\n if (item.lazyChildren()) {\n this.listenToMenuItemLazyChildrenLoad(item);\n } else if (item.items()) {\n this.appendListenersToLazyChildren(item.items());\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems(), url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuChangeSubject.next({\n key: matchKey,\n eventType: 'routeChange'\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: InternalCommonsMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.commonsRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n const menuItemsFromRoutes = routes\n .filter(r => Array.isArray((r.data as CommonsRouteData | undefined)?.menuItems))\n .flatMap(r => (r.data as CommonsRouteData).menuItems!);\n const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);\n\n menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));\n this.appendListenersToLazyChildren(menuItem.items());\n menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));\n menuItem.lazyChildren.set(false);\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<InternalCommonsMenuItem>, url: string): InternalCommonsMenuItem[][] {\n const matches: InternalCommonsMenuItem[][] = [];\n for (const menuItem of menuItems) {\n const chidldren = menuItem.items();\n if (menuItem.routerLink) {\n const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.menuChangeSubject.next({\n eventType: 'reset'\n });\n }\n}\n","import {AnimationEvent, animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, computed, effect, inject, input, output, viewChild} from '@angular/core';\nimport {toObservable as ngToObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {distinctUntilChanged, of, switchMap} from 'rxjs';\n\nimport {InternalCommonsMenuItem, PermissionService, toObservable} from '@mediusinc/mng-commons/core';\n\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RippleModule, TooltipModule, RouterModule, TranslateModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('children', [\n state(\n 'collapsed',\n style({\n height: '0'\n })\n ),\n state(\n 'expanded',\n style({\n height: '*'\n })\n ),\n state(\n 'hidden',\n style({\n display: 'none'\n })\n ),\n state(\n 'visible',\n style({\n display: 'block'\n })\n ),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ],\n host: {\n '[class.active-menuitem]': '!root() && active()',\n '[class.layout-root-menuitem]': 'root()'\n },\n providers: [PermissionService]\n})\nexport class MenuItemComponent {\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\n public submenuAnimation = computed(() => {\n if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n return this.layout.submenuOverlayKey() === this.item().key ? 'visible' : 'hidden';\n } else {\n return this.root() ? 'expanded' : this.active() ? 'expanded' : 'collapsed';\n }\n });\n\n constructor() {\n effect(() => {\n if (this.root() && this.active() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);\n }\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 onSubmenuAnimated(event: AnimationEvent) {\n if (event.toState === 'visible' && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n const el = <HTMLUListElement>event.element;\n const elParent = <HTMLUListElement>el.parentElement;\n this.calculatePosition(el, elParent);\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: InternalCommonsMenuItem, idx: number) {\n this.item().itemsVisibility()[idx]?.set(visible);\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 ?? ''\"\n pRipple>\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 [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [queryParams]=\"item().queryParams\"\n pRipple>\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 ?? ''\" pRipple>\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 }\n @if (item().hasItems()) {\n <ul #submenu [@children]=\"submenuAnimation()\" (@children.done)=\"onSubmenuAnimated($event)\">\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 {CommonsMenuItem, CommonsRouteData} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {MenuItemComponent} from './menu-item.component';\n\n@Component({\n standalone: true,\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, Type, inject, signal} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuComponent} from './menu.component';\n\n@Component({\n standalone: true,\n selector: 'mng-sidebar',\n imports: [RouterModule, MenuComponent, ComponentDirective],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\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 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 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=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n <img [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n </div>\n <div class=\"app-logo-normal\">\n <img class=\"h-2rem\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n <img class=\"h-2rem ml-3\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent()) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, Injector, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {SelectButtonModule} from 'primeng/selectbutton';\n\nimport {ColorScheme, CommonsService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutMenuMode} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\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 standalone: true,\n selector: 'mng-settings',\n imports: [TranslateModule, RadioButtonModule, FormsModule, Button, DropdownModule, InputSwitchModule, SelectButtonModule],\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-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\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>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-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-content-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 {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Injector, computed, inject, signal} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DialogService} from 'primeng/dynamicdialog';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, EnumerateAsyncPipe, IUser} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {SettingsComponent} from './settings.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component',\n imports: [AsyncPipe, EnumerateAsyncPipe, TranslateModule, RippleModule, StyleClassModule],\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 class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\"> {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-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\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-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\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-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 {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonModule} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {SidebarComponent} from './sidebar.component';\nimport {TopbarUserComponent} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar',\n imports: [SidebarComponent, NgClass, ButtonModule, StyleClassModule, RippleModule, BreadcrumbComponent, AsyncPipe, DropdownModule, ComponentDirective, FormsModule],\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarComponent {\n public readonly el = inject(ElementRef);\n public readonly commons = inject(CommonsService);\n public readonly layout = inject(LayoutService);\n private 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=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link 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=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n","import {AsyncPipe, 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 {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {FooterComponent} from './footer.component';\nimport {TopbarComponent} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, TopbarComponent, BreadcrumbComponent, ComponentDirective, AsyncPipe, 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-container\"\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 #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 '../components/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","import {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutFeatureConfig} from './services/layout-feature-config.token';\nimport {LayoutService} from './services/layout.service';\nimport {MenuService} from './services/menu.service';\nimport {VersionService} from './services/version.service';\n\n/**\n * Prepares providers for usage of the layout functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withLayout(config?: LayoutFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Layout,\n providers: [\n MenuService,\n VersionService,\n LayoutService,\n {\n provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,\n useValue: config\n }\n ]\n };\n}\n","// components\nexport * from './lib/components/pages/error/error.page.component';\nexport * from './lib/components/pages/not-found/not-found.page.component';\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// helpers\nexport * from './lib/helpers/route-builder';\n\n// models\nexport * from './lib/models/layout-state.model';\nexport * from './lib/models/menu.model';\n\n// services\nexport * from './lib/services/layout-feature-config.token';\nexport * from './lib/services/layout.service';\nexport * from './lib/services/menu.service';\nexport * from './lib/services/version.service';\n\n// provide\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","ngToObservable","toObservable","i3"],"mappings":"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"}
|