@rxap/layout 16.0.1-dev.3 → 16.0.1-dev.4
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/CHANGELOG.md +4 -0
- package/README.md +1 -1
- package/esm2022/lib/app-url.service.mjs +4 -4
- package/esm2022/lib/footer/footer.component.mjs +4 -4
- package/esm2022/lib/footer.directive.mjs +4 -4
- package/esm2022/lib/header/apps-button/apps-button.component.mjs +4 -4
- package/esm2022/lib/header/header.component.mjs +4 -4
- package/esm2022/lib/header/language-selector/language-selector.component.mjs +4 -4
- package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +4 -4
- package/esm2022/lib/header/reset-button/reset-button.component.mjs +4 -4
- package/esm2022/lib/header/settings-button/settings-button.component.mjs +4 -4
- package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +4 -4
- package/esm2022/lib/header/sign-out/sign-out.component.mjs +4 -4
- package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +4 -4
- package/esm2022/lib/layout/layout.component.mjs +4 -4
- package/esm2022/lib/layout/layout.component.service.mjs +4 -4
- package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +4 -4
- package/esm2022/lib/navigation/navigation.component.mjs +4 -4
- package/esm2022/lib/navigation/navigation.service.mjs +4 -4
- package/esm2022/lib/navigation/replace-router-paths.service.mjs +4 -4
- package/esm2022/lib/sidenav/sidenav-footer.directive.mjs +4 -4
- package/esm2022/lib/sidenav/sidenav-header.directive.mjs +4 -4
- package/esm2022/lib/sidenav/sidenav.component.mjs +4 -4
- package/esm2022/lib/sidenav/sidenav.component.service.mjs +4 -4
- package/esm2022/lib/sidenav/version/version.component.mjs +4 -4
- package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +5 -5
- package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +4 -4
- package/fesm2022/rxap-layout.mjs +76 -76
- package/fesm2022/rxap-layout.mjs.map +1 -1
- package/package.json +27 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.service.ts","../../../../../packages/angular/layout/src/lib/app-url.service.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.ts","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.html","../../../../../packages/angular/layout/src/lib/header/settings-button/settings-button.component.ts","../../../../../packages/angular/layout/src/lib/header/settings-button/settings-button.component.html","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.ts","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.html","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.ts","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/navigation/replace-router-paths.service.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.html","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.ts","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.html","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.html","../../../../../packages/angular/layout/src/lib/footer.directive.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { LogoConfig } from './types';\nimport { NavigationWithInserts } from './navigation/navigation-item';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n 'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n 'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-footer',\n templateUrl: './footer.component.html',\n styleUrls: [ './footer.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatToolbarModule, NgFor, PortalModule, AsyncPipe ],\n})\nexport class FooterComponent {\n\n constructor(\n public readonly footerService: FooterService,\n ) {\n }\n\n}\n","<ng-template [ngIf]=\"footerService.portals()\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport {\n computed,\n effect,\n Inject,\n Injectable,\n Optional,\n signal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDrawerMode } from '@angular/material/sidenav';\nimport { ConfigService } from '@rxap/config';\nimport { ObserveCurrentThemeDensity } from '@rxap/ngx-theme';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport { RXAP_LOGO_CONFIG } from '../tokens';\nimport { LogoConfig } from '../types';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutComponentService {\n\n public logo: LogoConfig;\n\n public readonly opened: WritableSignal<boolean>;\n public readonly mode: WritableSignal<MatDrawerMode>;\n public readonly pinned: WritableSignal<boolean>;\n public readonly collapsable: WritableSignal<boolean>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n\n private readonly currentThemeDensity = toSignal(ObserveCurrentThemeDensity());\n\n\n public constructor(\n public readonly footerComponentService: FooterService,\n public readonly headerComponentService: HeaderService,\n @Optional() @Inject(RXAP_LOGO_CONFIG) logoConfig: LogoConfig | null = null,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n mediaMatcher: MediaMatcher,\n ) {\n const mobileQuery = mediaMatcher.matchMedia('(max-width: 959px)');\n const mobile = mobileQuery.matches;\n const initialCollapsable = this.config.get('navigation.collapsable', true);\n const collapsable = initialCollapsable && !mobile;\n const pinned = this.config.get('navigation.pinned', false);\n const mode = this.config.get('navigation.mode', pinned || !collapsable ? 'side' : 'over');\n const opened = this.config.get('navigation.opened', (!collapsable || pinned) && !mobile);\n\n this.opened = signal(opened);\n this.mode = signal(mode);\n this.pinned = signal(pinned);\n this.collapsable = signal(collapsable);\n\n this.fixedBottomGap = computed(() => this.footerComponentService.portalCount() * (\n 64 + (\n this.currentThemeDensity() ?? 0\n ) * 4\n ));\n this.fixedTopGap = computed(() => this.headerComponentService.componentCount() * (\n 64 + (\n this.currentThemeDensity() ?? 0\n ) * 4\n ));\n\n this.logo = logoConfig ?? {\n src: 'assets/logo.png',\n width: 192,\n };\n mobileQuery.addEventListener('change', (event) => {\n if (initialCollapsable) {\n this.collapsable.set(!event.matches);\n if (this.collapsable()) {\n if (!this.pinned()) {\n this.opened.set(false);\n }\n }\n }\n });\n effect(() => {\n if (this.pinned()) {\n this.mode.set('side');\n this.opened.set(true);\n } else {\n this.mode.set('over');\n this.opened.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n public toggleOpened() {\n this.opened.set(!this.opened());\n }\n\n public togglePinned() {\n this.pinned.set(!this.pinned());\n }\n\n}\n","import {\n Inject,\n Injectable,\n LOCALE_ID,\n} from '@angular/core';\nimport { AuthorizationService } from '@rxap/authorization';\nimport { ClickOnLink } from '@rxap/browser-utilities';\nimport { ConfigService } from '@rxap/config';\nimport {\n Environment,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { JoinPath } from '@rxap/utilities';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ExternalApps {\n image?: string;\n label: string;\n href: string;\n empty?: false;\n hidden?: boolean;\n id?: string;\n permissions: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppUrlService {\n\n private _apps: Array<ExternalApps>;\n\n constructor(\n private readonly config: ConfigService,\n @Inject(LOCALE_ID)\n private readonly localeId: string,\n private readonly authorizationService: AuthorizationService,\n @Inject(RXAP_ENVIRONMENT)\n private readonly environment: Environment,\n ) {\n this._apps = this.config.get('navigation.apps', []);\n }\n\n public getApp(appId: string): ExternalApps | null {\n return this._apps.find(app => app.id === appId) ?? null;\n }\n\n public getAppUrl(appId: string, path: string, infix: string | null = this.getPathPrefix()): string | null {\n\n const app = this.getApp(appId);\n\n if (app) {\n return JoinPath(app.href, infix, path);\n }\n\n return null;\n\n }\n\n public getAppUrlOrThrow(appId: string, path: string): string {\n const url = this.getAppUrl(appId, path);\n if (url) {\n return url;\n }\n throw new Error(`Could not find app with id \"${ appId }\"`);\n }\n\n public navigate(appId: string, path: string): void {\n\n const url = this.getAppUrl(appId, path);\n\n if (url) {\n ClickOnLink(url);\n }\n\n }\n\n public async getAppList(): Promise<Array<ExternalApps>> {\n const appList = this\n ._apps\n .filter(app => !app.hidden)\n .map(app => ({\n ...app,\n href: JoinPath(app.href, this.getPathPrefix()),\n }));\n\n const filteredAppList: Array<ExternalApps> = [];\n for (const app of appList) {\n if (await firstValueFrom(this.authorizationService.hasPermission$(app.permissions))) {\n filteredAppList.push(app);\n }\n }\n return filteredAppList;\n }\n\n private getPathPrefix(): string {\n if (this.environment.production && this.localeId) {\n return this.localeId.replace(/-.+$/, '');\n }\n return '';\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n signal,\n} from '@angular/core';\nimport { RXAP_LAYOUT_APPS_GRID } from '../../tokens';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n NgFor,\n NgIf,\n NgOptimizedImage,\n} from '@angular/common';\nimport {\n AppUrlService,\n ExternalApps,\n} from '../../app-url.service';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport {\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {\n filter,\n tap,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: [ './apps-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n MatButtonModule,\n MatIconModule,\n NgOptimizedImage,\n ],\n})\nexport class AppsButtonComponent implements OnInit, OnDestroy {\n public isOpen = false;\n\n public readonly appList = signal<Array<ExternalApps>>([]);\n\n private _subscription?: Subscription;\n\n constructor(\n @Optional()\n @Inject(RXAP_LAYOUT_APPS_GRID)\n grid: any,\n private readonly appUrlService: AppUrlService,\n private readonly authenticationService: RxapAuthenticationService,\n ) {}\n\n ngOnInit() {\n this._subscription = this.authenticationService.isAuthenticated$.pipe(\n filter(Boolean),\n switchMap(() => this.appUrlService.getAppList()),\n tap((apps) => this.appList.set(apps)),\n ).subscribe();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n}\n","<div *ngIf=\"appList()?.length\" class=\"flex flex-row items-center gap-8\">\n\n <div *ngIf=\"isOpen\" class=\"flex flex-row items-center gap-6\">\n\n <div *ngFor=\"let app of appList()\" class=\"h-10\">\n <a [href]=\"app.href\" mat-stroked-button>\n <span class=\"flex flex-row items-center gap-4\">\n <img *ngIf=\"app.image\" [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n <span class=\"label grow-0\">{{app.label}}</span>\n </span>\n </a>\n </div>\n\n </div>\n\n <button (click)=\"isOpen = !isOpen\" mat-icon-button>\n <mat-icon svgIcon=\"apps\"></mat-icon>\n </button>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-navigation-progress-bar',\n templateUrl: './navigation-progress-bar.component.html',\n styleUrls: [ './navigation-progress-bar.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatProgressBarModule,\n AsyncPipe,\n ],\n})\nexport class NavigationProgressBarComponent {\n\n public navigating$: Observable<boolean>;\n\n public constructor(\n @Inject(Router) public readonly router: Router,\n ) {\n this.navigating$ = this.router.events.pipe(\n filter(\n event =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel,\n ),\n map(event => event instanceof NavigationStart),\n );\n }\n\n}\n","<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n","import {\n KeyValuePipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { StopPropagationDirective } from '@rxap/directives';\nimport { LanguageSelectorService } from '@rxap/ngx-localize';\n\n@Component({\n selector: 'rxap-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: [ './language-selector.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatFormFieldModule,\n StopPropagationDirective,\n MatSelectModule,\n FormsModule,\n NgFor,\n MatOptionModule,\n KeyValuePipe,\n ],\n})\nexport class LanguageSelectorComponent {\n constructor(public readonly language: LanguageSelectorService) {\n }\n\n}\n","<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\" rxapStopPropagation>\n <mat-label i18n>Select Language</mat-label>\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\" [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n","import {\n ComponentPortal,\n ComponentType,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n Injector,\n isDevMode,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ActivatedRoute } from '@angular/router';\nimport { ChangelogService } from '@rxap/ngx-changelog';\nimport {\n ThemeDensity,\n ThemeService,\n} from '@rxap/ngx-theme';\nimport { Subscription } from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport { LanguageSelectorComponent } from '../language-selector/language-selector.component';\n\n@Component({\n selector: 'rxap-settings-button',\n standalone: true,\n imports: [ CommonModule, MatButtonModule, MatIconModule, LanguageSelectorComponent, MatMenuModule, PortalModule ],\n templateUrl: './settings-button.component.html',\n styleUrls: [ './settings-button.component.scss' ],\n})\nexport class SettingsButtonComponent implements OnInit, OnDestroy {\n\n public isDevMode = isDevMode();\n items = signal<Array<ComponentPortal<unknown>>>([]);\n private _subscription?: Subscription;\n\n private savePreviewDensityValue = false;\n private currentDensityValue: ThemeDensity | null = null;\n\n private savePreviewTypographyValue = false;\n private currentTypographyValue: string | null = null;\n\n public readonly availableTypographies: string[];\n private savePreviewThemeValue = false;\n\n public readonly availableThemes: string[];\n private currentThemeValue: string | null = null;\n\n constructor(\n public readonly theme: ThemeService,\n private readonly route: ActivatedRoute,\n private readonly injector: Injector,\n private readonly changelogService: ChangelogService,\n ) {\n this.availableThemes = this.theme.getAvailableThemes();\n this.availableTypographies = this.theme.getAvailableTypographies();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n ngOnInit() {\n this._subscription = this.route.data.pipe(\n map(data => this.getCustomMenuItems(data)),\n map(items => items.map(item => new ComponentPortal(item, undefined, this.injector))),\n tap(items => this.items.set(items)),\n ).subscribe();\n }\n\n private getCustomMenuItems(data: any): Array<ComponentType<unknown>> {\n if (data?.layout?.header?.menu?.items?.length) {\n return data.layout.header.menu.items;\n }\n return [];\n }\n\n openChangelogDialog() {\n this.changelogService.showChangelogDialog();\n }\n\n previewDensity(density: ThemeDensity) {\n this.theme.applyDensity(density);\n }\n\n restoreDensity() {\n this.theme.applyDensity(this.theme.density());\n }\n\n setDensity(density: ThemeDensity) {\n this.theme.setDensity(density);\n }\n\n previewTypography(typography: string) {\n this.theme.applyTypography(typography);\n }\n\n restoreTypography() {\n this.theme.applyTypography(this.theme.typography());\n }\n\n setTypography(typography: string) {\n this.theme.setTypography(typography);\n }\n\n previewTheme(theme: string) {\n this.theme.applyTheme(theme);\n }\n\n restoreTheme() {\n this.theme.applyTheme(this.theme.themeName());\n }\n\n setTheme(theme: string) {\n this.theme.setTheme(theme);\n }\n\n}\n","<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode()\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode()\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <button [matMenuTriggerFor]=\"themeMenu\" mat-menu-item>\n <mat-icon svgIcon=\"compare\"></mat-icon>\n <span i18n>Theme</span>\n </button>\n <rxap-language-selector></rxap-language-selector>\n <button (click)=\"openChangelogDialog()\" mat-menu-item>\n <mat-icon svgIcon=\"format-list-numbered\"></mat-icon>\n <span i18n>What's new</span>\n </button>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n\n<mat-menu #themeMenu=\"matMenu\" xPosition=\"before\">\n <button [matMenuTriggerFor]=\"themeDensityMenu\" mat-menu-item>\n <mat-icon svgIcon=\"move-resize\"></mat-icon>\n <span i18n>Density</span>\n </button>\n <button [matMenuTriggerFor]=\"themeFontMenu\" mat-menu-item>\n <mat-icon svgIcon=\"format-font\"></mat-icon>\n <span i18n>Font</span>\n </button>\n <button [matMenuTriggerFor]=\"themePresetMenu\" mat-menu-item>\n <mat-icon svgIcon=\"shape-outline\"></mat-icon>\n <span i18n>Preset</span>\n </button>\n</mat-menu>\n\n<mat-menu #themeDensityMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setDensity(0)\" (mouseenter)=\"previewDensity(0)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-l\"></mat-icon>\n <span i18n>Normal</span>\n </button>\n <button (click)=\"setDensity(-1)\" (mouseenter)=\"previewDensity(-1)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-m\"></mat-icon>\n <span i18n>Dense</span>\n </button>\n <button (click)=\"setDensity(-2)\" (mouseenter)=\"previewDensity(-2)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-s\"></mat-icon>\n <span i18n>Very Dense</span>\n </button>\n <button (click)=\"setDensity(-3)\" (mouseenter)=\"previewDensity(-3)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-xs\"></mat-icon>\n <span i18n>Extreme Dense</span>\n </button>\n</mat-menu>\n<mat-menu #themeFontMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setTypography(typographyName)\"\n (mouseenter)=\"previewTypography(typographyName)\"\n (mouseleave)=\"restoreTypography()\"\n *ngFor=\"let typographyName of availableTypographies\"\n mat-menu-item>\n {{ typographyName }}\n </button>\n</mat-menu>\n\n<mat-menu #themePresetMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setTheme(themeName)\"\n (mouseenter)=\"previewTheme(themeName)\"\n (mouseleave)=\"restoreTheme()\"\n *ngFor=\"let themeName of availableThemes\"\n mat-menu-item>\n {{ themeName }}\n </button>\n</mat-menu>\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { LayoutComponentService } from '../../layout/layout.component.service';\n\n@Component({\n selector: 'rxap-sidenav-toggle-button',\n templateUrl: './sidenav-toggle-button.component.html',\n styleUrls: [ './sidenav-toggle-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatButtonModule,\n NgIf,\n MatIconModule,\n ],\n})\nexport class SidenavToggleButtonComponent {\n\n public readonly opened: Signal<boolean>;\n\n constructor(public readonly layoutComponentService: LayoutComponentService) {\n this.opened = layoutComponentService.opened;\n }\n\n}\n","<button (click)=\"layoutComponentService.toggleOpened()\" mat-icon-button>\n <mat-icon *ngIf=\"!opened()\">menu</mat-icon>\n <mat-icon *ngIf=\"opened()\">menu_open</mat-icon>\n</button>\n","import {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n InjectionToken,\n Signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport { UserProfileDataSource } from '@rxap/ngx-user';\nimport {\n distinctUntilChanged,\n filter,\n skip,\n} from 'rxjs';\nimport {\n map,\n switchMap,\n} from 'rxjs/operators';\n\nexport type ExtractUsernameFromProfileFn<T = unknown> = (profile: T) => string | null;\n\nexport const EXTRACT_USERNAME_FROM_PROFILE = new InjectionToken<ExtractUsernameFromProfileFn>(\n 'extract-username-from-profile',\n {\n providedIn: 'root',\n factory: () => (profile: any) => (profile ? profile.username ?? profile.email ?? profile.name : null) ?? null,\n },\n);\n\n@Component({\n selector: 'rxap-user-profile-icon',\n templateUrl: './user-profile-icon.component.html',\n styleUrls: [ './user-profile-icon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatMenuModule,\n MatIconModule,\n NgIf,\n AsyncPipe,\n ],\n})\nexport class UserProfileIconComponent<T = unknown> {\n\n public username: Signal<string | null>;\n\n constructor(\n private readonly userProfileService: UserProfileDataSource<T>,\n private readonly authenticationService: RxapAuthenticationService,\n @Inject(EXTRACT_USERNAME_FROM_PROFILE)\n extractUsernameFromProfile: ExtractUsernameFromProfileFn<T>,\n ) {\n this.username = toSignal(this.authenticationService.isAuthenticated$.pipe(\n filter(Boolean),\n switchMap(() => this.userProfileService.connect({\n viewChange: this.authenticationService.isAuthenticated$.pipe(\n skip(1),\n filter(Boolean),\n distinctUntilChanged(),\n ),\n })),\n filter(Boolean),\n map(extractUsernameFromProfile),\n ), { initialValue: null });\n }\n\n public async logout() {\n await this.authenticationService.signOut();\n }\n\n\n}\n","<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n <button mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </span>\n </button>\n</mat-menu>\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n Optional,\n Signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatOptionModule,\n ThemePalette,\n} from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { DataSourceCollectionDirective } from '@rxap/data-source/directive';\nimport { StopPropagationDirective } from '@rxap/directives';\nimport { HeaderService } from '@rxap/services';\nimport { LayoutComponentService } from '../layout/layout.component.service';\nimport { RXAP_HEADER_COMPONENT } from '../tokens';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { NavigationProgressBarComponent } from './navigation-progress-bar/navigation-progress-bar.component';\nimport { SettingsButtonComponent } from './settings-button/settings-button.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatToolbarModule,\n NgClass,\n NgIf,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n MatFormFieldModule,\n StopPropagationDirective,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n DataSourceCollectionDirective,\n MatSlideToggleModule,\n AsyncPipe,\n NavigationProgressBarComponent,\n UserProfileIconComponent,\n AppsButtonComponent,\n SettingsButtonComponent,\n SidenavToggleButtonComponent,\n ],\n})\nexport class HeaderComponent {\n\n @Input()\n public color: ThemePalette = undefined;\n\n public readonly collapsable: Signal<boolean>;\n public readonly opened: Signal<boolean>;\n\n constructor(\n @Inject(HeaderService)\n public readonly headerComponentService: HeaderService,\n public readonly layoutComponentService: LayoutComponentService,\n @Optional() @Inject(RXAP_HEADER_COMPONENT) public headerComponent: any,\n ) {\n this.collapsable = layoutComponentService.collapsable;\n this.opened = layoutComponentService.opened;\n }\n\n}\n","<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: opened() }\" class=\"mat-elevation-z3 header\">\n <div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n <rxap-sidenav-toggle-button *ngIf=\"!collapsable()\"></rxap-sidenav-toggle-button>\n <div class=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n <rxap-user-profile-icon class=\"grow-0\"></rxap-user-profile-icon>\n </div>\n</mat-toolbar>\n\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sign-out',\n templateUrl: './sign-out.component.html',\n styleUrls: [ './sign-out.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class SignOutComponent {\n\n constructor(\n private readonly authenticationService: RxapAuthenticationService,\n ) {\n }\n\n public async logout() {\n await this.authenticationService.signOut();\n }\n\n}\n","<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { ResetService } from '@rxap/services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-reset-button',\n templateUrl: './reset-button.component.html',\n styleUrls: [ './reset-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class ResetButtonComponent {\n constructor(\n @Inject(ResetService)\n public readonly resetService: ResetService,\n ) {\n }\n}\n","<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon svgIcon=\"refresh\"></mat-icon>\n</button>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigService } from '@rxap/config';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavComponentService {\n\n public readonly collapsed$ = new BehaviorSubject(true);\n\n constructor(private readonly config: ConfigService) {\n this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));\n }\n\n public toggleNavigationCollapse(): void {\n this.collapsed$.next(!this.collapsed$.value);\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Renderer2,\n signal,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Required } from '@rxap/utilities';\nimport {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\nimport {\n debounceTime,\n Subscription,\n} from 'rxjs';\nimport {\n filter,\n startWith,\n tap,\n} from 'rxjs/operators';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { SidenavComponentService } from '../../sidenav/sidenav.component.service';\nimport { NavigationComponent } from '../navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\nimport {\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from '../navigation-item';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[rxap-navigation-item]',\n templateUrl: './navigation-item.component.html',\n styleUrls: [ './navigation-item.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('sub-nav', [\n transition(':enter', [\n style({\n display: 'block',\n height: '0',\n overflow: 'hidden',\n }),\n animate(150, style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate(300, style({ height: '0' })),\n style({ display: 'none' }),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n RouterLinkActive,\n RouterLink,\n NgIf,\n MatRippleModule,\n MatIconModule,\n IconDirective,\n MatDividerModule,\n forwardRef(() => NavigationComponent),\n NgClass,\n ],\n})\nexport class NavigationItemComponent\n implements OnChanges, OnDestroy {\n\n @Input()\n public level = 0;\n\n private _isActive = false;\n\n public children: Navigation | null = null;\n\n @ViewChild(RouterLinkActive, { static: true })\n public routerLinkActive!: RouterLinkActive;\n\n @Input({ required: true })\n public item!: NavigationItem;\n\n public active = signal(false);\n\n @HostBinding('class.active')\n get isActive(): boolean {\n return this._isActive;\n }\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.active.set(value);\n }\n\n private readonly _subscription = new Subscription();\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef,\n @Inject(Renderer2)\n private readonly renderer: Renderer2,\n @Inject(Overlay)\n private readonly overlay: Overlay,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['item']) {\n const item: NavigationItem = changes['item'].currentValue;\n this.children =\n item.children && item.children.length ? item.children : null;\n }\n }\n\n public ngAfterViewInit() {\n this._subscription.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n debounceTime(100),\n startWith(true),\n tap(() => {\n let isActive = true;\n const urlParts = this.router.url.split('/');\n if (urlParts[0] === '') {\n urlParts[0] = '/';\n }\n for (let i = 0; i < this.item.routerLink.length; i++) {\n if (urlParts[i] !== this.item.routerLink[i]) {\n isActive = false;\n break;\n }\n }\n this.isActive = isActive;\n if (isActive) {\n this.renderer.addClass(this.elementRef.nativeElement, 'active');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'active');\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n","import { IconConfig } from '@rxap/utilities';\nimport {\n AbstractType,\n InjectionToken,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n | NavigationItem<NavigationWithInserts>\n | NavigationDividerItem\n | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n divider: boolean;\n title?: string;\n}\n\nexport function IsNavigationDividerItem(\n item: any,\n): item is NavigationDividerItem {\n return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n insert: string;\n}\n\nexport function IsNavigationInsertItem(\n item: any,\n): item is NavigationInsertItem {\n return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n isVisible(\n navigationItem: NavigationItem,\n ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n routerLink: string[];\n label: string;\n children?: Children;\n icon?: IconConfig;\n status?: Array<\n | Type<NavigationStatus>\n | InjectionToken<NavigationStatus>\n | AbstractType<NavigationStatus>\n >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n return (\n !!item && !!item['routerLink'] && !!item['label']\n );\n}\n","import type { Injector } from '@angular/core';\nimport {\n Inject,\n Injectable,\n INJECTOR,\n Optional,\n} from '@angular/core';\nimport {\n combineLatest,\n from,\n Observable,\n of,\n ReplaySubject,\n} from 'rxjs';\nimport {\n IsNavigationDividerItem,\n IsNavigationInsertItem,\n IsNavigationItem,\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n NavigationWithInserts,\n} from './navigation-item';\nimport {\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n} from '../tokens';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n public readonly config$: Observable<Navigation>;\n\n private inserts = new Map<string, NavigationWithInserts>();\n\n private readonly navigation: NavigationWithInserts;\n\n private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n constructor(\n @Inject(RXAP_NAVIGATION_CONFIG)\n navigation: any,\n @Inject(INJECTOR)\n private readonly injector: Injector,\n @Optional()\n @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n inserts: any | null = null,\n ) {\n if (typeof navigation === 'function') {\n this.navigation = navigation();\n } else {\n this.navigation = navigation;\n }\n if (inserts) {\n Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n this.insert(id, insert, false),\n );\n }\n this.updateNavigation();\n this.config$ = this.navigation$.pipe(\n switchMap((navigationWithoutStatusCheck) =>\n this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n ),\n );\n }\n\n /**\n * @deprecated use add instead\n * @param id\n * @param value\n * @param update\n */\n public insert(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.add(id, value, update);\n }\n\n public add(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.inserts.set(id, value);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public has(id: string): boolean {\n return this.inserts.has(id);\n }\n\n public get(id: string): NavigationWithInserts | undefined {\n return this.inserts.get(id);\n }\n\n public remove(id: string, update = true): void {\n this.inserts.delete(id);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public updateNavigation(): void {\n this.navigation$.next(this.replaceInserts(this.navigation));\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationItemStatusProviders(\n navigationItem: NavigationItem | NavigationDividerItem,\n ): Observable<NavigationItem | NavigationDividerItem | null> {\n if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {\n return of(navigationItem);\n }\n const isVisibleArray$: Array<Observable<boolean>> = navigationItem.status\n .map((statusToken) => this.injector.get(\n statusToken))\n .map((status) => {\n const isVisible = status.isVisible(\n navigationItem);\n if (typeof isVisible === 'boolean') {\n return of(isVisible);\n } else {\n return from(isVisible);\n }\n })\n .map(isVisible$ => isVisible$.pipe(catchError(e => {\n console.error('isVisible method failed: ' +\n e.message);\n return of(false);\n })));\n // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n return combineLatest(isVisibleArray$).pipe(\n map((isVisibleArray) =>\n isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n ),\n map((isVisible) => (isVisible ? navigationItem : null)),\n switchMap((navigationItemOrNull) => {\n if (navigationItemOrNull) {\n if (navigationItemOrNull.children?.length) {\n return this.checkNavigationStatusProviders(\n navigationItemOrNull.children,\n ).pipe(\n map((children) => ({\n ...navigationItemOrNull,\n children,\n })),\n );\n }\n return of(navigationItemOrNull);\n }\n return of(null);\n }),\n );\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationStatusProviders(\n navigation: Navigation,\n ): Observable<Navigation> {\n return combineLatest(\n navigation.map((navigationItem) =>\n this.checkNavigationItemStatusProviders(navigationItem),\n ),\n ).pipe(\n map((navigationWithNullItems) => {\n const cleanNavigation: Navigation = [];\n\n for (const navigationItem of navigationWithNullItems) {\n if (navigationItem !== null) {\n cleanNavigation.push(navigationItem);\n }\n }\n\n return cleanNavigation;\n }),\n );\n }\n\n private replaceInserts(\n navigationWithInserts: NavigationWithInserts,\n ): Navigation {\n const navigation: Navigation = [];\n\n for (const navigationItem of navigationWithInserts) {\n if (IsNavigationInsertItem(navigationItem)) {\n if (this.inserts.has(navigationItem.insert)) {\n navigation.push(\n ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n );\n }\n } else if (IsNavigationItem(navigationItem)) {\n navigation.push({\n ...navigationItem,\n children: this.replaceInserts(navigationItem.children ?? []),\n });\n } else if (IsNavigationDividerItem(navigationItem)) {\n navigation.push(navigationItem);\n }\n }\n\n return navigation;\n }\n}\n","import {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { coerceBoolean } from '@rxap/utilities';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { SidenavComponentService } from '../sidenav/sidenav.component.service';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from './navigation-item';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\nimport { NavigationService } from './navigation.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[rxap-navigation]',\n templateUrl: './navigation.component.html',\n styleUrls: [ './navigation.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'list-none dark:text-neutral-400 text-neutral-700',\n },\n imports: [\n NgFor,\n NgIf,\n MatDividerModule,\n forwardRef(() => NavigationItemComponent),\n AsyncPipe,\n ],\n})\nexport class NavigationComponent implements OnInit, OnDestroy {\n @Input()\n public items!: Navigation;\n public subscription?: Subscription;\n @Input()\n public level = 0;\n\n constructor(\n @Inject(NavigationService)\n private readonly navigationService: NavigationService,\n @Inject(ChangeDetectorRef)\n private readonly cdr: ChangeDetectorRef,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n ) {\n }\n\n @HostBinding('class.rxap-root-navigation')\n public _root = false;\n\n @Input()\n public set root(value: boolean | '') {\n this._root = coerceBoolean(value);\n }\n\n public ngOnInit(): void {\n if (this._root) {\n this.items = [];\n this.subscription = this.navigationService.config$\n .pipe(\n tap((navigation) => (this.items = navigation)),\n tap(() => this.cdr.detectChanges()),\n )\n .subscribe();\n }\n this.items ??= [];\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n NgOptimizedImage,\n NgStyle,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MatDrawerMode,\n MatSidenav,\n MatSidenavModule,\n} from '@angular/material/sidenav';\nimport {\n RouterLink,\n RouterOutlet,\n} from '@angular/router';\nimport {\n DetermineReleaseName,\n Environment,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { IconLoaderService } from '@rxap/icon';\nimport { StatusIndicatorComponent } from '@rxap/ngx-status-check';\nimport { ThemeService } from '@rxap/ngx-theme';\nimport {\n IsThemeDensity,\n ThemeDensity,\n UserSettingsThemeService,\n} from '@rxap/ngx-user';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { LayoutComponentService } from './layout.component.service';\n\n\n@Component({\n selector: 'rxap-layout',\n templateUrl: './layout.component.html',\n styleUrls: [ './layout.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n HeaderComponent,\n MatSidenavModule,\n AsyncPipe,\n MatIconModule,\n MatButtonModule,\n RouterLink,\n NgIf,\n FooterComponent,\n MatMenuModule,\n NgOptimizedImage,\n NavigationComponent,\n RouterOutlet,\n StatusIndicatorComponent,\n NgStyle,\n NgClass,\n ],\n})\nexport class LayoutComponent implements OnInit, OnDestroy {\n\n public readonly sidenavMode: Signal<MatDrawerMode>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n public readonly pinned: Signal<boolean>;\n public readonly collapsable: Signal<boolean>;\n public readonly logoSrc: string;\n public readonly logoWidth: number;\n public readonly release: string;\n public readonly opened: Signal<boolean>;\n\n @ViewChild(MatSidenav, { static: true }) public sidenav!: MatSidenav;\n\n private readonly userSettingsThemeService = inject(UserSettingsThemeService);\n private readonly themeService = inject(ThemeService);\n\n constructor(\n public readonly layoutComponentService: LayoutComponentService,\n @Inject(RXAP_ENVIRONMENT)\n private readonly environment: Environment,\n iconLoaderService: IconLoaderService,\n ) {\n iconLoaderService.load();\n this.fixedBottomGap = layoutComponentService.fixedBottomGap;\n this.fixedTopGap = layoutComponentService.fixedTopGap;\n this.pinned = layoutComponentService.pinned;\n this.collapsable = layoutComponentService.collapsable;\n this.opened = layoutComponentService.opened;\n this.sidenavMode = layoutComponentService.mode;\n this.logoSrc = this.layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px';\n this.logoWidth = this.layoutComponentService.logo.width ?? 256;\n this.release = DetermineReleaseName(this.environment);\n }\n\n ngOnDestroy() {\n this.userSettingsThemeService.stopSync();\n }\n\n ngOnInit() {\n this.userSettingsThemeService.startSync();\n this.userSettingsThemeService.get().then(theme => {\n if (theme.preset && theme.preset !== 'default') {\n this.themeService.setTheme(theme.preset, true);\n }\n if (theme.density && IsThemeDensity(theme.density) && theme.density !== ThemeDensity.Normal) {\n this.themeService.setDensity(theme.density, true);\n }\n if (theme.typography && theme.typography !== 'default') {\n this.themeService.setTypography(theme.typography, true);\n }\n });\n }\n\n}\n","<rxap-status-indicator class=\"fixed bottom-0 right-0 z-10\"></rxap-status-indicator>\n<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container [ngStyle]=\"{\n 'margin-top.px': fixedTopGap(),\n 'margin-bottom.px': fixedBottomGap(),\n }\" class=\"grow\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n [fixedBottomGap]=\"fixedBottomGap()\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"fixedTopGap()\"\n [mode]=\"sidenavMode()\"\n [ngClass]=\"{ collapsable: collapsable() }\"\n class=\"sidenav\"\n [opened]=\"opened()\"\n >\n <div (mouseleave)=\"collapsable() && !pinned() && matSidenav.close()\"\n class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"layoutComponentService.togglePinned()\" *ngIf=\"collapsable()\"\n class=\"pl-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <div class=\"flex flex-row items-center justify-center\" style=\"width: 64px\">\n <button mat-icon-button>\n <mat-icon *ngIf=\"!pinned()\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"pinned()\">radio_button_checked</mat-icon>\n </button>\n </div>\n </div>\n\n <ul\n (mouseenter)=\"collapsable() && !pinned() && matSidenav.open()\"\n class=\"grow self-stretch\"\n root\n rxap-navigation\n >\n </ul>\n\n <img\n [src]=\"logoSrc\"\n [routerLink]=\"['/']\"\n [width]=\"logoWidth\"\n alt=\"logo\"\n class=\"grow-0 mx-16\"\n />\n <div class=\"grow-0 px-16\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content [ngClass]=\"{ 'ml-16': collapsable() }\" class=\"p-4\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ReplaceRouterPathsService {\n\n public transform(routerLink: string[]): Observable<string[]> {\n return of(routerLink);\n }\n\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavFooter]',\n standalone: true,\n})\nexport class SidenavFooterDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavHeader]',\n standalone: true,\n})\nexport class SidenavHeaderDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\nimport { SidenavComponentService } from './sidenav.component.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport {\n AsyncPipe,\n NgClass,\n NgIf,\n NgTemplateOutlet,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: [ './sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-layout-sidenav',\n },\n standalone: true,\n imports: [\n NgClass,\n NgIf,\n NgTemplateOutlet,\n MatDividerModule,\n NavigationComponent,\n MatButtonModule,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class SidenavComponent {\n\n @ContentChild(SidenavFooterDirective)\n public sidenavFooterDirective?: SidenavFooterDirective;\n\n @ContentChild(SidenavHeaderDirective)\n public sidenavHeaderDirective?: SidenavHeaderDirective;\n\n constructor(public readonly sidenav: SidenavComponentService) {\n }\n\n}\n","<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"rxap-container\">\n <div class=\"inner flex flex-col justify-between items-stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"header grow-0\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"grow-0\"></mat-divider>\n </ng-template>\n <div class=\"nav-container grow\">\n <ul class=\"flex flex-col\" root rxap-navigation></ul>\n </div>\n <mat-divider class=\"grow-0\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle grow-0\"\n mat-button>\n <span class=\"sidebar-toggle-inner flex flex-row items-center gap-4\">\n <mat-icon class=\"arrow grow-0\">double_arrow</mat-icon>\n <span [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"label grow-0\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"grow-0\"></mat-divider>\n <div [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"footer grow-0\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n Version,\n VersionService,\n} from '@rxap/services';\nimport {\n KeyValue,\n Required,\n} from '@rxap/utilities';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {\n KeyValuePipe,\n NgFor,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-version',\n templateUrl: './version.component.html',\n styleUrls: [ './version.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgFor, KeyValuePipe ],\n})\nexport class VersionComponent implements OnInit, OnDestroy {\n\n public modules!: KeyValue<Version>;\n\n private subscription?: Subscription;\n\n constructor(\n @Inject(VersionService) private version: VersionService,\n ) {\n }\n\n public ngOnInit(): void {\n this.modules = this.version.get();\n this.subscription = this.version.update$.pipe(\n tap(() => this.modules = this.version.get()),\n ).subscribe();\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n}\n","<div class=\"version flex flex-col gap-2\">\n <div *ngFor=\"let module of modules | keyvalue\" class=\"flex flex-col\">\n <span class=\"name grow-0\">{{module.value.name}}</span>\n <span class=\"semantic grow-0\">{{module.value.semantic}}</span>\n <span class=\"hash grow-0\">{{module.value.hash}}</span>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-toggle-window-sidenav-button',\n templateUrl: './toggle-window-sidenav-button.component.html',\n styleUrls: [ './toggle-window-sidenav-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-toggle-window-sidenav-button',\n },\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class ToggleWindowSidenavButtonComponent {\n\n @Input()\n public openWindowSidenav = false;\n\n @Output()\n public openWindowSidenavChange = new EventEmitter<boolean>();\n\n public toggle() {\n this.openWindowSidenav = !this.openWindowSidenav;\n this.openWindowSidenavChange.emit(this.openWindowSidenav);\n }\n\n}\n","<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon svgIcon=\"arrow-left-bold\"></mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon svgIcon=\"arrow-right-bold\"></mat-icon>\n </ng-template>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n ContainerComponent,\n WindowContainerSidenavService,\n} from '@rxap/services';\nimport {\n ComponentPortal,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'rxap-window-container-sidenav',\n templateUrl: './window-container-sidenav.component.html',\n styleUrls: [ './window-container-sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgFor, PortalModule ],\n})\nexport class WindowContainerSidenavComponent implements OnInit, OnDestroy {\n\n public portals = new Map<string, ComponentPortal<any>>();\n\n private subscription = new Subscription();\n\n constructor(\n @Inject(WindowContainerSidenavService)\n public readonly service: WindowContainerSidenavService,\n ) {\n }\n\n public ngOnInit(): void {\n const components = this.service.getAll();\n for (const component of components) {\n this.add(component);\n }\n this.subscription.add(this.service.add$.pipe(\n tap(component => this.add(component)),\n ).subscribe());\n this.subscription.add(this.service.remove$.pipe(\n tap(component => this.remove(component)),\n ).subscribe());\n }\n\n public ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n public trackBy(index: number, id: string) {\n return id;\n }\n\n private add(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n throw new Error(`Component portal with id ${ component.id } already exists`);\n }\n const portal = new ComponentPortal(\n component.component,\n component.viewContainerRef,\n component.injector,\n component.componentFactoryResolver,\n );\n this.portals.set(component.id, portal);\n }\n\n private remove(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n const portal = this.portals.get(component.id)!;\n this.portals.delete(component.id);\n portal.detach();\n }\n }\n\n}\n","<div class=\"flex flex-col gap-4 p-2\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" class=\"grow-0\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n","import {\n Directive,\n Inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[rxapFooter]',\n standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n constructor(\n @Inject(FooterService)\n private readonly footerService: FooterService,\n @Inject(TemplateRef)\n private readonly template: TemplateRef<void>,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.footerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.footerService.removePortal(this._portal);\n }\n }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i1.AppUrlService","i3","i4","i5","i6","i8","i1.LayoutComponentService","filter","switchMap","i1.SidenavComponentService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.service.ts","../../../../../packages/angular/layout/src/lib/app-url.service.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.ts","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.html","../../../../../packages/angular/layout/src/lib/header/settings-button/settings-button.component.ts","../../../../../packages/angular/layout/src/lib/header/settings-button/settings-button.component.html","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.ts","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.html","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.ts","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/navigation/replace-router-paths.service.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.html","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.ts","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.html","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.html","../../../../../packages/angular/layout/src/lib/footer.directive.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { LogoConfig } from './types';\nimport { NavigationWithInserts } from './navigation/navigation-item';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n 'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n 'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-footer',\n templateUrl: './footer.component.html',\n styleUrls: [ './footer.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatToolbarModule, NgFor, PortalModule, AsyncPipe ],\n})\nexport class FooterComponent {\n\n constructor(\n public readonly footerService: FooterService,\n ) {\n }\n\n}\n","<ng-template [ngIf]=\"footerService.portals()\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport {\n computed,\n effect,\n Inject,\n Injectable,\n Optional,\n signal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDrawerMode } from '@angular/material/sidenav';\nimport { ConfigService } from '@rxap/config';\nimport { ObserveCurrentThemeDensity } from '@rxap/ngx-theme';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport { RXAP_LOGO_CONFIG } from '../tokens';\nimport { LogoConfig } from '../types';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutComponentService {\n\n public logo: LogoConfig;\n\n public readonly opened: WritableSignal<boolean>;\n public readonly mode: WritableSignal<MatDrawerMode>;\n public readonly pinned: WritableSignal<boolean>;\n public readonly collapsable: WritableSignal<boolean>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n\n private readonly currentThemeDensity = toSignal(ObserveCurrentThemeDensity());\n\n\n public constructor(\n public readonly footerComponentService: FooterService,\n public readonly headerComponentService: HeaderService,\n @Optional() @Inject(RXAP_LOGO_CONFIG) logoConfig: LogoConfig | null = null,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n mediaMatcher: MediaMatcher,\n ) {\n const mobileQuery = mediaMatcher.matchMedia('(max-width: 959px)');\n const mobile = mobileQuery.matches;\n const initialCollapsable = this.config.get('navigation.collapsable', true);\n const collapsable = initialCollapsable && !mobile;\n const pinned = this.config.get('navigation.pinned', false);\n const mode = this.config.get('navigation.mode', pinned || !collapsable ? 'side' : 'over');\n const opened = this.config.get('navigation.opened', (!collapsable || pinned) && !mobile);\n\n this.opened = signal(opened);\n this.mode = signal(mode);\n this.pinned = signal(pinned);\n this.collapsable = signal(collapsable);\n\n this.fixedBottomGap = computed(() => this.footerComponentService.portalCount() * (\n 64 + (\n this.currentThemeDensity() ?? 0\n ) * 4\n ));\n this.fixedTopGap = computed(() => this.headerComponentService.componentCount() * (\n 64 + (\n this.currentThemeDensity() ?? 0\n ) * 4\n ));\n\n this.logo = logoConfig ?? {\n src: 'assets/logo.png',\n width: 192,\n };\n mobileQuery.addEventListener('change', (event) => {\n if (initialCollapsable) {\n this.collapsable.set(!event.matches);\n if (this.collapsable()) {\n if (!this.pinned()) {\n this.opened.set(false);\n }\n }\n }\n });\n effect(() => {\n if (this.pinned()) {\n this.mode.set('side');\n this.opened.set(true);\n } else {\n this.mode.set('over');\n this.opened.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n public toggleOpened() {\n this.opened.set(!this.opened());\n }\n\n public togglePinned() {\n this.pinned.set(!this.pinned());\n }\n\n}\n","import {\n Inject,\n Injectable,\n LOCALE_ID,\n} from '@angular/core';\nimport { AuthorizationService } from '@rxap/authorization';\nimport { ClickOnLink } from '@rxap/browser-utilities';\nimport { ConfigService } from '@rxap/config';\nimport {\n Environment,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { JoinPath } from '@rxap/utilities';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ExternalApps {\n image?: string;\n label: string;\n href: string;\n empty?: false;\n hidden?: boolean;\n id?: string;\n permissions: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppUrlService {\n\n private _apps: Array<ExternalApps>;\n\n constructor(\n private readonly config: ConfigService,\n @Inject(LOCALE_ID)\n private readonly localeId: string,\n private readonly authorizationService: AuthorizationService,\n @Inject(RXAP_ENVIRONMENT)\n private readonly environment: Environment,\n ) {\n this._apps = this.config.get('navigation.apps', []);\n }\n\n public getApp(appId: string): ExternalApps | null {\n return this._apps.find(app => app.id === appId) ?? null;\n }\n\n public getAppUrl(appId: string, path: string, infix: string | null = this.getPathPrefix()): string | null {\n\n const app = this.getApp(appId);\n\n if (app) {\n return JoinPath(app.href, infix, path);\n }\n\n return null;\n\n }\n\n public getAppUrlOrThrow(appId: string, path: string): string {\n const url = this.getAppUrl(appId, path);\n if (url) {\n return url;\n }\n throw new Error(`Could not find app with id \"${ appId }\"`);\n }\n\n public navigate(appId: string, path: string): void {\n\n const url = this.getAppUrl(appId, path);\n\n if (url) {\n ClickOnLink(url);\n }\n\n }\n\n public async getAppList(): Promise<Array<ExternalApps>> {\n const appList = this\n ._apps\n .filter(app => !app.hidden)\n .map(app => ({\n ...app,\n href: JoinPath(app.href, this.getPathPrefix()),\n }));\n\n const filteredAppList: Array<ExternalApps> = [];\n for (const app of appList) {\n if (await firstValueFrom(this.authorizationService.hasPermission$(app.permissions))) {\n filteredAppList.push(app);\n }\n }\n return filteredAppList;\n }\n\n private getPathPrefix(): string {\n if (this.environment.production && this.localeId) {\n return this.localeId.replace(/-.+$/, '');\n }\n return '';\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n signal,\n} from '@angular/core';\nimport { RXAP_LAYOUT_APPS_GRID } from '../../tokens';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n NgFor,\n NgIf,\n NgOptimizedImage,\n} from '@angular/common';\nimport {\n AppUrlService,\n ExternalApps,\n} from '../../app-url.service';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport {\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {\n filter,\n tap,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: [ './apps-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n MatButtonModule,\n MatIconModule,\n NgOptimizedImage,\n ],\n})\nexport class AppsButtonComponent implements OnInit, OnDestroy {\n public isOpen = false;\n\n public readonly appList = signal<Array<ExternalApps>>([]);\n\n private _subscription?: Subscription;\n\n constructor(\n @Optional()\n @Inject(RXAP_LAYOUT_APPS_GRID)\n grid: any,\n private readonly appUrlService: AppUrlService,\n private readonly authenticationService: RxapAuthenticationService,\n ) {}\n\n ngOnInit() {\n this._subscription = this.authenticationService.isAuthenticated$.pipe(\n filter(Boolean),\n switchMap(() => this.appUrlService.getAppList()),\n tap((apps) => this.appList.set(apps)),\n ).subscribe();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n}\n","<div *ngIf=\"appList()?.length\" class=\"flex flex-row items-center gap-8\">\n\n <div *ngIf=\"isOpen\" class=\"flex flex-row items-center gap-6\">\n\n <div *ngFor=\"let app of appList()\" class=\"h-10\">\n <a [href]=\"app.href\" mat-stroked-button>\n <span class=\"flex flex-row items-center gap-4\">\n <img *ngIf=\"app.image\" [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n <span class=\"label grow-0\">{{app.label}}</span>\n </span>\n </a>\n </div>\n\n </div>\n\n <button (click)=\"isOpen = !isOpen\" mat-icon-button>\n <mat-icon svgIcon=\"apps\"></mat-icon>\n </button>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-navigation-progress-bar',\n templateUrl: './navigation-progress-bar.component.html',\n styleUrls: [ './navigation-progress-bar.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatProgressBarModule,\n AsyncPipe,\n ],\n})\nexport class NavigationProgressBarComponent {\n\n public navigating$: Observable<boolean>;\n\n public constructor(\n @Inject(Router) public readonly router: Router,\n ) {\n this.navigating$ = this.router.events.pipe(\n filter(\n event =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel,\n ),\n map(event => event instanceof NavigationStart),\n );\n }\n\n}\n","<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n","import {\n KeyValuePipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { StopPropagationDirective } from '@rxap/directives';\nimport { LanguageSelectorService } from '@rxap/ngx-localize';\n\n@Component({\n selector: 'rxap-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: [ './language-selector.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatFormFieldModule,\n StopPropagationDirective,\n MatSelectModule,\n FormsModule,\n NgFor,\n MatOptionModule,\n KeyValuePipe,\n ],\n})\nexport class LanguageSelectorComponent {\n constructor(public readonly language: LanguageSelectorService) {\n }\n\n}\n","<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\" rxapStopPropagation>\n <mat-label i18n>Select Language</mat-label>\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\" [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n","import {\n ComponentPortal,\n ComponentType,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n Injector,\n isDevMode,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ActivatedRoute } from '@angular/router';\nimport { ChangelogService } from '@rxap/ngx-changelog';\nimport {\n ThemeDensity,\n ThemeService,\n} from '@rxap/ngx-theme';\nimport { Subscription } from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport { LanguageSelectorComponent } from '../language-selector/language-selector.component';\n\n@Component({\n selector: 'rxap-settings-button',\n standalone: true,\n imports: [ CommonModule, MatButtonModule, MatIconModule, LanguageSelectorComponent, MatMenuModule, PortalModule ],\n templateUrl: './settings-button.component.html',\n styleUrls: [ './settings-button.component.scss' ],\n})\nexport class SettingsButtonComponent implements OnInit, OnDestroy {\n\n public isDevMode = isDevMode();\n items = signal<Array<ComponentPortal<unknown>>>([]);\n private _subscription?: Subscription;\n\n private savePreviewDensityValue = false;\n private currentDensityValue: ThemeDensity | null = null;\n\n private savePreviewTypographyValue = false;\n private currentTypographyValue: string | null = null;\n\n public readonly availableTypographies: string[];\n private savePreviewThemeValue = false;\n\n public readonly availableThemes: string[];\n private currentThemeValue: string | null = null;\n\n constructor(\n public readonly theme: ThemeService,\n private readonly route: ActivatedRoute,\n private readonly injector: Injector,\n private readonly changelogService: ChangelogService,\n ) {\n this.availableThemes = this.theme.getAvailableThemes();\n this.availableTypographies = this.theme.getAvailableTypographies();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n ngOnInit() {\n this._subscription = this.route.data.pipe(\n map(data => this.getCustomMenuItems(data)),\n map(items => items.map(item => new ComponentPortal(item, undefined, this.injector))),\n tap(items => this.items.set(items)),\n ).subscribe();\n }\n\n private getCustomMenuItems(data: any): Array<ComponentType<unknown>> {\n if (data?.layout?.header?.menu?.items?.length) {\n return data.layout.header.menu.items;\n }\n return [];\n }\n\n openChangelogDialog() {\n this.changelogService.showChangelogDialog();\n }\n\n previewDensity(density: ThemeDensity) {\n this.theme.applyDensity(density);\n }\n\n restoreDensity() {\n this.theme.applyDensity(this.theme.density());\n }\n\n setDensity(density: ThemeDensity) {\n this.theme.setDensity(density);\n }\n\n previewTypography(typography: string) {\n this.theme.applyTypography(typography);\n }\n\n restoreTypography() {\n this.theme.applyTypography(this.theme.typography());\n }\n\n setTypography(typography: string) {\n this.theme.setTypography(typography);\n }\n\n previewTheme(theme: string) {\n this.theme.applyTheme(theme);\n }\n\n restoreTheme() {\n this.theme.applyTheme(this.theme.themeName());\n }\n\n setTheme(theme: string) {\n this.theme.setTheme(theme);\n }\n\n}\n","<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode()\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode()\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <button [matMenuTriggerFor]=\"themeMenu\" mat-menu-item>\n <mat-icon svgIcon=\"compare\"></mat-icon>\n <span i18n>Theme</span>\n </button>\n <rxap-language-selector></rxap-language-selector>\n <button (click)=\"openChangelogDialog()\" mat-menu-item>\n <mat-icon svgIcon=\"format-list-numbered\"></mat-icon>\n <span i18n>What's new</span>\n </button>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n\n<mat-menu #themeMenu=\"matMenu\" xPosition=\"before\">\n <button [matMenuTriggerFor]=\"themeDensityMenu\" mat-menu-item>\n <mat-icon svgIcon=\"move-resize\"></mat-icon>\n <span i18n>Density</span>\n </button>\n <button [matMenuTriggerFor]=\"themeFontMenu\" mat-menu-item>\n <mat-icon svgIcon=\"format-font\"></mat-icon>\n <span i18n>Font</span>\n </button>\n <button [matMenuTriggerFor]=\"themePresetMenu\" mat-menu-item>\n <mat-icon svgIcon=\"shape-outline\"></mat-icon>\n <span i18n>Preset</span>\n </button>\n</mat-menu>\n\n<mat-menu #themeDensityMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setDensity(0)\" (mouseenter)=\"previewDensity(0)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-l\"></mat-icon>\n <span i18n>Normal</span>\n </button>\n <button (click)=\"setDensity(-1)\" (mouseenter)=\"previewDensity(-1)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-m\"></mat-icon>\n <span i18n>Dense</span>\n </button>\n <button (click)=\"setDensity(-2)\" (mouseenter)=\"previewDensity(-2)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-s\"></mat-icon>\n <span i18n>Very Dense</span>\n </button>\n <button (click)=\"setDensity(-3)\" (mouseenter)=\"previewDensity(-3)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-xs\"></mat-icon>\n <span i18n>Extreme Dense</span>\n </button>\n</mat-menu>\n<mat-menu #themeFontMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setTypography(typographyName)\"\n (mouseenter)=\"previewTypography(typographyName)\"\n (mouseleave)=\"restoreTypography()\"\n *ngFor=\"let typographyName of availableTypographies\"\n mat-menu-item>\n {{ typographyName }}\n </button>\n</mat-menu>\n\n<mat-menu #themePresetMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setTheme(themeName)\"\n (mouseenter)=\"previewTheme(themeName)\"\n (mouseleave)=\"restoreTheme()\"\n *ngFor=\"let themeName of availableThemes\"\n mat-menu-item>\n {{ themeName }}\n </button>\n</mat-menu>\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { LayoutComponentService } from '../../layout/layout.component.service';\n\n@Component({\n selector: 'rxap-sidenav-toggle-button',\n templateUrl: './sidenav-toggle-button.component.html',\n styleUrls: [ './sidenav-toggle-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatButtonModule,\n NgIf,\n MatIconModule,\n ],\n})\nexport class SidenavToggleButtonComponent {\n\n public readonly opened: Signal<boolean>;\n\n constructor(public readonly layoutComponentService: LayoutComponentService) {\n this.opened = layoutComponentService.opened;\n }\n\n}\n","<button (click)=\"layoutComponentService.toggleOpened()\" mat-icon-button>\n <mat-icon *ngIf=\"!opened()\">menu</mat-icon>\n <mat-icon *ngIf=\"opened()\">menu_open</mat-icon>\n</button>\n","import {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n InjectionToken,\n Signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport { UserProfileDataSource } from '@rxap/ngx-user';\nimport {\n distinctUntilChanged,\n filter,\n skip,\n} from 'rxjs';\nimport {\n map,\n switchMap,\n} from 'rxjs/operators';\n\nexport type ExtractUsernameFromProfileFn<T = unknown> = (profile: T) => string | null;\n\nexport const EXTRACT_USERNAME_FROM_PROFILE = new InjectionToken<ExtractUsernameFromProfileFn>(\n 'extract-username-from-profile',\n {\n providedIn: 'root',\n factory: () => (profile: any) => (profile ? profile.username ?? profile.email ?? profile.name : null) ?? null,\n },\n);\n\n@Component({\n selector: 'rxap-user-profile-icon',\n templateUrl: './user-profile-icon.component.html',\n styleUrls: [ './user-profile-icon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatMenuModule,\n MatIconModule,\n NgIf,\n AsyncPipe,\n ],\n})\nexport class UserProfileIconComponent<T = unknown> {\n\n public username: Signal<string | null>;\n\n constructor(\n private readonly userProfileService: UserProfileDataSource<T>,\n private readonly authenticationService: RxapAuthenticationService,\n @Inject(EXTRACT_USERNAME_FROM_PROFILE)\n extractUsernameFromProfile: ExtractUsernameFromProfileFn<T>,\n ) {\n this.username = toSignal(this.authenticationService.isAuthenticated$.pipe(\n filter(Boolean),\n switchMap(() => this.userProfileService.connect({\n viewChange: this.authenticationService.isAuthenticated$.pipe(\n skip(1),\n filter(Boolean),\n distinctUntilChanged(),\n ),\n })),\n filter(Boolean),\n map(extractUsernameFromProfile),\n ), { initialValue: null });\n }\n\n public async logout() {\n await this.authenticationService.signOut();\n }\n\n\n}\n","<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n <button mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </span>\n </button>\n</mat-menu>\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n Optional,\n Signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatOptionModule,\n ThemePalette,\n} from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { DataSourceCollectionDirective } from '@rxap/data-source/directive';\nimport { StopPropagationDirective } from '@rxap/directives';\nimport { HeaderService } from '@rxap/services';\nimport { LayoutComponentService } from '../layout/layout.component.service';\nimport { RXAP_HEADER_COMPONENT } from '../tokens';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { NavigationProgressBarComponent } from './navigation-progress-bar/navigation-progress-bar.component';\nimport { SettingsButtonComponent } from './settings-button/settings-button.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatToolbarModule,\n NgClass,\n NgIf,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n MatFormFieldModule,\n StopPropagationDirective,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n DataSourceCollectionDirective,\n MatSlideToggleModule,\n AsyncPipe,\n NavigationProgressBarComponent,\n UserProfileIconComponent,\n AppsButtonComponent,\n SettingsButtonComponent,\n SidenavToggleButtonComponent,\n ],\n})\nexport class HeaderComponent {\n\n @Input()\n public color: ThemePalette = undefined;\n\n public readonly collapsable: Signal<boolean>;\n public readonly opened: Signal<boolean>;\n\n constructor(\n @Inject(HeaderService)\n public readonly headerComponentService: HeaderService,\n public readonly layoutComponentService: LayoutComponentService,\n @Optional() @Inject(RXAP_HEADER_COMPONENT) public headerComponent: any,\n ) {\n this.collapsable = layoutComponentService.collapsable;\n this.opened = layoutComponentService.opened;\n }\n\n}\n","<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: opened() }\" class=\"mat-elevation-z3 header\">\n <div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n <rxap-sidenav-toggle-button *ngIf=\"!collapsable()\"></rxap-sidenav-toggle-button>\n <div class=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n <rxap-user-profile-icon class=\"grow-0\"></rxap-user-profile-icon>\n </div>\n</mat-toolbar>\n\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sign-out',\n templateUrl: './sign-out.component.html',\n styleUrls: [ './sign-out.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class SignOutComponent {\n\n constructor(\n private readonly authenticationService: RxapAuthenticationService,\n ) {\n }\n\n public async logout() {\n await this.authenticationService.signOut();\n }\n\n}\n","<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { ResetService } from '@rxap/services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-reset-button',\n templateUrl: './reset-button.component.html',\n styleUrls: [ './reset-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class ResetButtonComponent {\n constructor(\n @Inject(ResetService)\n public readonly resetService: ResetService,\n ) {\n }\n}\n","<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon svgIcon=\"refresh\"></mat-icon>\n</button>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigService } from '@rxap/config';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavComponentService {\n\n public readonly collapsed$ = new BehaviorSubject(true);\n\n constructor(private readonly config: ConfigService) {\n this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));\n }\n\n public toggleNavigationCollapse(): void {\n this.collapsed$.next(!this.collapsed$.value);\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Renderer2,\n signal,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Required } from '@rxap/utilities';\nimport {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\nimport {\n debounceTime,\n Subscription,\n} from 'rxjs';\nimport {\n filter,\n startWith,\n tap,\n} from 'rxjs/operators';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { SidenavComponentService } from '../../sidenav/sidenav.component.service';\nimport { NavigationComponent } from '../navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\nimport {\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from '../navigation-item';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[rxap-navigation-item]',\n templateUrl: './navigation-item.component.html',\n styleUrls: [ './navigation-item.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('sub-nav', [\n transition(':enter', [\n style({\n display: 'block',\n height: '0',\n overflow: 'hidden',\n }),\n animate(150, style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate(300, style({ height: '0' })),\n style({ display: 'none' }),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n RouterLinkActive,\n RouterLink,\n NgIf,\n MatRippleModule,\n MatIconModule,\n IconDirective,\n MatDividerModule,\n forwardRef(() => NavigationComponent),\n NgClass,\n ],\n})\nexport class NavigationItemComponent\n implements OnChanges, OnDestroy {\n\n @Input()\n public level = 0;\n\n private _isActive = false;\n\n public children: Navigation | null = null;\n\n @ViewChild(RouterLinkActive, { static: true })\n public routerLinkActive!: RouterLinkActive;\n\n @Input({ required: true })\n public item!: NavigationItem;\n\n public active = signal(false);\n\n @HostBinding('class.active')\n get isActive(): boolean {\n return this._isActive;\n }\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.active.set(value);\n }\n\n private readonly _subscription = new Subscription();\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef,\n @Inject(Renderer2)\n private readonly renderer: Renderer2,\n @Inject(Overlay)\n private readonly overlay: Overlay,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['item']) {\n const item: NavigationItem = changes['item'].currentValue;\n this.children =\n item.children && item.children.length ? item.children : null;\n }\n }\n\n public ngAfterViewInit() {\n this._subscription.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n debounceTime(100),\n startWith(true),\n tap(() => {\n let isActive = true;\n const urlParts = this.router.url.split('/');\n if (urlParts[0] === '') {\n urlParts[0] = '/';\n }\n for (let i = 0; i < this.item.routerLink.length; i++) {\n if (urlParts[i] !== this.item.routerLink[i]) {\n isActive = false;\n break;\n }\n }\n this.isActive = isActive;\n if (isActive) {\n this.renderer.addClass(this.elementRef.nativeElement, 'active');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'active');\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n","import { IconConfig } from '@rxap/utilities';\nimport {\n AbstractType,\n InjectionToken,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n | NavigationItem<NavigationWithInserts>\n | NavigationDividerItem\n | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n divider: boolean;\n title?: string;\n}\n\nexport function IsNavigationDividerItem(\n item: any,\n): item is NavigationDividerItem {\n return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n insert: string;\n}\n\nexport function IsNavigationInsertItem(\n item: any,\n): item is NavigationInsertItem {\n return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n isVisible(\n navigationItem: NavigationItem,\n ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n routerLink: string[];\n label: string;\n children?: Children;\n icon?: IconConfig;\n status?: Array<\n | Type<NavigationStatus>\n | InjectionToken<NavigationStatus>\n | AbstractType<NavigationStatus>\n >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n return (\n !!item && !!item['routerLink'] && !!item['label']\n );\n}\n","import type { Injector } from '@angular/core';\nimport {\n Inject,\n Injectable,\n INJECTOR,\n Optional,\n} from '@angular/core';\nimport {\n combineLatest,\n from,\n Observable,\n of,\n ReplaySubject,\n} from 'rxjs';\nimport {\n IsNavigationDividerItem,\n IsNavigationInsertItem,\n IsNavigationItem,\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n NavigationWithInserts,\n} from './navigation-item';\nimport {\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n} from '../tokens';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n public readonly config$: Observable<Navigation>;\n\n private inserts = new Map<string, NavigationWithInserts>();\n\n private readonly navigation: NavigationWithInserts;\n\n private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n constructor(\n @Inject(RXAP_NAVIGATION_CONFIG)\n navigation: any,\n @Inject(INJECTOR)\n private readonly injector: Injector,\n @Optional()\n @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n inserts: any | null = null,\n ) {\n if (typeof navigation === 'function') {\n this.navigation = navigation();\n } else {\n this.navigation = navigation;\n }\n if (inserts) {\n Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n this.insert(id, insert, false),\n );\n }\n this.updateNavigation();\n this.config$ = this.navigation$.pipe(\n switchMap((navigationWithoutStatusCheck) =>\n this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n ),\n );\n }\n\n /**\n * @deprecated use add instead\n * @param id\n * @param value\n * @param update\n */\n public insert(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.add(id, value, update);\n }\n\n public add(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.inserts.set(id, value);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public has(id: string): boolean {\n return this.inserts.has(id);\n }\n\n public get(id: string): NavigationWithInserts | undefined {\n return this.inserts.get(id);\n }\n\n public remove(id: string, update = true): void {\n this.inserts.delete(id);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public updateNavigation(): void {\n this.navigation$.next(this.replaceInserts(this.navigation));\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationItemStatusProviders(\n navigationItem: NavigationItem | NavigationDividerItem,\n ): Observable<NavigationItem | NavigationDividerItem | null> {\n if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {\n return of(navigationItem);\n }\n const isVisibleArray$: Array<Observable<boolean>> = navigationItem.status\n .map((statusToken) => this.injector.get(\n statusToken))\n .map((status) => {\n const isVisible = status.isVisible(\n navigationItem);\n if (typeof isVisible === 'boolean') {\n return of(isVisible);\n } else {\n return from(isVisible);\n }\n })\n .map(isVisible$ => isVisible$.pipe(catchError(e => {\n console.error('isVisible method failed: ' +\n e.message);\n return of(false);\n })));\n // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n return combineLatest(isVisibleArray$).pipe(\n map((isVisibleArray) =>\n isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n ),\n map((isVisible) => (isVisible ? navigationItem : null)),\n switchMap((navigationItemOrNull) => {\n if (navigationItemOrNull) {\n if (navigationItemOrNull.children?.length) {\n return this.checkNavigationStatusProviders(\n navigationItemOrNull.children,\n ).pipe(\n map((children) => ({\n ...navigationItemOrNull,\n children,\n })),\n );\n }\n return of(navigationItemOrNull);\n }\n return of(null);\n }),\n );\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationStatusProviders(\n navigation: Navigation,\n ): Observable<Navigation> {\n return combineLatest(\n navigation.map((navigationItem) =>\n this.checkNavigationItemStatusProviders(navigationItem),\n ),\n ).pipe(\n map((navigationWithNullItems) => {\n const cleanNavigation: Navigation = [];\n\n for (const navigationItem of navigationWithNullItems) {\n if (navigationItem !== null) {\n cleanNavigation.push(navigationItem);\n }\n }\n\n return cleanNavigation;\n }),\n );\n }\n\n private replaceInserts(\n navigationWithInserts: NavigationWithInserts,\n ): Navigation {\n const navigation: Navigation = [];\n\n for (const navigationItem of navigationWithInserts) {\n if (IsNavigationInsertItem(navigationItem)) {\n if (this.inserts.has(navigationItem.insert)) {\n navigation.push(\n ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n );\n }\n } else if (IsNavigationItem(navigationItem)) {\n navigation.push({\n ...navigationItem,\n children: this.replaceInserts(navigationItem.children ?? []),\n });\n } else if (IsNavigationDividerItem(navigationItem)) {\n navigation.push(navigationItem);\n }\n }\n\n return navigation;\n }\n}\n","import {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { coerceBoolean } from '@rxap/utilities';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { SidenavComponentService } from '../sidenav/sidenav.component.service';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from './navigation-item';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\nimport { NavigationService } from './navigation.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[rxap-navigation]',\n templateUrl: './navigation.component.html',\n styleUrls: [ './navigation.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'list-none dark:text-neutral-400 text-neutral-700',\n },\n imports: [\n NgFor,\n NgIf,\n MatDividerModule,\n forwardRef(() => NavigationItemComponent),\n AsyncPipe,\n ],\n})\nexport class NavigationComponent implements OnInit, OnDestroy {\n @Input()\n public items!: Navigation;\n public subscription?: Subscription;\n @Input()\n public level = 0;\n\n constructor(\n @Inject(NavigationService)\n private readonly navigationService: NavigationService,\n @Inject(ChangeDetectorRef)\n private readonly cdr: ChangeDetectorRef,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n ) {\n }\n\n @HostBinding('class.rxap-root-navigation')\n public _root = false;\n\n @Input()\n public set root(value: boolean | '') {\n this._root = coerceBoolean(value);\n }\n\n public ngOnInit(): void {\n if (this._root) {\n this.items = [];\n this.subscription = this.navigationService.config$\n .pipe(\n tap((navigation) => (this.items = navigation)),\n tap(() => this.cdr.detectChanges()),\n )\n .subscribe();\n }\n this.items ??= [];\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n NgOptimizedImage,\n NgStyle,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MatDrawerMode,\n MatSidenav,\n MatSidenavModule,\n} from '@angular/material/sidenav';\nimport {\n RouterLink,\n RouterOutlet,\n} from '@angular/router';\nimport {\n DetermineReleaseName,\n Environment,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { IconLoaderService } from '@rxap/icon';\nimport { StatusIndicatorComponent } from '@rxap/ngx-status-check';\nimport { ThemeService } from '@rxap/ngx-theme';\nimport {\n IsThemeDensity,\n ThemeDensity,\n UserSettingsThemeService,\n} from '@rxap/ngx-user';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { LayoutComponentService } from './layout.component.service';\n\n\n@Component({\n selector: 'rxap-layout',\n templateUrl: './layout.component.html',\n styleUrls: [ './layout.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n HeaderComponent,\n MatSidenavModule,\n AsyncPipe,\n MatIconModule,\n MatButtonModule,\n RouterLink,\n NgIf,\n FooterComponent,\n MatMenuModule,\n NgOptimizedImage,\n NavigationComponent,\n RouterOutlet,\n StatusIndicatorComponent,\n NgStyle,\n NgClass,\n ],\n})\nexport class LayoutComponent implements OnInit, OnDestroy {\n\n public readonly sidenavMode: Signal<MatDrawerMode>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n public readonly pinned: Signal<boolean>;\n public readonly collapsable: Signal<boolean>;\n public readonly logoSrc: string;\n public readonly logoWidth: number;\n public readonly release: string;\n public readonly opened: Signal<boolean>;\n\n @ViewChild(MatSidenav, { static: true }) public sidenav!: MatSidenav;\n\n private readonly userSettingsThemeService = inject(UserSettingsThemeService);\n private readonly themeService = inject(ThemeService);\n\n constructor(\n public readonly layoutComponentService: LayoutComponentService,\n @Inject(RXAP_ENVIRONMENT)\n private readonly environment: Environment,\n iconLoaderService: IconLoaderService,\n ) {\n iconLoaderService.load();\n this.fixedBottomGap = layoutComponentService.fixedBottomGap;\n this.fixedTopGap = layoutComponentService.fixedTopGap;\n this.pinned = layoutComponentService.pinned;\n this.collapsable = layoutComponentService.collapsable;\n this.opened = layoutComponentService.opened;\n this.sidenavMode = layoutComponentService.mode;\n this.logoSrc = this.layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px';\n this.logoWidth = this.layoutComponentService.logo.width ?? 256;\n this.release = DetermineReleaseName(this.environment);\n }\n\n ngOnDestroy() {\n this.userSettingsThemeService.stopSync();\n }\n\n ngOnInit() {\n this.userSettingsThemeService.startSync();\n this.userSettingsThemeService.get().then(theme => {\n if (theme.preset && theme.preset !== 'default') {\n this.themeService.setTheme(theme.preset, true);\n }\n if (theme.density && IsThemeDensity(theme.density) && theme.density !== ThemeDensity.Normal) {\n this.themeService.setDensity(theme.density, true);\n }\n if (theme.typography && theme.typography !== 'default') {\n this.themeService.setTypography(theme.typography, true);\n }\n });\n }\n\n}\n","<rxap-status-indicator class=\"fixed bottom-0 right-0 z-10\"></rxap-status-indicator>\n<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container [ngStyle]=\"{\n 'margin-top.px': fixedTopGap(),\n 'margin-bottom.px': fixedBottomGap(),\n }\" class=\"grow\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n [fixedBottomGap]=\"fixedBottomGap()\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"fixedTopGap()\"\n [mode]=\"sidenavMode()\"\n [ngClass]=\"{ collapsable: collapsable() }\"\n class=\"sidenav\"\n [opened]=\"opened()\"\n >\n <div (mouseleave)=\"collapsable() && !pinned() && matSidenav.close()\"\n class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"layoutComponentService.togglePinned()\" *ngIf=\"collapsable()\"\n class=\"pl-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <div class=\"flex flex-row items-center justify-center\" style=\"width: 64px\">\n <button mat-icon-button>\n <mat-icon *ngIf=\"!pinned()\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"pinned()\">radio_button_checked</mat-icon>\n </button>\n </div>\n </div>\n\n <ul\n (mouseenter)=\"collapsable() && !pinned() && matSidenav.open()\"\n class=\"grow self-stretch\"\n root\n rxap-navigation\n >\n </ul>\n\n <img\n [src]=\"logoSrc\"\n [routerLink]=\"['/']\"\n [width]=\"logoWidth\"\n alt=\"logo\"\n class=\"grow-0 mx-16\"\n />\n <div class=\"grow-0 px-16\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content [ngClass]=\"{ 'ml-16': collapsable() }\" class=\"p-4\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ReplaceRouterPathsService {\n\n public transform(routerLink: string[]): Observable<string[]> {\n return of(routerLink);\n }\n\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavFooter]',\n standalone: true,\n})\nexport class SidenavFooterDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavHeader]',\n standalone: true,\n})\nexport class SidenavHeaderDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\nimport { SidenavComponentService } from './sidenav.component.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport {\n AsyncPipe,\n NgClass,\n NgIf,\n NgTemplateOutlet,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: [ './sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-layout-sidenav',\n },\n standalone: true,\n imports: [\n NgClass,\n NgIf,\n NgTemplateOutlet,\n MatDividerModule,\n NavigationComponent,\n MatButtonModule,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class SidenavComponent {\n\n @ContentChild(SidenavFooterDirective)\n public sidenavFooterDirective?: SidenavFooterDirective;\n\n @ContentChild(SidenavHeaderDirective)\n public sidenavHeaderDirective?: SidenavHeaderDirective;\n\n constructor(public readonly sidenav: SidenavComponentService) {\n }\n\n}\n","<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"rxap-container\">\n <div class=\"inner flex flex-col justify-between items-stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"header grow-0\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"grow-0\"></mat-divider>\n </ng-template>\n <div class=\"nav-container grow\">\n <ul class=\"flex flex-col\" root rxap-navigation></ul>\n </div>\n <mat-divider class=\"grow-0\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle grow-0\"\n mat-button>\n <span class=\"sidebar-toggle-inner flex flex-row items-center gap-4\">\n <mat-icon class=\"arrow grow-0\">double_arrow</mat-icon>\n <span [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"label grow-0\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"grow-0\"></mat-divider>\n <div [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"footer grow-0\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n Version,\n VersionService,\n} from '@rxap/services';\nimport {\n KeyValue,\n Required,\n} from '@rxap/utilities';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {\n KeyValuePipe,\n NgFor,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-version',\n templateUrl: './version.component.html',\n styleUrls: [ './version.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgFor, KeyValuePipe ],\n})\nexport class VersionComponent implements OnInit, OnDestroy {\n\n public modules!: KeyValue<Version>;\n\n private subscription?: Subscription;\n\n constructor(\n @Inject(VersionService) private version: VersionService,\n ) {\n }\n\n public ngOnInit(): void {\n this.modules = this.version.get();\n this.subscription = this.version.update$.pipe(\n tap(() => this.modules = this.version.get()),\n ).subscribe();\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n}\n","<div class=\"version flex flex-col gap-2\">\n <div *ngFor=\"let module of modules | keyvalue\" class=\"flex flex-col\">\n <span class=\"name grow-0\">{{module.value.name}}</span>\n <span class=\"semantic grow-0\">{{module.value.semantic}}</span>\n <span class=\"hash grow-0\">{{module.value.hash}}</span>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-toggle-window-sidenav-button',\n templateUrl: './toggle-window-sidenav-button.component.html',\n styleUrls: [ './toggle-window-sidenav-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-toggle-window-sidenav-button',\n },\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class ToggleWindowSidenavButtonComponent {\n\n @Input()\n public openWindowSidenav = false;\n\n @Output()\n public openWindowSidenavChange = new EventEmitter<boolean>();\n\n public toggle() {\n this.openWindowSidenav = !this.openWindowSidenav;\n this.openWindowSidenavChange.emit(this.openWindowSidenav);\n }\n\n}\n","<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon svgIcon=\"arrow-left-bold\"></mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon svgIcon=\"arrow-right-bold\"></mat-icon>\n </ng-template>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n ContainerComponent,\n WindowContainerSidenavService,\n} from '@rxap/services';\nimport {\n ComponentPortal,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'rxap-window-container-sidenav',\n templateUrl: './window-container-sidenav.component.html',\n styleUrls: [ './window-container-sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgFor, PortalModule ],\n})\nexport class WindowContainerSidenavComponent implements OnInit, OnDestroy {\n\n public portals = new Map<string, ComponentPortal<any>>();\n\n private subscription = new Subscription();\n\n constructor(\n @Inject(WindowContainerSidenavService)\n public readonly service: WindowContainerSidenavService,\n ) {\n }\n\n public ngOnInit(): void {\n const components = this.service.getAll();\n for (const component of components) {\n this.add(component);\n }\n this.subscription.add(this.service.add$.pipe(\n tap(component => this.add(component)),\n ).subscribe());\n this.subscription.add(this.service.remove$.pipe(\n tap(component => this.remove(component)),\n ).subscribe());\n }\n\n public ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n public trackBy(index: number, id: string) {\n return id;\n }\n\n private add(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n throw new Error(`Component portal with id ${ component.id } already exists`);\n }\n const portal = new ComponentPortal(\n component.component,\n component.viewContainerRef,\n component.injector,\n component.componentFactoryResolver,\n );\n this.portals.set(component.id, portal);\n }\n\n private remove(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n const portal = this.portals.get(component.id)!;\n this.portals.delete(component.id);\n portal.detach();\n }\n }\n\n}\n","<div class=\"flex flex-col gap-4 p-2\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" class=\"grow-0\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n","import {\n Directive,\n Inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[rxapFooter]',\n standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n constructor(\n @Inject(FooterService)\n private readonly footerService: FooterService,\n @Inject(TemplateRef)\n private readonly template: TemplateRef<void>,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.footerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.footerService.removePortal(this._portal);\n }\n }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i1.AppUrlService","i3","i4","i5","i6","i8","i1.LayoutComponentService","filter","switchMap","i1.SidenavComponentService"],"mappings":"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"}
|