@odx/angular 9.1.3 → 9.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,11 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Injectable, inject, Directive, HostListener, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
3
+ import { Injectable, inject, Directive, HostListener, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, NgModule } from '@angular/core';
4
4
  import { CSSComponent } from '@odx/angular/internal';
5
- import { injectElement, createConfigTokens, buildWebsiteUrl, trackByIndex } from '@odx/angular/utils';
6
- import { BehaviorSubject, distinctUntilChanged, shareReplay, of, combineLatest, map } from 'rxjs';
7
- import { trigger, transition, useAnimation } from '@angular/animations';
5
+ import { injectElement, createConfigTokens, buildWebsiteUrl, untilDestroyed, trackByIndex } from '@odx/angular/utils';
6
+ import { BehaviorSubject, distinctUntilChanged, shareReplay, of, combineLatest, map, tap, fromEvent } from 'rxjs';
8
7
  import * as i1$1 from '@odx/angular';
9
8
  import { CoreModule, WithDisabledState, WithTabIndex } from '@odx/angular';
10
- import { slideInLeft, slideOutLeft, fadeIn, fadeOut } from '@odx/angular/animations';
11
9
  import { A11yModule } from '@odx/angular/cdk/a11y';
12
10
  import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
13
11
  import * as i4 from '@odx/angular/components/area-header';
@@ -182,9 +180,11 @@ var mainMenuTranslations = {
182
180
  */
183
181
  let MainMenuComponent = class MainMenuComponent {
184
182
  constructor() {
183
+ this.takeUntilDestroyed = untilDestroyed();
185
184
  this.mainMenuService = inject(MainMenuService);
186
185
  this.mainMenuLinks$ = createMainMenuLinks$();
187
186
  this.trackByIndex = trackByIndex;
187
+ this.isOpen$ = this.mainMenuService.isOpen$.pipe(tap((isOpen) => this.slideMenuInner(isOpen)));
188
188
  this.element = injectElement();
189
189
  /**
190
190
  * Optional input property for the subtitle of the menu.
@@ -224,29 +224,36 @@ let MainMenuComponent = class MainMenuComponent {
224
224
  get isOpen() {
225
225
  return this.mainMenuService.isOpen();
226
226
  }
227
+ ngAfterViewInit() {
228
+ fromEvent(this.menuInner?.nativeElement, 'toggle')
229
+ .pipe(tap((e) => 'newState' in e && this.mainMenuService.toggle(e.newState === 'open')), this.takeUntilDestroyed())
230
+ .subscribe();
231
+ }
227
232
  /**
228
233
  * Closes the menu.
229
234
  */
230
235
  close() {
231
236
  this.mainMenuService.close();
232
237
  }
238
+ slideMenuInner(isOpen = false) {
239
+ const { nativeElement } = this.menuInner || {};
240
+ if (!(nativeElement && this.isPopoverElement(nativeElement)))
241
+ return;
242
+ const method = isOpen ? 'showPopover' : 'hidePopover';
243
+ nativeElement[method]();
244
+ }
245
+ isPopoverElement(element) {
246
+ return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;
247
+ }
233
248
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], ngImport: i0, template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], animations: [
235
- trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
236
- trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
237
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], viewQueries: [{ propertyName: "menuInner", first: true, predicate: ["menuInner"], descendants: true }], ngImport: i0, template: "<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
238
250
  };
239
251
  MainMenuComponent = __decorate([
240
252
  CSSComponent('main-menu')
241
253
  ], MainMenuComponent);
