{"version":3,"file":"cauca-911-menu.mjs","sources":["../../../projects/cauca-menu/src/lib/provide-cauca-menu.ts","../../../projects/cauca-menu/src/lib/components/header/user-menu-header/user-menu-header.component.ts","../../../projects/cauca-menu/src/lib/components/header/user-menu-header/user-menu-header.component.html","../../../projects/cauca-menu/src/lib/components/header/language-menu/language-menu.component.ts","../../../projects/cauca-menu/src/lib/components/header/language-menu/language-menu.component.html","../../../projects/cauca-menu/src/lib/components/header/menu-separator/menu-separator.component.ts","../../../projects/cauca-menu/src/lib/components/header/menu-separator/menu-separator.component.html","../../../projects/cauca-menu/src/lib/services/user-agent-reader.service.ts","../../../projects/cauca-menu/src/lib/services/screen-size.service.ts","../../../projects/cauca-menu/src/lib/services/menu-state.service.ts","../../../projects/cauca-menu/src/lib/services/user-password.service.ts","../../../projects/cauca-menu/src/lib/components/change-password-dialog/change-password-dialog.component.ts","../../../projects/cauca-menu/src/lib/components/change-password-dialog/change-password-dialog.component.html","../../../projects/cauca-menu/src/lib/components/header/help-menu/help-menu.component.ts","../../../projects/cauca-menu/src/lib/components/header/help-menu/help-menu.component.html","../../../projects/cauca-menu/src/lib/components/header/generic-menu/generic-sub-menu/generic-sub-menu.component.ts","../../../projects/cauca-menu/src/lib/components/header/generic-menu/generic-sub-menu/generic-sub-menu.component.html","../../../projects/cauca-menu/src/lib/components/header/generic-menu/generic-menu.component.ts","../../../projects/cauca-menu/src/lib/components/header/generic-menu/generic-menu.component.html","../../../projects/cauca-menu/src/lib/components/header/logged-in-user-header/logged-in-user-header.component.ts","../../../projects/cauca-menu/src/lib/components/header/logged-in-user-header/logged-in-user-header.component.html","../../../projects/cauca-menu/src/lib/components/header/logged-out-user-header/logged-out-user-header.component.ts","../../../projects/cauca-menu/src/lib/components/header/logged-out-user-header/logged-out-user-header.component.html","../../../projects/cauca-menu/src/lib/components/logged-in-layout/logged-in-layout.component.ts","../../../projects/cauca-menu/src/lib/components/logged-in-layout/logged-in-layout.component.html","../../../projects/cauca-menu/src/lib/components/header/header-bar/header-bar.component.ts","../../../projects/cauca-menu/src/lib/components/header/header-bar/header-bar.component.html","../../../projects/cauca-menu/src/lib/components/menu/side-menu-item/side-menu-item.component.ts","../../../projects/cauca-menu/src/lib/components/menu/side-menu-item/side-menu-item.component.html","../../../projects/cauca-menu/src/lib/components/menu/side-menu-footer/side-menu-footer.component.ts","../../../projects/cauca-menu/src/lib/components/menu/side-menu-footer/side-menu-footer.component.html","../../../projects/cauca-menu/src/lib/components/menu/side-menu-logo/side-menu-logo.component.ts","../../../projects/cauca-menu/src/lib/components/menu/side-menu-logo/side-menu-logo.component.html","../../../projects/cauca-menu/src/lib/components/menu/side-menu-container/side-menu-container.component.ts","../../../projects/cauca-menu/src/lib/components/menu/side-menu-container/side-menu-container.component.html","../../../projects/cauca-menu/src/lib/components/menu/side-menu/side-menu.component.ts","../../../projects/cauca-menu/src/lib/components/menu/side-menu/side-menu.component.html","../../../projects/cauca-menu/src/public-api.ts","../../../projects/cauca-menu/src/cauca-911-menu.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Injector, Provider, Signal, Type } from \"@angular/core\";\r\nimport { MenuLogoProvider, SideMenuItemOption } from \"./services/menu-state.service\";\r\nimport { HeaderLink } from \"./models/header-link\";\r\nimport { GenericMenuManager } from \"./components/header/generic-menu/generic-menu.component\";\r\n\r\nexport function provideCaucaMenu(option: CaucaMenuOptions): (Provider|EnvironmentProviders) {\r\n  const internalOptions: InternalCaucaMenuOptions = {\r\n    showLoginButtonInHeader: option.showLoginButtonInHeader ?? false,\r\n    showSpanishLanguageOption: option.showSpanishLanguageOption ?? false\r\n  };\r\n  const providers: (Provider|EnvironmentProviders)[] = [\r\n    { provide: APP_VERSION_TOKEN, useValue: option.applicationVersion },\r\n    { provide: LOGO_PATH_TOKEN, useValue: option.logoPath || '/assets/images/logo.svg' },\r\n    { provide: MENU_ITEMS_PROVIDER_TOKEN, useFactory: (injector: Injector) => injector.get(option.menuItemsProvider), deps: [Injector] },\r\n    { provide: LOGOUT_HANDLER_TOKEN, useFactory: (injector: Injector) => injector.get(option.logoutHandler), deps: [Injector] },\r\n    { provide: LOGIN_STATE_TOKEN, useFactory: (injector: Injector) => injector.get(option.loginState), deps: [Injector] },\r\n    { provide: INTERNAL_CAUCA_MENU_OPTIONS_TOKEN, useValue: internalOptions },\r\n    { provide: ALLOW_PASSWORD_CHANGE_TOKEN, useValue: option.allowPasswordChange ?? false }\r\n  ];\r\n  if (option.genericMenuProvider) {\r\n    providers.push({ provide: GENERIC_MENU_PROVIDER_TOKEN, useFactory: (injector: Injector) => injector.get(option.genericMenuProvider), deps: [Injector] });\r\n  }\r\n  if (option.logoProvider) {\r\n    providers.push({ provide: MENU_LOGO_PROVIDER_TOKEN, useFactory: (injector: Injector) => injector.get(option.logoProvider), deps: [Injector] });\r\n  }\r\n  if (option.headerLinkLoader) {\r\n    providers.push({ provide: HEADER_LINK_LOADER_TOKEN, useFactory: (injector: Injector) => injector.get(option.headerLinkLoader), deps: [Injector] });\r\n  }\r\n  if (option.englishLogoPath) {\r\n    providers.push({ provide: ENGLISH_LOGO_PATH_TOKEN, useValue: option.englishLogoPath });\r\n  }\r\n  return providers;\r\n}\r\n\r\nexport interface CaucaMenuOptions  {\r\n    applicationVersion: string;\r\n    logoPath?: string;\r\n    englishLogoPath?: string;\r\n    menuItemsProvider: Type<MenuItemsProvider>;\r\n    logoutHandler: Type<LogoutHandler>;\r\n    loginState: Type<LoginState>;\r\n    headerLinkLoader?: Type<HeaderLinkLoader>;\r\n    showLoginButtonInHeader?: boolean;\r\n    showSpanishLanguageOption?: boolean;\r\n    genericMenuProvider?: Type<GenericMenuManager>;\r\n    logoProvider?: Type<MenuLogoProvider>;\r\n    allowPasswordChange?: boolean;\r\n}\r\n\r\nexport interface InternalCaucaMenuOptions {\r\n  showLoginButtonInHeader: boolean;\r\n  showSpanishLanguageOption: boolean;\r\n}\r\n\r\nexport const APP_VERSION_TOKEN = new InjectionToken<string>('Application Version');\r\nexport const LOGO_PATH_TOKEN = new InjectionToken<string>('Logo Path');\r\nexport const ENGLISH_LOGO_PATH_TOKEN = new InjectionToken<string>('English Logo Path');\r\nexport const MENU_ITEMS_PROVIDER_TOKEN = new InjectionToken<MenuItemsProvider>('Menu Items Provider');\r\nexport const LOGOUT_HANDLER_TOKEN = new InjectionToken<LogoutHandler>('Logout Handler');\r\nexport const LOGIN_STATE_TOKEN = new InjectionToken<LoginState>('Login State');\r\nexport const HEADER_LINK_LOADER_TOKEN = new InjectionToken<HeaderLinkLoader>('Header Link Loader');\r\nexport const INTERNAL_CAUCA_MENU_OPTIONS_TOKEN = new InjectionToken<InternalCaucaMenuOptions>('Internal Cauca Menu Options');\r\nexport const GENERIC_MENU_PROVIDER_TOKEN = new InjectionToken<GenericMenuManager>('Generic Menu Provider');\r\nexport const MENU_LOGO_PROVIDER_TOKEN = new InjectionToken<MenuLogoProvider>('Menu Logo Provider');\r\nexport const ALLOW_PASSWORD_CHANGE_TOKEN = new InjectionToken<boolean>('Allow Password Change Option Provider');\r\n\r\nexport interface MenuItemsProvider {\r\n  items: Signal<SideMenuItemOption[]>;\r\n}\r\n\r\nexport interface LogoutHandler {\r\n  logoutWithMessage(): Promise<void>;\r\n  logout(): Promise<void>;\r\n}\r\n\r\nexport interface HeaderLinkLoader {\r\n  getLinks(): Promise<HeaderLink[]>;\r\n}\r\n\r\nexport interface LoginState {\r\n  userFullName: Signal<string>;\r\n  username: Signal<string>;\r\n  userId: Signal<string>;\r\n  isLoggedOn: Signal<boolean>;\r\n}","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { LOGIN_STATE_TOKEN } from '../../../provide-cauca-menu';\r\n\r\n@Component({\r\n    selector: 'cauca-user-menu-header',\r\n    imports: [],\r\n    templateUrl: './user-menu-header.component.html',\r\n    styleUrl: './user-menu-header.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UserMenuHeaderComponent {\r\n  public readonly loginState = inject(LOGIN_STATE_TOKEN);\r\n}\r\n","<div class=\"menu-header\">\r\n  <div class=\"header-content\">\r\n    <div class=\"header-content-text\">\r\n      <div class=\"body1 fullname\">{{loginState.userFullName()}}</div>\r\n      <div class=\"body2 username\">{{loginState.username()}}</div>\r\n    </div>\r\n  </div>\r\n</div>","import { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\r\nimport { Location } from '@angular/common';\r\n\r\nimport { CaucaCoreService } from '@cauca-911/core';\r\nimport { MenuItemComponent, IconButtonComponent } from '@cauca-911/material';\r\nimport { INTERNAL_CAUCA_MENU_OPTIONS_TOKEN } from '../../../provide-cauca-menu';\r\n\r\n@Component({\r\n    selector: 'cauca-language-menu',\r\n    imports: [MatMenu, MenuItemComponent, IconButtonComponent, MatMenuTrigger],\r\n    templateUrl: './language-menu.component.html',\r\n    styleUrl: './language-menu.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LanguageMenuComponent {\r\n\r\n  public isSubMenu = input(false);\r\n  public languages = computed(() => {\r\n    if (this.showSpanishLanguage()) {\r\n      return [...this.basicLanguages, { code: 'es', description: 'Español' }];\r\n    }\r\n    return this.basicLanguages;\r\n  });\r\n\r\n  private basicLanguages: Language[] = [\r\n    { code: 'fr', description: 'Français' },\r\n    { code: 'en', description: 'English' }\r\n  ];\r\n\r\n  private readonly location = inject(Location);\r\n  private readonly coreService = inject(CaucaCoreService);\r\n  private readonly showSpanishLanguage = signal<boolean>(inject(INTERNAL_CAUCA_MENU_OPTIONS_TOKEN).showSpanishLanguageOption);\r\n\r\n  public setLanguage(languageCode: string): void {\r\n    this.coreService.setLanguage(languageCode);\r\n    this.location.historyGo(0);\r\n  }\r\n}\r\n\r\ninterface Language {\r\n  code: string;\r\n  description: string;\r\n}","@if (isSubMenu()) {\r\n  <cauca-menu-item class=\"change-language-menu-item\" [trigger]=\"languagesMenu\" icon=\"language_rounded\" [translateLabel]=\"true\" label=\"headerBar.changeLanguageButtonLabel\"  [matMenuTriggerFor]=\"languagesMenu\"/>\r\n} @else {\r\n  <cauca-icon-button class=\"change-language-button\" icon=\"language_rounded\" [matMenuTriggerFor]=\"languagesMenu\" />\r\n}\r\n\r\n<mat-menu #languagesMenu=\"matMenu\">\r\n  @for (language of languages(); track language.code) {\r\n    <cauca-menu-item icon=\"language_rounded\" [label]=\"language.description\" [translateLabel]=\"false\" (click)=\"setLanguage(language.code)\" onkeypress=\"setLanguage(language.code)\" />\r\n  }\r\n</mat-menu>","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'cauca-menu-separator',\n    imports: [],\n    templateUrl: './menu-separator.component.html',\n    styleUrl: './menu-separator.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MenuSeparatorComponent {\n\n}\n","<hr class=\"separator\" />","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UserAgentReaderService {\r\n  public getUserAgent(): string {\r\n    return navigator.userAgent;\r\n  }\r\n}\r\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { computed, inject, Injectable, signal } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { UserAgentReaderService } from './user-agent-reader.service';\n\nconst MOBILE: RegExp = /Android.*Mobile|webOS|iPhone|iPod|BB|IEMobile|Opera Mini|Opera Mobi/i;\nconst TABLET: RegExp = /iPad|Android(?!.*Mobile)/i;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ScreenSizeService {\n\n  public isSmallScreen = toSignal(inject(BreakpointObserver)\n    .observe('(max-width: 1000px)')\n    .pipe(takeUntilDestroyed(), map((value) => value.matches)));\n  public isMobile = signal<boolean>(false);\n  public isCompact = computed(() => this.isMobile() || this.isSmallScreen());\n\n  public constructor() {\n    const reader = inject(UserAgentReaderService);\n    this.isMobile.set(this.is(reader, MOBILE) && !this.is(reader, TABLET));\n  }\n\n  private is(reader: UserAgentReaderService, regEx: RegExp): boolean {\n    return regEx.test(reader.getUserAgent());\n  }\n}\n","import { computed, inject, Injectable, Signal, signal, WritableSignal } from '@angular/core';\r\nimport { APP_VERSION_TOKEN, ENGLISH_LOGO_PATH_TOKEN, LOGO_PATH_TOKEN, MENU_ITEMS_PROVIDER_TOKEN, MENU_LOGO_PROVIDER_TOKEN } from '../provide-cauca-menu';\r\nimport { ScreenSizeService } from './screen-size.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport const MENU_STATE_KEY = 'menuState';\r\nexport interface SideMenuItemOption {\r\n  label: string;\r\n  icon: string;\r\n  route: string;\r\n  children?: SideMenuItemOption[];\r\n  isParent?: boolean;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MenuStateService {\r\n\r\n  public version: Signal<string> = signal(this.getVersion(inject(APP_VERSION_TOKEN)));\r\n  public isOpen: WritableSignal<boolean> = signal(false);\r\n  public isPinned: WritableSignal<boolean> = signal(this.getInitialPinState());\r\n  public isExpanded: Signal<boolean> = computed(() => (this.isOpen() || this.isPinned()));\r\n  public isShowingMenuItems: WritableSignal<boolean> = signal(true);\r\n  public menuItems: Signal<SideMenuItemOption[]> = inject(MENU_ITEMS_PROVIDER_TOKEN).items;\r\n  public currentUrl = signal('');\r\n\r\n  public displayMenu: Signal<boolean> = computed(() => !this.screenSize.isCompact() || this.isOpen());\r\n  public showHeaderMenuButton: Signal<boolean> = computed(() => this.screenSize.isCompact());\r\n  public showPinButton = computed(() => !this.screenSize.isCompact() && this.isExpanded());\r\n\r\n  public showBottomLogo: Signal<boolean> = computed(() => !!this.logoProvider.logo());\r\n  public topLogo: Signal<string> = computed(() => this.showBottomLogo() ? this.logoProvider.logo() : this.caucaLogoToUse);\r\n  public smallLogo = computed(() => this.showBottomLogo() ? this.caucaLogoToUse : null);\r\n\r\n  private readonly caucaLogo: string = inject(LOGO_PATH_TOKEN);\r\n  private readonly caucaEnglishLogo: string = inject(ENGLISH_LOGO_PATH_TOKEN, { optional: true });\r\n  private readonly screenSize = inject(ScreenSizeService);\r\n  private readonly logoProvider = inject(MENU_LOGO_PROVIDER_TOKEN, { optional: true }) ?? new DefaultMenuLogoProvider();\r\n  private readonly currentLanguage = inject(TranslateService).currentLang;\r\n  private readonly caucaLogoToUse = this.caucaEnglishLogo && this.currentLanguage === 'en' ? this.caucaEnglishLogo : this.caucaLogo;\r\n\r\n  public setCurrentUrl(url: string): void {\r\n    this.currentUrl.set(url);\r\n  }\r\n\r\n  public getVersion(applicationVersion: string): string {\r\n    return applicationVersion || 'DEV';\r\n  }\r\n\r\n  public togglePin(): void {\r\n    this.isPinned.set(!this.isPinned());\r\n    localStorage.setItem(MENU_STATE_KEY, JSON.stringify(this.isPinned()));\r\n  }\r\n\r\n  public toggleMenu(): void {\r\n    this.isOpen.update((isOpen) => !isOpen);\r\n  }\r\n\r\n  public onMouseOver(): void {\r\n    if (!this.screenSize.isCompact()) {\r\n      this.isOpen.set(true);\r\n    }\r\n  }\r\n\r\n  public onMouseLeave(): void {\r\n    if (!this.screenSize.isCompact()) {\r\n      this.isOpen.set(false);\r\n    }\r\n  }\r\n\r\n  public hideMenuItems(): void {\r\n    this.isShowingMenuItems.set(false);\r\n  }\r\n\r\n  public showMenuItems(): void {\r\n    this.isShowingMenuItems.set(true);\r\n  }\r\n\r\n  private getInitialPinState(): boolean {\r\n    return JSON.parse(localStorage.getItem(MENU_STATE_KEY)) ?? false;\r\n  }\r\n\r\n}\r\n\r\nexport interface MenuLogoProvider {\r\n  logo: Signal<string>;\r\n}\r\n\r\nexport class DefaultMenuLogoProvider implements MenuLogoProvider {\r\n  public logo: Signal<string> = signal(null);\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs/internal/firstValueFrom';\r\nimport { LOGIN_STATE_TOKEN } from '../provide-cauca-menu';\r\nimport { CaucaCoreService } from '@cauca-911/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UserPasswordService {\r\n  private client = inject(HttpClient);\r\n  private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl + 'UserManagement';\r\n\r\n  private readonly loginStateService = inject(LOGIN_STATE_TOKEN);\r\n\r\n  public async changePassword(currentPassword: string, password: string): Promise<void> {\r\n    const url = `${this.baseUrl}/Password`;\r\n    const data = { id: this.loginStateService.userId(), password: password, passwordConfirmation: password, currentPassword };\r\n    return firstValueFrom(this.client.post<void>(url, data));\r\n  }\r\n}\r\n","import { Component, inject, signal } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule, UntypedFormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatError } from '@angular/material/form-field';\r\nimport { NgClass } from '@angular/common';\r\nimport { StrokedButtonComponent, RaisedButtonComponent, PasswordInputComponent, PasswordSelectionComponent, SavingErrorBoxComponent, IconButtonComponent } from '@cauca-911/material';\r\nimport { UserPasswordService } from '../../services/user-password.service';\r\n\r\n@Component({\r\n    selector: 'cauca-change-password-dialog',\r\n    imports: [TranslateModule, NgClass, MatDialogModule, MatError, StrokedButtonComponent, RaisedButtonComponent, PasswordInputComponent, PasswordSelectionComponent, ReactiveFormsModule, PasswordInputComponent, SavingErrorBoxComponent, IconButtonComponent],\r\n    templateUrl: './change-password-dialog.component.html',\r\n    styleUrl: './change-password-dialog.component.scss'\r\n})\r\nexport class ChangePasswordDialogComponent {\r\n  public form: FormGroup;\r\n\r\n  public isSaving = signal<boolean>(false);\r\n  public showIncorrectPassword = signal<boolean>(false);\r\n  public showError = signal<boolean>(false);\r\n\r\n  private readonly dialogRef = inject(MatDialogRef<ChangePasswordDialogComponent>);\r\n  private readonly userPasswordService = inject(UserPasswordService);\r\n  private readonly formBuilder = inject(UntypedFormBuilder);\r\n\r\n  public constructor() {\r\n    this.form = this.formBuilder.group({\r\n      currentPassword: ['', Validators.required],\r\n      newPassword: ['', Validators.required],\r\n    });\r\n  }\r\n\r\n  public cancelClick(): void {\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  public async trySaveNewPassword(): Promise<void> {\r\n\r\n    try {\r\n      this.isSaving.set(true);\r\n      this.showIncorrectPassword.set(false);\r\n      this.showError.set(false);\r\n      await this.userPasswordService.changePassword(this.form.value.currentPassword, this.form.value.newPassword);\r\n      await this.dialogRef.close();\r\n    } catch (e) {\r\n      if (e.status === 404) {\r\n        this.showIncorrectPassword.set(true);\r\n      } else {\r\n        this.showError.set(true);\r\n      }\r\n    } finally {\r\n      this.isSaving.set(false);\r\n    }\r\n  }\r\n}\r\n","<div mat-dialog-title>\r\n    <div class=\"h6\">{{ 'changePasswordDialog.title' | translate }}</div>\r\n    <cauca-icon-button id=\"close-button\" (buttonClick)=\"cancelClick()\" icon=\"close\" />\r\n</div>\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n    <cauca-password-input [ngClass]=\"showIncorrectPassword() ? '' : 'bottom-padding'\" [required]=\"true\" formControlName=\"currentPassword\" label=\"changePasswordDialog.currentPasswordLabel\" [translateLabel]=\"true\" />\r\n    @if(showIncorrectPassword()) {\r\n        <mat-error>{{'changePasswordDialog.incorrectCurrentPassword' | translate}}</mat-error>\r\n    }\r\n    <cauca-password-selection\r\n        formControlName=\"newPassword\"\r\n        [passwordLabel]=\"'changePasswordDialog.newPasswordLabel'\"\r\n        [passwordConfirmationLabel]=\"'changePasswordDialog.confirmNewPasswordLabel'\"/>\r\n    <cauca-saving-error-box [show]=\"showError()\" />\r\n</div>\r\n<div mat-dialog-actions align=\"end\" class=\"buttons\">\r\n    <cauca-stroked-button label=\"cancel\" (buttonClick)=\"cancelClick()\" color=\"primary\" />\r\n    <cauca-raised-button [isInProgress]=\"isSaving()\" [isDisabled]=\"!form.valid || isSaving()\" label=\"save\" color=\"primary\"\r\n        (buttonClick)=\"trySaveNewPassword()\" />\r\n</div>","import { ChangeDetectionStrategy, Component, computed, inject, OnInit, signal } from '@angular/core';\r\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\r\nimport { IconButtonComponent, MenuItemComponent } from '@cauca-911/material';\r\nimport { HeaderLink } from '../../../models/header-link';\r\nimport { HEADER_LINK_LOADER_TOKEN } from '../../../provide-cauca-menu';\r\n\r\n@Component({\r\n    selector: 'cauca-help-menu',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [IconButtonComponent, MatMenu, MatMenuTrigger, MenuItemComponent],\r\n    templateUrl: './help-menu.component.html',\r\n    styleUrl: './help-menu.component.scss'\r\n})\r\nexport class HelpMenuComponent implements OnInit {\r\n\r\n  public links = signal<HeaderLink[]>([]);\r\n  public showMenu = computed(() => this.links()?.length > 0);\r\n\r\n  private readonly headerLinksService = inject(HEADER_LINK_LOADER_TOKEN, { optional: true });\r\n\r\n  public async ngOnInit(): Promise<void> {\r\n    if (this.headerLinksService) {\r\n      this.links.set(await this.headerLinksService.getLinks());\r\n    }\r\n  }\r\n\r\n  public openUrl(url: string): void {\r\n    window.open(url, '_blank');\r\n  }\r\n\r\n}\r\n","@if (showMenu()) {\r\n    <cauca-icon-button id=\"help-button\" color=\"primary\" icon=\"help\" [matMenuTriggerFor]=\"helpMenu\" />\r\n}\r\n\r\n<mat-menu #helpMenu=\"matMenu\" xPosition=\"before\">\r\n    @for (link of links(); track link.id) {\r\n        <cauca-menu-item [id]=\"link.id\" [icon]=\"link.icon\" [translateLabel]=\"true\" [label]=\"link.title\" (buttonClick)=\"openUrl(link.url)\" />\r\n    }\r\n</mat-menu>","import { Component, input } from '@angular/core';\r\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MenuItemComponent } from '@cauca-911/material';\r\nimport { GenericMenu } from '../generic-menu.component';\r\n\r\n@Component({\r\n    selector: 'cauca-generic-sub-menu',\r\n    imports: [MatMenu, MatMenuTrigger, MenuItemComponent],\r\n    templateUrl: './generic-sub-menu.component.html',\r\n    styleUrl: './generic-sub-menu.component.scss'\r\n})\r\nexport class GenericSubMenuComponent {\r\n  public readonly menu = input.required<GenericMenu>();\r\n}\r\n","<cauca-menu-item\r\n    class=\"generic-menu\"\r\n    [trigger]=\"genericMenu\"\r\n    [icon]=\"menu().icon\"\r\n    [translateLabel]=\"menu().translateLabel\"\r\n    [label]=\"menu().label\"\r\n    [matMenuTriggerFor]=\"genericMenu\" />\r\n\r\n<mat-menu #genericMenu=\"matMenu\">\r\n  @for (option of menu().children; track option.id) {\r\n    <cauca-menu-item\r\n      class=\"generic-menu-item\"\r\n      [icon]=\"option.icon\"\r\n      [label]=\"option.label\"\r\n      [translateLabel]=\"option.translateLabel\"\r\n      (click)=\"option.action()\" />\r\n  }\r\n</mat-menu>\r\n","import { Component, computed, inject, signal, Signal} from '@angular/core';\nimport { GENERIC_MENU_PROVIDER_TOKEN } from '../../../provide-cauca-menu';\nimport { MenuItemComponent } from '@cauca-911/material';\nimport { GenericSubMenuComponent } from './generic-sub-menu/generic-sub-menu.component';\nimport { MenuSeparatorComponent } from '../menu-separator/menu-separator.component';\n\n@Component({\n    selector: 'cauca-generic-menu',\n    imports: [MenuItemComponent, MenuSeparatorComponent, GenericSubMenuComponent],\n    templateUrl: './generic-menu.component.html',\n    styleUrl: './generic-menu.component.scss'\n})\nexport class GenericMenuComponent {\n\n  public readonly provider = signal<GenericMenuManager>(null);\n  public showMenu = computed(() => !!this.provider() && this.provider()!.options().length > 0);\n\n  public constructor() {\n    this.provider.set(inject(GENERIC_MENU_PROVIDER_TOKEN, {optional: true}));\n  }\n\n}\n\nexport interface GenericMenuManager {\n  options: Signal<GenericMenu[]>;\n}\n\nexport interface GenericMenu {\n  id: string;\n  label: string;\n  icon: string;\n  type: 'separator' | 'item' | 'submenu';\n  action: () => void;\n  children: GenericMenu[];\n  translateLabel?: boolean;\n}\n\nexport interface GenericMenuOption {\n  id: string;\n  label: string;\n  icon: string;\n  translateLabel?: boolean;\n}","\n@if (showMenu()) {\n  @for(menu of provider().options(); track menu.id) {\n\n    @if (menu.type === 'separator') {\n      <cauca-menu-separator />\n    } @else if (menu.type === 'item') {\n      <cauca-menu-item\n        class=\"generic-menu-item\"\n        [icon]=\"menu.icon\"\n        [label]=\"menu.label\"\n        [translateLabel]=\"menu.translateLabel\"\n        (click)=\"menu.action()\" />\n    } @else if (menu.type === 'submenu') {\n      <cauca-generic-sub-menu [menu]=\"menu\" />\n    }\n\n  }\n}","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport {  MatMenu, MatMenuTrigger } from '@angular/material/menu';\r\nimport { UserMenuHeaderComponent } from '../user-menu-header/user-menu-header.component';\r\nimport { LanguageMenuComponent } from '../language-menu/language-menu.component';\r\nimport { MenuSeparatorComponent } from '../menu-separator/menu-separator.component';\r\nimport { MenuStateService } from '../../../services/menu-state.service';\r\nimport { MenuItemComponent, IconButtonComponent, DialogService } from '@cauca-911/material';\r\nimport { ALLOW_PASSWORD_CHANGE_TOKEN, LOGIN_STATE_TOKEN, LOGOUT_HANDLER_TOKEN } from '../../../provide-cauca-menu';\r\nimport { ChangePasswordDialogComponent } from '../../change-password-dialog/change-password-dialog.component';\r\nimport { HelpMenuComponent } from \"../help-menu/help-menu.component\";\r\nimport { GenericMenuComponent } from '../generic-menu/generic-menu.component';\r\n\r\n@Component({\r\n    selector: 'cauca-logged-in-user-header',\r\n    imports: [MatMenu, MatMenuTrigger, UserMenuHeaderComponent, LanguageMenuComponent, MenuSeparatorComponent, MenuItemComponent, IconButtonComponent, HelpMenuComponent, GenericMenuComponent],\r\n    templateUrl: './logged-in-user-header.component.html',\r\n    styleUrl: './logged-in-user-header.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoggedInUserHeaderComponent {\r\n\r\n  public readonly loginState = inject(LOGIN_STATE_TOKEN);\r\n  public readonly menu = inject(MenuStateService);\r\n  public readonly allowPasswordChange = inject(ALLOW_PASSWORD_CHANGE_TOKEN);\r\n  private readonly logoutHandler = inject(LOGOUT_HANDLER_TOKEN);\r\n  private readonly dialogService = inject(DialogService);\r\n\r\n  public logOut(): void {\r\n    this.logoutHandler.logout();\r\n  }\r\n\r\n    public async openChangePasswordMenu(): Promise<void> {\r\n    await this.dialogService.showCustomDialog(ChangePasswordDialogComponent, {}, {width: '800px', autoFocus: false});\r\n  }\r\n}\r\n","@if (menu.showHeaderMenuButton()) {\r\n    <cauca-icon-button id=\"menu-button\" icon=\"menu\" (buttonClick)=\"menu.toggleMenu()\" />\r\n}\r\n\r\n<div class=\"header-bar-filler\"></div>\r\n\r\n<cauca-help-menu />\r\n\r\n<cauca-icon-button class=\"account-button\" icon=\"account_circle\" [matMenuTriggerFor]=\"userMenu\" />\r\n<span class=\"body1 username\">{{loginState.userFullName()}}</span>\r\n\r\n<mat-menu #userMenu=\"matMenu\" xPosition=\"before\">\r\n\r\n    <cauca-user-menu-header />\r\n    <cauca-menu-separator />\r\n    <cauca-generic-menu />\r\n    <cauca-language-menu [isSubMenu]=\"true\" />\r\n    @if (allowPasswordChange) {\r\n        <cauca-menu-item class=\"change-password-menu-item\" icon=\"key\" [translateLabel]=\"true\" label=\"headerBar.changePasswordButtonLabel\" (buttonClick)=\"openChangePasswordMenu()\" />\r\n    }\r\n    <cauca-menu-separator />\r\n    <cauca-menu-item class=\"logout-menu-item\" icon=\"logout_rounded\" [translateLabel]=\"true\" label=\"headerBar.logoutButtonLabel\" (click)=\"logOut()\" />\r\n\r\n</mat-menu>","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { LanguageMenuComponent } from '../language-menu/language-menu.component';\r\nimport { INTERNAL_CAUCA_MENU_OPTIONS_TOKEN } from '../../../provide-cauca-menu';\r\nimport { StrokedButtonComponent } from '@cauca-911/material';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'cauca-logged-out-user-header',\r\n  standalone: true,\r\n  imports: [LanguageMenuComponent, StrokedButtonComponent],\r\n  templateUrl: './logged-out-user-header.component.html',\r\n  styleUrl: './logged-out-user-header.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LoggedOutUserHeaderComponent {\r\n  public showLoginButton = signal<boolean>(inject(INTERNAL_CAUCA_MENU_OPTIONS_TOKEN).showLoginButtonInHeader);\r\n\r\n  private readonly router = inject(Router);\r\n\r\n  public login(): void {\r\n    this.router.navigate(['/login']);\r\n  }\r\n}\r\n","<div class=\"header-bar-filler\"></div>\r\n\r\n<cauca-language-menu />\r\n@if (showLoginButton()) {\r\n    <cauca-stroked-button class=\"login_button\" icon=\"login_rounded\" label=\"headerBar.loginButtonLabel\" (buttonClick)=\"login()\" color=\"primary\" />\r\n}","import { Component, inject } from '@angular/core';\nimport { RouterOutlet } from \"@angular/router\";\nimport { MatToolbar } from \"@angular/material/toolbar\";\nimport { LoggedInUserHeaderComponent } from '../header/logged-in-user-header/logged-in-user-header.component';\nimport { LoggedOutUserHeaderComponent } from '../header/logged-out-user-header/logged-out-user-header.component';\nimport { LOGIN_STATE_TOKEN } from '../../provide-cauca-menu';\n\n@Component({\n  selector: 'cauca-logged-in-layout',\n  standalone: true,\n  imports: [\n    RouterOutlet,\n    LoggedInUserHeaderComponent,\n    LoggedOutUserHeaderComponent,\n    MatToolbar\n  ],\n  templateUrl: './logged-in-layout.component.html',\n  styleUrl: './logged-in-layout.component.scss'\n})\nexport class LoggedInLayoutComponent {\n\n  public isLoggedOn = inject(LOGIN_STATE_TOKEN).isLoggedOn;\n}\n","<mat-toolbar>\n  @if (isLoggedOn()) {\n  <cauca-logged-in-user-header />\n  } @else {\n    <cauca-logged-out-user-header />\n  }\n</mat-toolbar>\n\n<div class=\"logged-page-content\" >\n  <router-outlet />\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport {MatToolbar} from '@angular/material/toolbar';\r\nimport { LoggedInUserHeaderComponent } from '../logged-in-user-header/logged-in-user-header.component';\r\n\r\n@Component({\r\n    selector: 'cauca-header-bar',\r\n    imports: [MatToolbar, LoggedInUserHeaderComponent],\r\n    templateUrl: './header-bar.component.html',\r\n    styleUrl: './header-bar.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HeaderBarComponent {\r\n}\r\n","<mat-toolbar>\r\n\r\n  <div class=\"header-bar-filler\"></div>\r\n  <cauca-logged-in-user-header />\r\n\r\n</mat-toolbar>","import { Component, computed, inject, input } from '@angular/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgClass } from '@angular/common';\r\nimport { MenuStateService, SideMenuItemOption } from '../../../services/menu-state.service';\r\n\r\n@Component({\r\n  selector: 'cauca-side-menu-item',\r\n  standalone: true,\r\n  imports: [ MatIcon, TranslateModule, NgClass ],\r\n  templateUrl: './side-menu-item.component.html',\r\n  styleUrl: './side-menu-item.component.scss'\r\n})\r\nexport class SideMenuItemComponent {\r\n\r\n  public options = input<SideMenuItemOption>(null);\r\n  public isLastItem = input<boolean>(false);\r\n  public showIcon = computed(() => this.options().children?.length === 0);\r\n  public isParent = computed(() => this.options().isParent);\r\n  public isSubItem = computed(() => this.options().children?.length > 0);\r\n  public isSelected = computed(() => this.menu.currentUrl().startsWith(this.options().route));\r\n  public showChildren = computed(() => this.isSubItem() && this.isSelected());\r\n\r\n  public containerClass = computed(() => this.isSubItem() ? 'sub-menu' : undefined);\r\n  public itemClass = computed(() => this.getItemClass(this.isSubItem(), this.isParent()));\r\n\r\n  public children = computed(() => this.options().children);\r\n  public route = computed(() => this.isSubItem() ? this.children()[0].route : this.options().route);\r\n  public icon = computed(() => this.options().icon);\r\n  public label = computed(() => this.options().label);\r\n\r\n  public readonly menu = inject(MenuStateService);\r\n\r\n  private readonly router = inject(Router);\r\n\r\n  public openLink(): void {\r\n    this.router.navigate([this.route()]);\r\n    if (this.menu.showHeaderMenuButton()) {\r\n      this.menu.toggleMenu();\r\n    }\r\n  }\r\n\r\n  private getItemClass(isSubItem: boolean, isParent: boolean): string {\r\n    switch (true) {\r\n      case isSubItem:\r\n      return 'parent-sub-item';\r\n      case isParent:\r\n      return 'parent-item';\r\n      default:\r\n      return 'child-item';\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"item-menu-container\" [ngClass]=\"containerClass()\" [class.selected]=\"isSelected()\">\r\n\r\n    <a class=\"item-menu\" (click)=\"openLink()\" [class.selected]=\"isSelected()\" [ngClass]=\"itemClass()\" [class.is-last]=\"isLastItem()\">\r\n\r\n        <mat-icon>{{icon()}}</mat-icon>\r\n        @if (menu.isExpanded()) {\r\n            <span class=\"menu-label\" [ngClass]=\"isParent() ? 'body1' : 'caption'\" >{{label() | translate}}</span>\r\n        }\r\n        @if (isSubItem()) {\r\n            <div class=\"spacer\"></div>\r\n            @if (menu.isExpanded()) {\r\n                <mat-icon>{{isSelected() ? 'arrow_drop_up' : 'arrow_drop_down'}}</mat-icon>\r\n            }\r\n        }\r\n\r\n    </a>\r\n\r\n    <div class=\"sub-menu-items\" [class.hidden]=\"!showChildren()\">\r\n        @if (showChildren()) {\r\n            @for (child of children(); track child.label) {\r\n                <cauca-side-menu-item [options]=\"child\" [isLastItem]=\"$last\" />\r\n            }\r\n        }\r\n    </div>\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\nimport { MenuStateService } from '../../../services/menu-state.service';\r\n\r\n@Component({\r\n  selector: 'cauca-side-menu-footer',\r\n  standalone: true,\r\n  imports: [IconButtonComponent],\r\n  templateUrl: './side-menu-footer.component.html',\r\n  styleUrl: './side-menu-footer.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SideMenuFooterComponent {\r\n\r\n  public readonly menu = inject(MenuStateService);\r\n}\r\n","<div class=\"version list-subheader\">\r\n    @if (menu.showPinButton()) { <span class=\"version-label\">Version&nbsp;</span> } {{menu.version()}}\r\n</div>\r\n\r\n@if (menu.showPinButton()) {\r\n    <div class=\"pin-button\">\r\n        <cauca-icon-button color=\"white\" [icon]=\"menu.isPinned() ? 'chevron_left' : 'chevron_right'\" (click)=\"menu.togglePin()\" />\r\n    </div>\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cauca-side-menu-logo',\r\n  standalone: true,\r\n  imports: [NgClass],\r\n  templateUrl: './side-menu-logo.component.html',\r\n  styleUrl: './side-menu-logo.component.scss',\r\n})\r\nexport class SideMenuLogoComponent {\r\n  @Input() public logo: string;\r\n  @Input() public size: 'small' | 'standard' = 'standard';\r\n}\r\n","<div class=\"logo-container\">\r\n    <img class=\"logo\" alt=\"logo\" [src]=\"logo\" [ngClass]=\"size\">\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { MenuStateService } from '../../../services/menu-state.service';\r\n\r\n@Component({\r\n  selector: 'cauca-side-menu-container',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [],\r\n  templateUrl: './side-menu-container.component.html',\r\n  styleUrl: './side-menu-container.component.scss'\r\n})\r\nexport class SideMenuContainerComponent {\r\n  public readonly menu = inject(MenuStateService);\r\n}\r\n","<div class=\"menu\"\r\n    (mouseover)=\"menu.onMouseOver()\"\r\n    (mouseleave)=\"menu.onMouseLeave()\"\r\n    [class.collapsed]=\"!menu.isExpanded()\"\r\n    [class.expanded]=\"menu.isExpanded()\" >\r\n\r\n    <ng-content></ng-content>\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { SideMenuItemComponent } from '../side-menu-item/side-menu-item.component';\r\nimport { SideMenuFooterComponent } from '../side-menu-footer/side-menu-footer.component';\r\nimport { SideMenuLogoComponent } from '../side-menu-logo/side-menu-logo.component';\r\nimport { SideMenuContainerComponent } from '../side-menu-container/side-menu-container.component';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IconButtonComponent } from '@cauca-911/material';\r\nimport { MenuStateService } from '../../../services/menu-state.service';\r\n\r\n@Component({\r\n  selector: 'cauca-side-menu',\r\n  standalone: true,\r\n  imports: [SideMenuContainerComponent, SideMenuItemComponent, SideMenuFooterComponent, SideMenuLogoComponent, SideMenuContainerComponent, IconButtonComponent],\r\n  templateUrl: './side-menu.component.html',\r\n  styleUrl: './side-menu.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SideMenuComponent {\r\n\r\n  public readonly menu = inject(MenuStateService);\r\n\r\n  public constructor() {\r\n    inject(Router).events\r\n      .pipe(filter(event => event instanceof NavigationStart), takeUntilDestroyed())\r\n      .subscribe(route => this.menu.setCurrentUrl(route.url));\r\n  }\r\n\r\n  public onMouseHover(): void {\r\n    this.menu.onMouseOver();\r\n  }\r\n\r\n  public onMouseOut(): void {\r\n    this.menu.onMouseLeave();\r\n  }\r\n}\r\n","<cauca-side-menu-container [class.collapsed-menu]=\"!menu.displayMenu()\">\r\n\r\n    @if (menu.showHeaderMenuButton()) {\r\n        <cauca-icon-button id=\"menu-button\" icon=\"close\" color=\"white\" (buttonClick)=\"menu.toggleMenu()\" />\r\n    }\r\n\r\n    <cauca-side-menu-logo class=\"top-logo\" [class.collapsed]=\"!menu.isExpanded()\" [logo]=\"menu.topLogo()\" />\r\n\r\n    @if (menu.isShowingMenuItems()) {\r\n        @for (item of menu.menuItems(); track item.label) {\r\n            <cauca-side-menu-item [options]=\"item\" />\r\n        }\r\n    }\r\n\r\n    <div class=\"spacer\"></div>\r\n\r\n    @if (menu.showBottomLogo()) {\r\n        <cauca-side-menu-logo\r\n            class=\"bottom-logo\"\r\n            maxHeight=\"40px\"\r\n            [class.collapsed]=\"!menu.isExpanded()\"\r\n            [logo]=\"menu.smallLogo()\"\r\n            size=\"small\" />\r\n    }\r\n\r\n    <cauca-side-menu-footer />\r\n\r\n</cauca-side-menu-container>\r\n","/*\r\n * Public API Surface of cauca-menu\r\n */\r\n\r\nexport * from './lib/components/logged-in-layout/logged-in-layout.component';\r\nexport * from './lib/components/header/header-bar/header-bar.component';\r\nexport * from './lib/components/menu/side-menu/side-menu.component';\r\nexport * from './lib/components/header/menu-separator/menu-separator.component';\r\nexport * from './lib/components/header/logged-out-user-header/logged-out-user-header.component';\r\nexport * from './lib/services/menu-state.service';\r\nexport * from './lib/services/screen-size.service';\r\nexport * from './lib/services/user-agent-reader.service';\r\nexport * from './lib/provide-cauca-menu';\r\nexport * from './lib/models/header-link';\r\n\r\nexport { GenericMenuManager, GenericMenu, GenericMenuOption } from './lib/components/header/generic-menu/generic-menu.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}