242
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, decorators: [{
243
255
  type: Component,
244
- args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: {
245
- '[class.is-open]': 'isOpen',
246
- }, animations: [
247
- trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
248
- trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
249
- ], template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n" }]
256
+ args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: { '[class.is-open]': 'isOpen' }, template: "<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n" }]
250
257
  }], propDecorators: { title: [{
251
258
  type: Input,
252
259
  args: [{ required: true }]
@@ -259,6 +266,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
259
266
  args: [{ transform: booleanAttribute }]
260
267
  }], menuOpen: [{
261
268
  type: Output
269
+ }], menuInner: [{
270
+ type: ViewChild,
271
+ args: ['menuInner']
262
272
  }], close: [{
263
273
  type: HostListener,
264
274
  args: ['window:keyup.esc']
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.config.ts","../../../../libs/angular/components/main-menu/src/lib/helpers/create-main-menu-links.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.i18n.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-close.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n/**\n * Provides control over the state of the main menu, allowing components to open, close, or toggle its visibility.\n * This service uses a BehaviorSubject to manage the open state and exposes an observable that emits the current state.\n */\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n /**\n * An Observable that emits the current state of the menu's visibility.\n * It uses distinctUntilChanged to prevent unnecessary emissions when the state hasn't actually changed.\n * shareReplay is configured to cache the last value for any late subscribers.\n *\n * @emits {boolean} The current visibility state of the main menu.\n */\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Returns the current visibility state of the main menu.\n *\n * @returns {boolean} True if the menu is open, false otherwise.\n */\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n /**\n * Opens the main menu by setting its state to true.\n */\n public open(): void {\n this.toggle(true);\n }\n\n /**\n * Closes the main menu by setting its state to false.\n */\n public close(): void {\n this.toggle(false);\n }\n\n /**\n * Toggles the visibility state of the main menu.\n *\n * @param {boolean | undefined} forceState - If provided, the menu will be set to this specific state. If not provided,\n * the menu will toggle to the opposite of its current state.\n */\n public toggle(forceState?: boolean): void {\n this.isOpen$$.next(forceState ?? !this.isOpen());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n/**\n * Represents a directive for a main menu button.\n * This directive is used to toggle the main menu.\n */\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n protected onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\nimport { MainMenuLink } from './models';\n\nexport interface MainMenuLinksConfig {\n dataProtectionUrl?: string | null;\n legalNoticeUrl: string | null;\n providerIdentificationUrl: string | null;\n termsAndConditionsUrl?: string | null;\n openSourceUrl?: string | null;\n statusUrl?: string | null;\n dynamicLinks?: Observable<MainMenuLink[]>;\n}\n\n/**\n * Tokens generated to provide and inject `MainMenuLinksConfig`. These tokens are used to configure and access main menu links throughout the application.\n *\n * @exports\n * - `MainMenuLinksConfig` - Token for injecting the config.\n * - `MainMenuLinksDefaultConfig` - Default configuration for main menu links.\n * - `injectMainMenuLinksConfig` - Function to inject the config wherever needed.\n * - `provideMainMenuLinksConfig` - Provider function to configure and provide the config in Angular's DI system.\n *\n * @example\n * ```ts\n * // Providing main menu links in an Angular module\n * @NgModule({\n * providers: [\n * provideMainMenuLinksConfig({\n * legalNoticeUrl: 'https://example.com/legalnotice',\n * providerIdentificationUrl: 'https://example.com/provideridentification',\n * }),\n * ],\n * })\n * export class AppModule { }\n *\n * // Injecting and using the main menu links configuration in a component\n * @Component({ ... })\n * export class MyComponent {\n * constructor(@Inject(MainMenuLinksConfig) private config: MainMenuLinksConfig) {\n * console.log('Legal Notice URL:', config.legalNoticeUrl);\n * }\n * }\n * ```\n */\nexport const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConfig, provideMainMenuLinksConfig } = createConfigTokens(\n 'MainMenuLinks',\n '@odx/angular/components/main-menu',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as MainMenuLinksConfig,\n);\n","import { Observable, combineLatest, map, of } from 'rxjs';\nimport { injectMainMenuLinksConfig } from '../main-menu.config';\nimport { MainMenuLink } from '../models';\n\n/** @internal */\nexport function createMainMenuLinks$(): Observable<MainMenuLink[]> {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } =\n injectMainMenuLinksConfig();\n const dynamicLinks$ = dynamicLinks ?? of([]);\n const links = [\n { name: 'status', url: statusUrl },\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return combineLatest([dynamicLinks$, of(links)].filter(Boolean)).pipe(map((links) => links.flat().filter((link): link is MainMenuLink => !!link.url)));\n}\n","import { TranslationObject } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n status: 'Status',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n status: 'Status',\n },\n} as TranslationObject;\n","import { transition, trigger, useAnimation } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, HostListener, Input, Output, ViewEncapsulation, booleanAttribute, inject } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';\nimport { injectElement, trackByIndex } from '@odx/angular/utils';\nimport { createMainMenuLinks$ } from './helpers';\nimport mainMenuTranslations from './main-menu.i18n';\nimport { MainMenuService } from './main-menu.service';\n\n/**\n * The `MainMenuComponent` provides a comprehensive user interface component for displaying a navigation menu within an application.\n * It supports dynamic content for titles, subtitles, and copyright text, and can dynamically render additional links.\n * The menu includes animations for opening and closing states, and can be controlled programmatically or via user interaction.\n */\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective],\n providers: [provideTranslations(mainMenuTranslations)],\n standalone: true,\n host: {\n '[class.is-open]': 'isOpen',\n },\n animations: [\n trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),\n trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),\n ],\n})\nexport class MainMenuComponent {\n protected readonly mainMenuService = inject(MainMenuService);\n protected readonly mainMenuLinks$ = createMainMenuLinks$();\n protected readonly trackByIndex = trackByIndex;\n public readonly element = injectElement();\n\n /**\n * Input property for the title of the menu. The content is dynamic, allowing complex content structures\n * like translations or custom components.\n *\n * @type {DynamicTextContent}\n */\n @Input({ required: true })\n public title!: DynamicTextContent;\n\n /**\n * Optional input property for the subtitle of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public subtitle?: DynamicTextContent | null = null;\n\n /**\n * Optional input property for the copyright text of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public copyright?: DynamicTextContent | null = null;\n\n /**\n * Input property to control the open state of the menu. Uses boolean transformation to handle true/false states.\n * Changing this property will toggle the menu's open state via the MainMenuService.\n *\n * @param {boolean} value - The open state of the menu.\n */\n @Input({ transform: booleanAttribute })\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(value);\n }\n\n /**\n * Returns the current open state of the menu from the MainMenuService.\n *\n * @returns {boolean} `true` if the menu is open, `false` otherwise.\n */\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n /**\n * Outputs the observable that tracks the open state of the menu.\n *\n * @emits {boolean} The open state of the menu.\n */\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n /**\n * Closes the menu.\n */\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n}\n","<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu.component';\n\n/**\n * Represents a directive for closing the main menu.\n */\n@Directive({\n standalone: true,\n selector: '[odxMainMenuClose]',\n})\nexport class MainMenuCloseDirective {\n private readonly mainMenu = inject(MainMenuComponent, { optional: true });\n\n @HostListener('click')\n protected onClick(): void {\n this.mainMenu?.close();\n }\n}\n","import { booleanAttribute, Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuCloseDirective } from './main-menu-close.directive';\n\n/**\n * Represents a directive for a main menu item.\n * This directive is used to define a main menu item.\n * Has host directives for disabled state, tabindex, and closing the main menu.\n *\n * @see {WithDisabledState}\n * @see {WithTabIndex}\n * @see {MainMenuCloseDirective}\n */\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[attr.role]': '\"button\"',\n },\n})\nexport class MainMenuItemDirective {\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement();\n\n /**\n * Optionally specifies whether the menu item is selected.\n * If not specified, the menu item will not be selected.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public isSelected = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i2.MainMenuCloseDirective"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.config.ts","../../../../libs/angular/components/main-menu/src/lib/helpers/create-main-menu-links.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.i18n.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-close.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n/**\n * Provides control over the state of the main menu, allowing components to open, close, or toggle its visibility.\n * This service uses a BehaviorSubject to manage the open state and exposes an observable that emits the current state.\n */\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n /**\n * An Observable that emits the current state of the menu's visibility.\n * It uses distinctUntilChanged to prevent unnecessary emissions when the state hasn't actually changed.\n * shareReplay is configured to cache the last value for any late subscribers.\n *\n * @emits {boolean} The current visibility state of the main menu.\n */\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Returns the current visibility state of the main menu.\n *\n * @returns {boolean} True if the menu is open, false otherwise.\n */\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n /**\n * Opens the main menu by setting its state to true.\n */\n public open(): void {\n this.toggle(true);\n }\n\n /**\n * Closes the main menu by setting its state to false.\n */\n public close(): void {\n this.toggle(false);\n }\n\n /**\n * Toggles the visibility state of the main menu.\n *\n * @param {boolean | undefined} forceState - If provided, the menu will be set to this specific state. If not provided,\n * the menu will toggle to the opposite of its current state.\n */\n public toggle(forceState?: boolean): void {\n this.isOpen$$.next(forceState ?? !this.isOpen());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n/**\n * Represents a directive for a main menu button.\n * This directive is used to toggle the main menu.\n */\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n protected onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\nimport { MainMenuLink } from './models';\n\nexport interface MainMenuLinksConfig {\n dataProtectionUrl?: string | null;\n legalNoticeUrl: string | null;\n providerIdentificationUrl: string | null;\n termsAndConditionsUrl?: string | null;\n openSourceUrl?: string | null;\n statusUrl?: string | null;\n dynamicLinks?: Observable<MainMenuLink[]>;\n}\n\n/**\n * Tokens generated to provide and inject `MainMenuLinksConfig`. These tokens are used to configure and access main menu links throughout the application.\n *\n * @exports\n * - `MainMenuLinksConfig` - Token for injecting the config.\n * - `MainMenuLinksDefaultConfig` - Default configuration for main menu links.\n * - `injectMainMenuLinksConfig` - Function to inject the config wherever needed.\n * - `provideMainMenuLinksConfig` - Provider function to configure and provide the config in Angular's DI system.\n *\n * @example\n * ```ts\n * // Providing main menu links in an Angular module\n * @NgModule({\n * providers: [\n * provideMainMenuLinksConfig({\n * legalNoticeUrl: 'https://example.com/legalnotice',\n * providerIdentificationUrl: 'https://example.com/provideridentification',\n * }),\n * ],\n * })\n * export class AppModule { }\n *\n * // Injecting and using the main menu links configuration in a component\n * @Component({ ... })\n * export class MyComponent {\n * constructor(@Inject(MainMenuLinksConfig) private config: MainMenuLinksConfig) {\n * console.log('Legal Notice URL:', config.legalNoticeUrl);\n * }\n * }\n * ```\n */\nexport const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConfig, provideMainMenuLinksConfig } = createConfigTokens(\n 'MainMenuLinks',\n '@odx/angular/components/main-menu',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as MainMenuLinksConfig,\n);\n","import { Observable, combineLatest, map, of } from 'rxjs';\nimport { injectMainMenuLinksConfig } from '../main-menu.config';\nimport { MainMenuLink } from '../models';\n\n/** @internal */\nexport function createMainMenuLinks$(): Observable<MainMenuLink[]> {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } =\n injectMainMenuLinksConfig();\n const dynamicLinks$ = dynamicLinks ?? of([]);\n const links = [\n { name: 'status', url: statusUrl },\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return combineLatest([dynamicLinks$, of(links)].filter(Boolean)).pipe(map((links) => links.flat().filter((link): link is MainMenuLink => !!link.url)));\n}\n","import { TranslationObject } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n status: 'Status',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n status: 'Status',\n },\n} as TranslationObject;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';\nimport { injectElement, trackByIndex, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, tap } from 'rxjs';\nimport { createMainMenuLinks$ } from './helpers';\nimport mainMenuTranslations from './main-menu.i18n';\nimport { MainMenuService } from './main-menu.service';\n\n/**\n * The `MainMenuComponent` provides a comprehensive user interface component for displaying a navigation menu within an application.\n * It supports dynamic content for titles, subtitles, and copyright text, and can dynamically render additional links.\n * The menu includes animations for opening and closing states, and can be controlled programmatically or via user interaction.\n */\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective],\n providers: [provideTranslations(mainMenuTranslations)],\n standalone: true,\n host: { '[class.is-open]': 'isOpen' },\n})\nexport class MainMenuComponent implements AfterViewInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n protected readonly mainMenuService = inject(MainMenuService);\n protected readonly mainMenuLinks$ = createMainMenuLinks$();\n protected readonly trackByIndex = trackByIndex;\n protected readonly isOpen$ = this.mainMenuService.isOpen$.pipe(tap((isOpen: boolean) => this.slideMenuInner(isOpen)));\n public readonly element = injectElement();\n\n /**\n * Input property for the title of the menu. The content is dynamic, allowing complex content structures\n * like translations or custom components.\n *\n * @type {DynamicTextContent}\n */\n @Input({ required: true })\n public title!: DynamicTextContent;\n\n /**\n * Optional input property for the subtitle of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public subtitle?: DynamicTextContent | null = null;\n\n /**\n * Optional input property for the copyright text of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public copyright?: DynamicTextContent | null = null;\n\n /**\n * Input property to control the open state of the menu. Uses boolean transformation to handle true/false states.\n * Changing this property will toggle the menu's open state via the MainMenuService.\n *\n * @param {boolean} value - The open state of the menu.\n */\n @Input({ transform: booleanAttribute })\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(value);\n }\n\n /**\n * Returns the current open state of the menu from the MainMenuService.\n *\n * @returns {boolean} `true` if the menu is open, `false` otherwise.\n */\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n /**\n * Outputs the observable that tracks the open state of the menu.\n *\n * @emits {boolean} The open state of the menu.\n */\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @ViewChild('menuInner')\n public menuInner!: ElementRef<HTMLElement>;\n\n public ngAfterViewInit(): void {\n fromEvent<Event>(this.menuInner?.nativeElement, 'toggle')\n .pipe(\n tap((e) => 'newState' in e && this.mainMenuService.toggle(e.newState === 'open')),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n /**\n * Closes the menu.\n */\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n\n private slideMenuInner(isOpen = false): void {\n const { nativeElement } = this.menuInner || {};\n if (!(nativeElement && this.isPopoverElement(nativeElement))) return;\n const method = isOpen ? 'showPopover' : 'hidePopover';\n nativeElement[method]();\n }\n\n private isPopoverElement(element: HTMLElement): element is HTMLElement & { showPopover: () => void; hidePopover: () => void } {\n return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;\n }\n}\n","<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu.component';\n\n/**\n * Represents a directive for closing the main menu.\n */\n@Directive({\n standalone: true,\n selector: '[odxMainMenuClose]',\n})\nexport class MainMenuCloseDirective {\n private readonly mainMenu = inject(MainMenuComponent, { optional: true });\n\n @HostListener('click')\n protected onClick(): void {\n this.mainMenu?.close();\n }\n}\n","import { booleanAttribute, Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuCloseDirective } from './main-menu-close.directive';\n\n/**\n * Represents a directive for a main menu item.\n * This directive is used to define a main menu item.\n * Has host directives for disabled state, tabindex, and closing the main menu.\n *\n * @see {WithDisabledState}\n * @see {WithTabIndex}\n * @see {MainMenuCloseDirective}\n */\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[attr.role]': '\"button\"',\n },\n})\nexport class MainMenuItemDirective {\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement();\n\n /**\n * Optionally specifies whether the menu item is selected.\n * If not specified, the menu item will not be selected.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public isSelected = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i2.MainMenuCloseDirective"],"mappings":"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"}
@@ -185,7 +185,7 @@ let TooltipDirective = class TooltipDirective {
185
185
  * Shows the tooltip, creating and attaching the overlay to the host element.
186
186
  */
187
187
  show() {
188
- if (this.isOpen || this.disabled)
188
+ if (this.isOpen || this.disabled || !this.content)
189
189
  return;
190
190
  this.tooltipId = getUniqueId('odx-tooltip');
191
191
  this.connectedOverlayRef = this.connectedOverlayService.createOverlay(this.element.nativeElement, {
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-tooltip.mjs","sources":["../../../../libs/angular/components/tooltip/src/lib/helpers/resolve-tooltip-trigger-events.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-size.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-options.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.html","../../../../libs/angular/components/tooltip/src/lib/tooltip.directive.ts","../../../../libs/angular/components/tooltip/src/odx-angular-components-tooltip.ts"],"sourcesContent":["import { TooltipTrigger } from '../models';\n\n/**\n * @internal\n * Resolves the appropriate event names for the provided tooltip trigger.\n *\n * @param {TooltipTrigger} trigger - The trigger to resolve.\n * @returns {[string, string | null]} - The event names for the trigger.\n */\nexport function resolveTooltipTriggerEvents(trigger: TooltipTrigger): [string, string | null] {\n if (trigger === 'click') {\n return ['click', null];\n } else {\n return ['mouseenter', 'mouseleave'];\n }\n}\n","export type TooltipSize = typeof TooltipSize[keyof typeof TooltipSize];\n\nexport const TooltipSize = {\n AUTO: 'auto',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","import { ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\nimport { TooltipSize } from './tooltip-size';\nimport { TooltipTrigger } from './tooltip-trigger';\n\nexport interface TooltipOptions extends Pick<ConnectedOverlayOptions, 'position' | 'matchReferenceWidth'> {\n trigger: TooltipTrigger;\n delayIn: number;\n delayOut: number;\n size: TooltipSize;\n}\n\nexport const DefaultTooltipOptions: TooltipOptions = {\n matchReferenceWidth: false,\n size: TooltipSize.AUTO,\n trigger: 'hover',\n position: 'top',\n delayIn: 0,\n delayOut: 0,\n};\n","import { ChangeDetectionStrategy, Component, inject, Injector, Input, Type, ViewEncapsulation } from '@angular/core';\nimport { DynamicContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { TooltipSize } from './models';\n\n/**\n /**\n * TooltipComponent displays contextual information related to an element when the user hovers over\n * or focuses on the element. It supports dynamic content and can be styled with different sizes.\n *\n * The component uses dynamic content rendering to provide flexible display options including text,\n * templates, or even other Angular components, making it highly customizable.\n */\n@CSSComponent('tooltip')\n@Component({\n standalone: true,\n selector: 'odx-tooltip',\n imports: [DynamicViewDirective],\n templateUrl: './tooltip.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n role: 'tooltip',\n },\n})\nexport class TooltipComponent {\n protected readonly injector = inject(Injector);\n public readonly element = injectElement();\n\n /**\n * The ID attribute of the tooltip, used for accessibility purposes to link the tooltip with its owner element.\n *\n * @type {string | null}\n * @default null\n */\n @Input()\n public id: string | null = null;\n\n /**\n * The content to be displayed within the tooltip. This can be text, a template reference, or a dynamic component.\n *\n * @type {DynamicContent | null}\n */\n @Input()\n public content?: Exclude<DynamicContent, Type<unknown>> | null;\n\n /**\n * Determines the size of the tooltip. It can adjust based on the content size or be set to specific dimensions.\n * The size influences the CSS class applied to the tooltip, allowing for custom styles.\n *\n * @type {TooltipSize}\n * @default TooltipSize.AUTO\n */\n @CSSModifier()\n @Input()\n public size: TooltipSize = TooltipSize.AUTO;\n}\n","<ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n","import { booleanAttribute, Directive, inject, Injector, Input, OnChanges, OnInit, Type } from '@angular/core';\nimport { ConnectedOverlayRef, ConnectedOverlayService } from '@odx/angular/cdk/connected-overlay';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, deepmerge } from '@odx/angular/internal';\nimport { delayUntil } from '@odx/angular/rxjs';\nimport { EventManager, getUniqueId, hasChanged, injectElement, NgChanges, untilDestroyed } from '@odx/angular/utils';\nimport { filter, merge, Subject, tap } from 'rxjs';\nimport { resolveTooltipTriggerEvents } from './helpers';\nimport { DefaultTooltipOptions, TooltipOptions, TooltipSize } from './models';\nimport { TooltipComponent } from './tooltip.component';\n\n/**\n * TooltipDirective manages tooltips for host elements by creating overlay components dynamically.\n * It provides configuration options such as content, delay timings, visibility, and tooltip sizing.\n * This directive uses Angular's connected overlay system to position and manage tooltip visibility.\n */\n@CSSComponent('tooltip-host')\n@Directive({\n standalone: true,\n selector: '[odxTooltip]',\n exportAs: 'odxTooltip',\n providers: [EventManager],\n host: {\n '[attr.aria-describedby]': 'tooltipId',\n },\n})\nexport class TooltipDirective implements OnInit, OnChanges {\n private readonly eventManager = inject(EventManager);\n private readonly connectedOverlayService = inject(ConnectedOverlayService);\n private readonly showTrigger$$ = new Subject<void>();\n private readonly hideTrigger$$ = new Subject<void>();\n private connectedOverlayRef: ConnectedOverlayRef | null = null;\n private tooltipOptions = DefaultTooltipOptions;\n private readonly injector = inject(Injector);\n\n protected tooltipId: string | null = null;\n public readonly element = injectElement();\n\n /**\n * Input for dynamic content to display in the tooltip.\n * This content is reactive and can change dynamically.\n *\n * @type {DynamicContent | null}\n * @default null\n */\n @Input('odxTooltip')\n public content?: Exclude<DynamicContent, Type<unknown>> | null = null;\n\n /**\n * Controls whether the tooltip is disabled. A disabled tooltip will not be displayed.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipDisabled', transform: booleanAttribute })\n public disabled = false;\n\n /**\n * Configuration options for the tooltip.\n * It allows setting various behaviors like delay and positioning.\n *\n * @param {Partial<TooltipOptions> | null | undefined}\n */\n @Input('odxTooltipOptions')\n public set options(value: Partial<TooltipOptions> | null | undefined) {\n this.tooltipOptions = deepmerge(DefaultTooltipOptions, value) as TooltipOptions;\n }\n\n /**\n * Sets the size of the tooltip.\n *\n * @type {TooltipSize}\n * @default null\n */\n @Input('odxTooltipSize')\n public size?: TooltipSize | null = null;\n\n /**\n * Controls the visibility of the tooltip.\n * Useful for programmatically toggling the tooltip display.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipVisible', transform: booleanAttribute })\n public visible = false;\n\n /**\n * Indicates whether the tooltip is currently open.\n *\n * @returns {boolean}\n */\n public get isOpen(): boolean {\n return this.connectedOverlayRef !== null;\n }\n\n constructor() {\n const takeUntilDestroyed = untilDestroyed();\n const show$ = this.showTrigger$$.pipe(\n filter(() => !this.isOpen),\n delayUntil(() => this.tooltipOptions.delayIn, this.hideTrigger$$),\n tap(() => this.show()),\n );\n const hide$ = this.hideTrigger$$.pipe(\n filter(() => this.isOpen),\n delayUntil(() => this.tooltipOptions.delayOut, this.showTrigger$$),\n tap(() => this.hide()),\n );\n merge(show$, hide$).pipe(takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.registerEvents();\n }\n\n public ngOnChanges(changes: NgChanges<TooltipDirective>): void {\n if (hasChanged(changes, 'disabled') && this.disabled) {\n this.hide();\n }\n if (hasChanged(changes, ['content', 'size'])) {\n this.connectedOverlayRef?.update({ context: { content: this.content, size: this.size } });\n }\n if (hasChanged(changes, 'options')) {\n this.connectedOverlayRef?.update(this.tooltipOptions);\n this.registerEvents();\n }\n if (this.visible && !this.disabled) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Shows the tooltip, creating and attaching the overlay to the host element.\n */\n public show(): void {\n if (this.isOpen || this.disabled) return;\n this.tooltipId = getUniqueId('odx-tooltip');\n this.connectedOverlayRef = this.connectedOverlayService.createOverlay(\n this.element.nativeElement,\n {\n ...this.tooltipOptions,\n containerClass: 'odx-tooltip-overlay',\n content: TooltipComponent,\n context: { content: this.content, size: this.size, id: this.tooltipId },\n showArrow: true,\n enableFallback: true,\n },\n {\n host: this.element.nativeElement.parentElement,\n injector: this.injector,\n },\n );\n }\n\n /**\n * Hides the tooltip, detaching the overlay from the host element.\n */\n public hide(): void {\n if (!this.isOpen || (this.visible && !this.disabled)) return;\n this.connectedOverlayRef?.close();\n this.connectedOverlayRef = null;\n this.tooltipId = null;\n }\n\n private registerEvents(): void {\n const [openEvent, closeEvent] = resolveTooltipTriggerEvents(this.tooltipOptions.trigger);\n this.eventManager.destroyListeners();\n this.eventManager.register([openEvent, 'focusin'], () => this.showTrigger$$.next());\n this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());\n this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-tooltip.mjs","sources":["../../../../libs/angular/components/tooltip/src/lib/helpers/resolve-tooltip-trigger-events.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-size.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-options.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.html","../../../../libs/angular/components/tooltip/src/lib/tooltip.directive.ts","../../../../libs/angular/components/tooltip/src/odx-angular-components-tooltip.ts"],"sourcesContent":["import { TooltipTrigger } from '../models';\n\n/**\n * @internal\n * Resolves the appropriate event names for the provided tooltip trigger.\n *\n * @param {TooltipTrigger} trigger - The trigger to resolve.\n * @returns {[string, string | null]} - The event names for the trigger.\n */\nexport function resolveTooltipTriggerEvents(trigger: TooltipTrigger): [string, string | null] {\n if (trigger === 'click') {\n return ['click', null];\n } else {\n return ['mouseenter', 'mouseleave'];\n }\n}\n","export type TooltipSize = typeof TooltipSize[keyof typeof TooltipSize];\n\nexport const TooltipSize = {\n AUTO: 'auto',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","import { ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\nimport { TooltipSize } from './tooltip-size';\nimport { TooltipTrigger } from './tooltip-trigger';\n\nexport interface TooltipOptions extends Pick<ConnectedOverlayOptions, 'position' | 'matchReferenceWidth'> {\n trigger: TooltipTrigger;\n delayIn: number;\n delayOut: number;\n size: TooltipSize;\n}\n\nexport const DefaultTooltipOptions: TooltipOptions = {\n matchReferenceWidth: false,\n size: TooltipSize.AUTO,\n trigger: 'hover',\n position: 'top',\n delayIn: 0,\n delayOut: 0,\n};\n","import { ChangeDetectionStrategy, Component, inject, Injector, Input, Type, ViewEncapsulation } from '@angular/core';\nimport { DynamicContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { TooltipSize } from './models';\n\n/**\n /**\n * TooltipComponent displays contextual information related to an element when the user hovers over\n * or focuses on the element. It supports dynamic content and can be styled with different sizes.\n *\n * The component uses dynamic content rendering to provide flexible display options including text,\n * templates, or even other Angular components, making it highly customizable.\n */\n@CSSComponent('tooltip')\n@Component({\n standalone: true,\n selector: 'odx-tooltip',\n imports: [DynamicViewDirective],\n templateUrl: './tooltip.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n role: 'tooltip',\n },\n})\nexport class TooltipComponent {\n protected readonly injector = inject(Injector);\n public readonly element = injectElement();\n\n /**\n * The ID attribute of the tooltip, used for accessibility purposes to link the tooltip with its owner element.\n *\n * @type {string | null}\n * @default null\n */\n @Input()\n public id: string | null = null;\n\n /**\n * The content to be displayed within the tooltip. This can be text, a template reference, or a dynamic component.\n *\n * @type {DynamicContent | null}\n */\n @Input()\n public content?: Exclude<DynamicContent, Type<unknown>> | null;\n\n /**\n * Determines the size of the tooltip. It can adjust based on the content size or be set to specific dimensions.\n * The size influences the CSS class applied to the tooltip, allowing for custom styles.\n *\n * @type {TooltipSize}\n * @default TooltipSize.AUTO\n */\n @CSSModifier()\n @Input()\n public size: TooltipSize = TooltipSize.AUTO;\n}\n","<ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n","import { booleanAttribute, Directive, inject, Injector, Input, OnChanges, OnInit, Type } from '@angular/core';\nimport { ConnectedOverlayRef, ConnectedOverlayService } from '@odx/angular/cdk/connected-overlay';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, deepmerge } from '@odx/angular/internal';\nimport { delayUntil } from '@odx/angular/rxjs';\nimport { EventManager, getUniqueId, hasChanged, injectElement, NgChanges, untilDestroyed } from '@odx/angular/utils';\nimport { filter, merge, Subject, tap } from 'rxjs';\nimport { resolveTooltipTriggerEvents } from './helpers';\nimport { DefaultTooltipOptions, TooltipOptions, TooltipSize } from './models';\nimport { TooltipComponent } from './tooltip.component';\n\n/**\n * TooltipDirective manages tooltips for host elements by creating overlay components dynamically.\n * It provides configuration options such as content, delay timings, visibility, and tooltip sizing.\n * This directive uses Angular's connected overlay system to position and manage tooltip visibility.\n */\n@CSSComponent('tooltip-host')\n@Directive({\n standalone: true,\n selector: '[odxTooltip]',\n exportAs: 'odxTooltip',\n providers: [EventManager],\n host: {\n '[attr.aria-describedby]': 'tooltipId',\n },\n})\nexport class TooltipDirective implements OnInit, OnChanges {\n private readonly eventManager = inject(EventManager);\n private readonly connectedOverlayService = inject(ConnectedOverlayService);\n private readonly showTrigger$$ = new Subject<void>();\n private readonly hideTrigger$$ = new Subject<void>();\n private connectedOverlayRef: ConnectedOverlayRef | null = null;\n private tooltipOptions = DefaultTooltipOptions;\n private readonly injector = inject(Injector);\n\n protected tooltipId: string | null = null;\n public readonly element = injectElement();\n\n /**\n * Input for dynamic content to display in the tooltip.\n * This content is reactive and can change dynamically.\n *\n * @type {DynamicContent | null}\n * @default null\n */\n @Input('odxTooltip')\n public content?: Exclude<DynamicContent, Type<unknown>> | null = null;\n\n /**\n * Controls whether the tooltip is disabled. A disabled tooltip will not be displayed.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipDisabled', transform: booleanAttribute })\n public disabled = false;\n\n /**\n * Configuration options for the tooltip.\n * It allows setting various behaviors like delay and positioning.\n *\n * @param {Partial<TooltipOptions> | null | undefined}\n */\n @Input('odxTooltipOptions')\n public set options(value: Partial<TooltipOptions> | null | undefined) {\n this.tooltipOptions = deepmerge(DefaultTooltipOptions, value) as TooltipOptions;\n }\n\n /**\n * Sets the size of the tooltip.\n *\n * @type {TooltipSize}\n * @default null\n */\n @Input('odxTooltipSize')\n public size?: TooltipSize | null = null;\n\n /**\n * Controls the visibility of the tooltip.\n * Useful for programmatically toggling the tooltip display.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipVisible', transform: booleanAttribute })\n public visible = false;\n\n /**\n * Indicates whether the tooltip is currently open.\n *\n * @returns {boolean}\n */\n public get isOpen(): boolean {\n return this.connectedOverlayRef !== null;\n }\n\n constructor() {\n const takeUntilDestroyed = untilDestroyed();\n const show$ = this.showTrigger$$.pipe(\n filter(() => !this.isOpen),\n delayUntil(() => this.tooltipOptions.delayIn, this.hideTrigger$$),\n tap(() => this.show()),\n );\n const hide$ = this.hideTrigger$$.pipe(\n filter(() => this.isOpen),\n delayUntil(() => this.tooltipOptions.delayOut, this.showTrigger$$),\n tap(() => this.hide()),\n );\n merge(show$, hide$).pipe(takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.registerEvents();\n }\n\n public ngOnChanges(changes: NgChanges<TooltipDirective>): void {\n if (hasChanged(changes, 'disabled') && this.disabled) {\n this.hide();\n }\n if (hasChanged(changes, ['content', 'size'])) {\n this.connectedOverlayRef?.update({ context: { content: this.content, size: this.size } });\n }\n if (hasChanged(changes, 'options')) {\n this.connectedOverlayRef?.update(this.tooltipOptions);\n this.registerEvents();\n }\n if (this.visible && !this.disabled) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Shows the tooltip, creating and attaching the overlay to the host element.\n */\n public show(): void {\n if (this.isOpen || this.disabled || !this.content) return;\n this.tooltipId = getUniqueId('odx-tooltip');\n this.connectedOverlayRef = this.connectedOverlayService.createOverlay(\n this.element.nativeElement,\n {\n ...this.tooltipOptions,\n containerClass: 'odx-tooltip-overlay',\n content: TooltipComponent,\n context: { content: this.content, size: this.size, id: this.tooltipId },\n showArrow: true,\n enableFallback: true,\n },\n {\n host: this.element.nativeElement.parentElement,\n injector: this.injector,\n },\n );\n }\n\n /**\n * Hides the tooltip, detaching the overlay from the host element.\n */\n public hide(): void {\n if (!this.isOpen || (this.visible && !this.disabled)) return;\n this.connectedOverlayRef?.close();\n this.connectedOverlayRef = null;\n this.tooltipId = null;\n }\n\n private registerEvents(): void {\n const [openEvent, closeEvent] = resolveTooltipTriggerEvents(this.tooltipOptions.trigger);\n this.eventManager.destroyListeners();\n this.eventManager.register([openEvent, 'focusin'], () => this.showTrigger$$.next());\n this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());\n this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "9.1.3",
3
+ "version": "9.2.1",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {