@odx/angular 5.4.0 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/components/footer/README.md +3 -0
- package/components/footer/index.d.ts +3 -0
- package/components/footer/lib/footer.component.d.ts +23 -0
- package/components/footer/lib/footer.config.d.ts +30 -0
- package/components/footer/lib/footer.i18n.d.ts +3 -0
- package/components/footer/lib/helpers/create-footer-links.d.ts +12 -0
- package/components/footer/lib/helpers/index.d.ts +1 -0
- package/components/footer/lib/models/footer-link.d.ts +4 -0
- package/components/footer/lib/models/footer-variant.d.ts +5 -0
- package/components/footer/lib/models/index.d.ts +2 -0
- package/components/header/lib/header.component.d.ts +1 -1
- package/components/header-navigation/README.md +3 -0
- package/components/header-navigation/index.d.ts +3 -0
- package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +11 -0
- package/components/header-navigation/lib/directives/index.d.ts +1 -0
- package/components/header-navigation/lib/header-navigation.component.d.ts +8 -0
- package/components/header-navigation/lib/header-navigation.module.d.ts +9 -0
- package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +2 -1
- package/components/main-menu/lib/main-menu.component.d.ts +5 -5
- package/components/main-menu/lib/main-menu.config.d.ts +1 -0
- package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +3 -2
- package/esm2022/components/footer/index.mjs +4 -0
- package/esm2022/components/footer/lib/footer.component.mjs +51 -0
- package/esm2022/components/footer/lib/footer.config.mjs +29 -0
- package/esm2022/components/footer/lib/footer.i18n.mjs +19 -0
- package/esm2022/components/footer/lib/helpers/create-footer-links.mjs +25 -0
- package/esm2022/components/footer/lib/helpers/index.mjs +2 -0
- package/esm2022/components/footer/lib/models/footer-link.mjs +2 -0
- package/esm2022/components/footer/lib/models/footer-variant.mjs +5 -0
- package/esm2022/components/footer/lib/models/index.mjs +3 -0
- package/esm2022/components/footer/odx-angular-components-footer.mjs +5 -0
- package/esm2022/components/header/lib/header.component.mjs +3 -3
- package/esm2022/components/header-navigation/index.mjs +4 -0
- package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +37 -0
- package/esm2022/components/header-navigation/lib/directives/index.mjs +2 -0
- package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +28 -0
- package/esm2022/components/header-navigation/lib/header-navigation.module.mjs +19 -0
- package/esm2022/components/header-navigation/odx-angular-components-header-navigation.mjs +5 -0
- package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +7 -4
- package/esm2022/components/main-menu/lib/main-menu.component.mjs +9 -11
- package/esm2022/components/main-menu/lib/main-menu.config.mjs +1 -1
- package/esm2022/components/notification/lib/features/with-save-notifications.mjs +2 -2
- package/esm2022/utils/lib/helpers/build-website-url.mjs +24 -1
- package/fesm2022/odx-angular-breakpoints.mjs +2 -1
- package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
- package/fesm2022/odx-angular-components-footer.mjs +131 -0
- package/fesm2022/odx-angular-components-footer.mjs.map +1 -0
- package/fesm2022/odx-angular-components-header-navigation.mjs +84 -0
- package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -0
- package/fesm2022/odx-angular-components-header.mjs +2 -2
- package/fesm2022/odx-angular-components-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-main-menu.mjs +11 -9
- package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-notification.mjs +1 -1
- package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs +23 -0
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/package.json +13 -1
- package/utils/lib/helpers/build-website-url.d.ts +23 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CoreModule } from '@odx/angular';
|
|
3
|
+
import { HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective } from './directives';
|
|
4
|
+
import { HeaderNavigationComponent } from './header-navigation.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
const modules = [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective];
|
|
7
|
+
export class HeaderNavigationModule {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, imports: [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective], exports: [CoreModule, HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective] }); }
|
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, imports: [HeaderNavigationComponent, CoreModule] }); }
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
imports: modules,
|
|
16
|
+
exports: [CoreModule, ...modules],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLW5hdmlnYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvaGVhZGVyLW5hdmlnYXRpb24vc3JjL2xpYi9oZWFkZXItbmF2aWdhdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFMUUsTUFBTSxPQUFPLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSw2QkFBNkIsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO0FBTWhILE1BQU0sT0FBTyxzQkFBc0I7K0dBQXRCLHNCQUFzQjtnSEFBdEIsc0JBQXNCLFlBTmxCLHlCQUF5QixFQUFFLDZCQUE2QixFQUFFLG1DQUFtQyxhQUlsRyxVQUFVLEVBSkwseUJBQXlCLEVBQUUsNkJBQTZCLEVBQUUsbUNBQW1DO2dIQU1qRyxzQkFBc0IsWUFObEIseUJBQXlCLEVBSTlCLFVBQVU7OzRGQUVULHNCQUFzQjtrQkFKbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEhlYWRlck5hdmlnYXRpb25MaW5rRGlyZWN0aXZlLCBIZWFkZXJOYXZpZ2F0aW9uUm91dGVyTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBIZWFkZXJOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXItbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuXG5jb25zdCBtb2R1bGVzID0gW0hlYWRlck5hdmlnYXRpb25Db21wb25lbnQsIEhlYWRlck5hdmlnYXRpb25MaW5rRGlyZWN0aXZlLCBIZWFkZXJOYXZpZ2F0aW9uUm91dGVyTGlua0RpcmVjdGl2ZV07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IG1vZHVsZXMsXG4gIGV4cG9ydHM6IFtDb3JlTW9kdWxlLCAuLi5tb2R1bGVzXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyTmF2aWdhdGlvbk1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWFuZ3VsYXItY29tcG9uZW50cy1oZWFkZXItbmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2hlYWRlci1uYXZpZ2F0aW9uL3NyYy9vZHgtYW5ndWxhci1jb21wb25lbnRzLWhlYWRlci1uYXZpZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
import { combineLatest, map, of } from 'rxjs';
|
|
1
2
|
import { injectMainMenuLinksConfig } from '../main-menu.config';
|
|
2
|
-
export function createMainMenuLinks() {
|
|
3
|
-
const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl } = injectMainMenuLinksConfig();
|
|
3
|
+
export function createMainMenuLinks$() {
|
|
4
|
+
const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } = injectMainMenuLinksConfig();
|
|
5
|
+
const dynamicLinks$ = dynamicLinks ?? of([]);
|
|
4
6
|
const links = [
|
|
7
|
+
{ name: 'status', url: statusUrl },
|
|
5
8
|
{ name: 'termsAndConditions', url: termsAndConditionsUrl },
|
|
6
9
|
{ name: 'providerIdentification', url: providerIdentificationUrl },
|
|
7
10
|
{ name: 'openSource', url: openSourceUrl },
|
|
8
11
|
{ name: 'dataProtection', url: dataProtectionUrl },
|
|
9
12
|
{ name: 'legalNotice', url: legalNoticeUrl },
|
|
10
13
|
];
|
|
11
|
-
return links.filter((link) => !!link.url);
|
|
14
|
+
return combineLatest([dynamicLinks$, of(links)].filter(Boolean)).pipe(map((links) => links.flat().filter((link) => !!link.url)));
|
|
12
15
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1haW4tbWVudS1saW5rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL2hlbHBlcnMvY3JlYXRlLW1haW4tbWVudS1saW5rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxNQUFNLEVBQUUsY0FBYyxFQUFFLHlCQUF5QixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQ25JLHlCQUF5QixFQUFFLENBQUM7SUFDOUIsTUFBTSxhQUFhLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRztRQUNaLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2xDLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRTtRQUMxRCxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUU7UUFDbEUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUU7UUFDMUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFO1FBQ2xELEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO0tBQzdDLENBQUM7SUFFRixPQUFPLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGluamVjdE1haW5NZW51TGlua3NDb25maWcgfSBmcm9tICcuLi9tYWluLW1lbnUuY29uZmlnJztcbmltcG9ydCB7IE1haW5NZW51TGluayB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYWluTWVudUxpbmtzJCgpOiBPYnNlcnZhYmxlPE1haW5NZW51TGlua1tdPiB7XG4gIGNvbnN0IHsgbGVnYWxOb3RpY2VVcmwsIHByb3ZpZGVySWRlbnRpZmljYXRpb25VcmwsIGRhdGFQcm90ZWN0aW9uVXJsLCBvcGVuU291cmNlVXJsLCB0ZXJtc0FuZENvbmRpdGlvbnNVcmwsIHN0YXR1c1VybCwgZHluYW1pY0xpbmtzIH0gPVxuICAgIGluamVjdE1haW5NZW51TGlua3NDb25maWcoKTtcbiAgY29uc3QgZHluYW1pY0xpbmtzJCA9IGR5bmFtaWNMaW5rcyA/PyBvZihbXSk7XG4gIGNvbnN0IGxpbmtzID0gW1xuICAgIHsgbmFtZTogJ3N0YXR1cycsIHVybDogc3RhdHVzVXJsIH0sXG4gICAgeyBuYW1lOiAndGVybXNBbmRDb25kaXRpb25zJywgdXJsOiB0ZXJtc0FuZENvbmRpdGlvbnNVcmwgfSxcbiAgICB7IG5hbWU6ICdwcm92aWRlcklkZW50aWZpY2F0aW9uJywgdXJsOiBwcm92aWRlcklkZW50aWZpY2F0aW9uVXJsIH0sXG4gICAgeyBuYW1lOiAnb3BlblNvdXJjZScsIHVybDogb3BlblNvdXJjZVVybCB9LFxuICAgIHsgbmFtZTogJ2RhdGFQcm90ZWN0aW9uJywgdXJsOiBkYXRhUHJvdGVjdGlvblVybCB9LFxuICAgIHsgbmFtZTogJ2xlZ2FsTm90aWNlJywgdXJsOiBsZWdhbE5vdGljZVVybCB9LFxuICBdO1xuXG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KFtkeW5hbWljTGlua3MkLCBvZihsaW5rcyldLmZpbHRlcihCb29sZWFuKSkucGlwZShtYXAoKGxpbmtzKSA9PiBsaW5rcy5mbGF0KCkuZmlsdGVyKChsaW5rKTogbGluayBpcyBNYWluTWVudUxpbmsgPT4gISFsaW5rLnVybCkpKTtcbn1cbiJdfQ==
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { transition, trigger, useAnimation } from '@angular/animations';
|
|
3
|
-
import {
|
|
3
|
+
import { ChangeDetectionStrategy, Component, HostListener, Input, Output, ViewEncapsulation, booleanAttribute, inject } from '@angular/core';
|
|
4
4
|
import { CoreModule } from '@odx/angular';
|
|
5
5
|
import { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';
|
|
6
6
|
import { A11yModule } from '@odx/angular/cdk/a11y';
|
|
7
|
+
import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
|
|
7
8
|
import { AreaHeaderModule } from '@odx/angular/components/area-header';
|
|
8
9
|
import { ButtonComponent } from '@odx/angular/components/button';
|
|
9
10
|
import { IconComponent } from '@odx/angular/components/icon';
|
|
10
11
|
import { LinkDirective } from '@odx/angular/components/link';
|
|
11
12
|
import { LogoDirective } from '@odx/angular/components/logo';
|
|
12
13
|
import { CSSComponent } from '@odx/angular/internal';
|
|
13
|
-
import {
|
|
14
|
+
import { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';
|
|
14
15
|
import { injectElement, trackByIndex } from '@odx/angular/utils';
|
|
15
|
-
import { createMainMenuLinks } from './helpers';
|
|
16
|
+
import { createMainMenuLinks$ } from './helpers';
|
|
16
17
|
import mainMenuTranslations from './main-menu.i18n';
|
|
17
18
|
import { MainMenuService } from './main-menu.service';
|
|
18
|
-
import { injectMainMenuLinksConfig } from './main-menu.config';
|
|
19
|
-
import { EMPTY } from 'rxjs';
|
|
20
19
|
import * as i0 from "@angular/core";
|
|
21
20
|
import * as i1 from "@angular/common";
|
|
22
21
|
import * as i2 from "@odx/angular";
|
|
@@ -26,9 +25,8 @@ import * as i5 from "@odx/angular/components/button";
|
|
|
26
25
|
import * as i6 from "@odx/angular/components/icon";
|
|
27
26
|
export let MainMenuComponent = class MainMenuComponent {
|
|
28
27
|
constructor() {
|
|
29
|
-
this.dynamicLinks = injectMainMenuLinksConfig().dynamicLinks ?? EMPTY;
|
|
30
28
|
this.mainMenuService = inject(MainMenuService);
|
|
31
|
-
this.mainMenuLinks = createMainMenuLinks();
|
|
29
|
+
this.mainMenuLinks$ = createMainMenuLinks$();
|
|
32
30
|
this.trackByIndex = trackByIndex;
|
|
33
31
|
this.element = injectElement();
|
|
34
32
|
this.subtitle = null;
|
|
@@ -45,7 +43,7 @@ export let MainMenuComponent = class MainMenuComponent {
|
|
|
45
43
|
this.mainMenuService.close();
|
|
46
44
|
}
|
|
47
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
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
|
|
46
|
+
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: i2.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: [
|
|
49
47
|
trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
|
|
50
48
|
trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
|
|
51
49
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -55,12 +53,12 @@ MainMenuComponent = __decorate([
|
|
|
55
53
|
], MainMenuComponent);
|
|
56
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, decorators: [{
|
|
57
55
|
type: Component,
|
|
58
|
-
args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: {
|
|
56
|
+
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: {
|
|
59
57
|
'[class.is-open]': 'isOpen',
|
|
60
58
|
}, animations: [
|
|
61
59
|
trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
|
|
62
60
|
trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
|
|
63
|
-
], 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
|
|
61
|
+
], 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" }]
|
|
64
62
|
}], propDecorators: { title: [{
|
|
65
63
|
type: Input,
|
|
66
64
|
args: [{ required: true }]
|
|
@@ -77,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
77
75
|
type: HostListener,
|
|
78
76
|
args: ['window:keyup.esc']
|
|
79
77
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL21haW4tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tYWluLW1lbnUvc3JjL2xpYi9tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQXNCLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUs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QUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMvSDs4QkFTTSxLQUFLO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlsQixRQUFRO3NCQURkLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlLLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBVS9CLFFBQVE7c0JBRGQsTUFBTTtnQkFJQSxLQUFLO3NCQURYLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJhbnNpdGlvbiwgdHJpZ2dlciwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBib29sZWFuQXR0cmlidXRlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgZmFkZUluLCBmYWRlT3V0LCBzbGlkZUluTGVmdCwgc2xpZGVPdXRMZWZ0IH0gZnJvbSAnQG9keC9hbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgQXJlYUhlYWRlck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FyZWEtaGVhZGVyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBMaW5rRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbGluayc7XG5pbXBvcnQgeyBMb2dvRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbG9nbyc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSwgcHJvdmlkZVRyYW5zbGF0aW9ucyB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbC90cmFuc2xhdGUnO1xuaW1wb3J0IHsgaW5qZWN0RWxlbWVudCwgdHJhY2tCeUluZGV4IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGNyZWF0ZU1haW5NZW51TGlua3MkIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCBtYWluTWVudVRyYW5zbGF0aW9ucyBmcm9tICcuL21haW4tbWVudS5pMThuJztcbmltcG9ydCB7IE1haW5NZW51U2VydmljZSB9IGZyb20gJy4vbWFpbi1tZW51LnNlcnZpY2UnO1xuXG5AQ1NTQ29tcG9uZW50KCdtYWluLW1lbnUnKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2R4LW1haW4tbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0ExMXlNb2R1bGUsIENvcmVNb2R1bGUsIEFyZWFIZWFkZXJNb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgTG9nb0RpcmVjdGl2ZSwgVHJhbnNsYXRlUGlwZSwgTGlua0RpcmVjdGl2ZSwgRHluYW1pY1ZpZXdEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlVHJhbnNsYXRpb25zKG1haW5NZW51VHJhbnNsYXRpb25zKV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmlzLW9wZW5dJzogJ2lzT3BlbicsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdtZW51QW5pbWF0aW9uJywgW3RyYW5zaXRpb24oJzplbnRlcicsIFt1c2VBbmltYXRpb24oc2xpZGVJbkxlZnQpXSksIHRyYW5zaXRpb24oJzpsZWF2ZScsIFt1c2VBbmltYXRpb24oc2xpZGVPdXRMZWZ0KV0pXSksXG4gICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFt0cmFuc2l0aW9uKCc6ZW50ZXInLCBbdXNlQW5pbWF0aW9uKGZhZGVJbigpKV0pLCB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbdXNlQW5pbWF0aW9uKGZhZGVPdXQoKSldKV0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNYWluTWVudUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBtYWluTWVudVNlcnZpY2UgPSBpbmplY3QoTWFpbk1lbnVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1haW5NZW51TGlua3MkID0gY3JlYXRlTWFpbk1lbnVMaW5rcyQoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrQnlJbmRleCA9IHRyYWNrQnlJbmRleDtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHRpdGxlITogRHluYW1pY1RleHRDb250ZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdWJ0aXRsZT86IER5bmFtaWNUZXh0Q29udGVudCB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb3B5cmlnaHQ/OiBEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1haW5NZW51U2VydmljZS50b2dnbGUodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWFpbk1lbnVTZXJ2aWNlLmlzT3BlbigpO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBtZW51T3BlbiA9IHRoaXMubWFpbk1lbnVTZXJ2aWNlLmlzT3BlbiQ7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwLmVzYycpXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1haW5NZW51U2VydmljZS5jbG9zZSgpO1xuICB9XG59XG4iLCI8YXNpZGUgQG1lbnVBbmltYXRpb24gY2xhc3M9XCJvZHgtbWFpbi1tZW51X19pbm5lclwiIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSAqbmdJZj1cIm1lbnVPcGVuIHwgYXN5bmNcIj5cbiAgPGRpdiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2FjdGlvbnNcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwib2R4LW1haW4tbWVudV9fY2xvc2VcIiBvZHhCdXR0b24gZGlzYWJsZWQ9XCJmYWxzZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICA8b2R4LWljb24gbmFtZT1cImNsb3NlXCIgaWNvblNldD1cImNvcmVcIj48L29keC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG9keC1hcmVhLWhlYWRlciBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2hlYWRlclwiIHNpemU9XCJsYXJnZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwidGl0bGVcIiAvPlxuICAgIDxvZHgtYXJlYS1oZWFkZXItc3VidGl0bGUgKm5nSWY9XCJzdWJ0aXRsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJzdWJ0aXRsZVwiIC8+XG4gICAgPC9vZHgtYXJlYS1oZWFkZXItc3VidGl0bGU+XG4gIDwvb2R4LWFyZWEtaGVhZGVyPlxuICA8bmF2IGNsYXNzPVwib2R4LW1haW4tbWVudV9fY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9uYXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19pbmZvXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keExpbmtdXCI+PC9uZy1jb250ZW50PlxuICAgIDxhIG9keExpbmsgW2hyZWZdPVwibGluay51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiAqbmdGb3I9XCJsZXQgbGluayBvZiBtYWluTWVudUxpbmtzJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIj5cbiAgICAgIHt7IGxpbmsubmFtZSB8IG9keFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgPC9hPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2Zvb3RlclwiPlxuICAgIDxvZHgtbG9nbyB2YXJpYW50PVwiaW52ZXJzZVwiPjwvb2R4LWxvZ28+XG4gICAgPHAgY2xhc3M9XCJvZHgtdGV4dCBvZHgtdGV4dC0tc21hbGxcIiAqbmdJZj1cImNvcHlyaWdodFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJjb3B5cmlnaHRcIiAvPlxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2FzaWRlPlxuPGRpdiBAb3ZlcmxheUFuaW1hdGlvbiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX292ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2UoKVwiICpuZ0lmPVwibWVudU9wZW4gfCBhc3luY1wiPjwvZGl2PlxuIl19
|
|
@@ -3,4 +3,4 @@ export const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLi
|
|
|
3
3
|
providerIdentificationUrl: buildWebsiteUrl('provideridentification'),
|
|
4
4
|
legalNoticeUrl: buildWebsiteUrl('legalnotice'),
|
|
5
5
|
});
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1tZW51LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL21haW4tbWVudS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBY3pFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyxrQkFBa0IsQ0FDMUksZUFBZSxFQUNmLG1DQUFtQyxFQUNuQztJQUNFLHlCQUF5QixFQUFFLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQztJQUNwRSxjQUFjLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQztDQUN4QixDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRXZWJzaXRlVXJsLCBjcmVhdGVDb25maWdUb2tlbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWFpbk1lbnVMaW5rIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1haW5NZW51TGlua3NDb25maWcge1xuICBkYXRhUHJvdGVjdGlvblVybD86IHN0cmluZyB8IG51bGw7XG4gIGxlZ2FsTm90aWNlVXJsOiBzdHJpbmcgfCBudWxsO1xuICBwcm92aWRlcklkZW50aWZpY2F0aW9uVXJsOiBzdHJpbmcgfCBudWxsO1xuICB0ZXJtc0FuZENvbmRpdGlvbnNVcmw/OiBzdHJpbmcgfCBudWxsO1xuICBvcGVuU291cmNlVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgc3RhdHVzVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgZHluYW1pY0xpbmtzPzogT2JzZXJ2YWJsZTxNYWluTWVudUxpbmtbXT47XG59XG5cbmV4cG9ydCBjb25zdCB7IE1haW5NZW51TGlua3NDb25maWcsIE1haW5NZW51TGlua3NEZWZhdWx0Q29uZmlnLCBpbmplY3RNYWluTWVudUxpbmtzQ29uZmlnLCBwcm92aWRlTWFpbk1lbnVMaW5rc0NvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKFxuICAnTWFpbk1lbnVMaW5rcycsXG4gICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9tYWluLW1lbnUnLFxuICB7XG4gICAgcHJvdmlkZXJJZGVudGlmaWNhdGlvblVybDogYnVpbGRXZWJzaXRlVXJsKCdwcm92aWRlcmlkZW50aWZpY2F0aW9uJyksXG4gICAgbGVnYWxOb3RpY2VVcmw6IGJ1aWxkV2Vic2l0ZVVybCgnbGVnYWxub3RpY2UnKSxcbiAgfSBhcyBNYWluTWVudUxpbmtzQ29uZmlnLFxuKTtcbiJdfQ==
|
|
@@ -31,7 +31,7 @@ export function withSaveNotifications(saveFn) {
|
|
|
31
31
|
{
|
|
32
32
|
provide: ENVIRONMENT_INITIALIZER,
|
|
33
33
|
useFactory: () => {
|
|
34
|
-
const injector = inject(Injector);
|
|
34
|
+
const injector = Injector.create({ parent: inject(Injector), providers: [] });
|
|
35
35
|
const notificationService = inject(NotificationService);
|
|
36
36
|
const saveFnWithContext = (notifications) => runInInjectionContext(injector, () => saveFn(notifications));
|
|
37
37
|
return () => {
|
|
@@ -42,4 +42,4 @@ export function withSaveNotifications(saveFn) {
|
|
|
42
42
|
},
|
|
43
43
|
]);
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zYXZlLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3JjL2xpYi9mZWF0dXJlcy93aXRoLXNhdmUtbm90aWZpY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQWMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQXdDLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTlEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLFVBQVUsaUJBQWlCLENBQUMsYUFBZ0MsRUFBRSxNQUE0QjtJQUM3RixNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM1QjtTQUFNLElBQUksSUFBSSxZQUFZLE9BQU8sRUFBRTtRQUNsQyxNQUFNLElBQUksQ0FBQztLQUNaO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUEyQjtJQUMvRCxPQUFPLHVCQUF1QixDQUFDO1FBQzdCO1lBQ0UsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLGlCQUFpQixHQUF3QixDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUUvSCxPQUFPLEdBQUcsRUFBRTtvQkFDVixtQkFBbUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDN0csQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUNELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEluamVjdG9yLCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20sIGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRmVhdHVyZSwgTm90aWZpY2F0aW9uUmVmLCBtYWtlTm90aWZpY2F0aW9uRmVhdHVyZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBTYXZlTm90aWZpY2F0aW9uc0ZuID0gKG5vdGlmaWNhdGlvblJlZnM6IE5vdGlmaWNhdGlvblJlZltdKSA9PiBPYnNlcnZhYmxlPHZvaWQ+IHwgUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgc2F2ZXMgbm90aWZpY2F0aW9ucyB1c2luZyB0aGUgcHJvdmlkZWQgc2F2ZSBmdW5jdGlvbi4gSXQgaGFuZGxlcyBPYnNlcnZhYmxlIGFuZCBQcm9taXNlIHJlc3VsdHMgc2VhbWxlc3NseS5cbiAqIEBhc3luY1xuICogQGZ1bmN0aW9uIHNhdmVOb3RpZmljYXRpb25zXG4gKiBAcGFyYW0ge05vdGlmaWNhdGlvblJlZltdfSBub3RpZmljYXRpb25zIC0gVGhlIG5vdGlmaWNhdGlvbnMgdG8gYmUgc2F2ZWQuXG4gKiBAcGFyYW0ge1NhdmVOb3RpZmljYXRpb25zRm59IFtzYXZlRm5dIC0gT3B0aW9uYWwgY3VzdG9tIHNhdmUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2F2ZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvblJlZltdLCBzYXZlRm4/OiBTYXZlTm90aWZpY2F0aW9uc0ZuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNhdmUgPSBzYXZlRm4/Lihub3RpZmljYXRpb25zKTtcbiAgaWYgKGlzT2JzZXJ2YWJsZShzYXZlKSkge1xuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHNhdmUpO1xuICB9IGVsc2UgaWYgKHNhdmUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgYXdhaXQgc2F2ZTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIGFwcGxpY2F0aW9uIHRvIGF1dG9tYXRpY2FsbHkgc2F2ZSBub3RpZmljYXRpb25zIHVzaW5nIGEgc3BlY2lmaWVkIHNhdmUgZnVuY3Rpb24uXG4gKiBUaGlzIHNldHVwIGludGVncmF0ZXMgd2l0aCBBbmd1bGFyJ3MgZW52aXJvbm1lbnQgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyB0byBlbnN1cmUgbm90aWZpY2F0aW9ucyBhcmUgc2F2ZWQgYXMgbmVlZGVkLlxuICogQGZ1bmN0aW9uIHdpdGhTYXZlTm90aWZpY2F0aW9uc1xuICogQHBhcmFtIHtTYXZlTm90aWZpY2F0aW9uc0ZufSBzYXZlRm4gLSBUaGUgZnVuY3Rpb24gdG8gc2F2ZSBub3RpZmljYXRpb25zLlxuICogQHJldHVybnMge05vdGlmaWNhdGlvbkZlYXR1cmV9IEEgbm90aWZpY2F0aW9uIGZlYXR1cmUgY29uZmlndXJlZCB0byBhdXRvbWF0aWNhbGx5IHNhdmUgbm90aWZpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTYXZlTm90aWZpY2F0aW9ucyhzYXZlRm46IFNhdmVOb3RpZmljYXRpb25zRm4pOiBOb3RpZmljYXRpb25GZWF0dXJlIHtcbiAgcmV0dXJuIG1ha2VOb3RpZmljYXRpb25GZWF0dXJlKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoeyBwYXJlbnQ6IGluamVjdChJbmplY3RvciksIHByb3ZpZGVyczogW10gfSk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG4gICAgICAgIGNvbnN0IHNhdmVGbldpdGhDb250ZXh0OiBTYXZlTm90aWZpY2F0aW9uc0ZuID0gKG5vdGlmaWNhdGlvbnMpID0+IHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gc2F2ZUZuKG5vdGlmaWNhdGlvbnMpKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9ucyQuc3Vic2NyaWJlKCh7IHZhbHVlcyB9KSA9PiBzYXZlTm90aWZpY2F0aW9ucyh2YWx1ZXMsIHNhdmVGbldpdGhDb250ZXh0KSk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=
|
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import { buildUrl } from './build-url';
|
|
2
|
+
/**
|
|
3
|
+
* A constant representing the base URL for the Draeger website.
|
|
4
|
+
* @constant
|
|
5
|
+
* @type {string}
|
|
6
|
+
* @default 'https://www.draeger.com'
|
|
7
|
+
*/
|
|
2
8
|
export const DRAEGER_WEBSITE_URL = 'https://www.draeger.com';
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a full URL for the Draeger website by appending the provided path segments to the base URL.
|
|
11
|
+
* This function is a utility for creating fully qualified URLs to various resources or pages within the Draeger website.
|
|
12
|
+
*
|
|
13
|
+
* @function buildWebsiteUrl
|
|
14
|
+
* @param {...(string | number | symbol | null | undefined)} segments - The path segments to append to the base URL.
|
|
15
|
+
* These can include strings, numbers, symbols, or null/undefined values (the latter two are ignored).
|
|
16
|
+
* @returns {string} The fully constructed URL, including the base URL and all provided path segments.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // Returns 'https://www.draeger.com/about-us'
|
|
20
|
+
* const url = buildWebsiteUrl('about-us');
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* // Can also handle multiple segments, returning 'https://www.draeger.com/products/search/123'
|
|
24
|
+
* const productUrl = buildWebsiteUrl('products', 'search', 123);
|
|
25
|
+
*/
|
|
3
26
|
export function buildWebsiteUrl(...segments) {
|
|
4
27
|
return buildUrl(DRAEGER_WEBSITE_URL, ...segments);
|
|
5
28
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd2Vic2l0ZS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2J1aWxkLXdlYnNpdGUtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBRyxRQUE0RDtJQUM3RixPQUFPLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFVybCB9IGZyb20gJy4vYnVpbGQtdXJsJztcblxuLyoqXG4gKiBBIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgYmFzZSBVUkwgZm9yIHRoZSBEcmFlZ2VyIHdlYnNpdGUuXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAZGVmYXVsdCAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20nXG4gKi9cbmV4cG9ydCBjb25zdCBEUkFFR0VSX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3LmRyYWVnZXIuY29tJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgZnVsbCBVUkwgZm9yIHRoZSBEcmFlZ2VyIHdlYnNpdGUgYnkgYXBwZW5kaW5nIHRoZSBwcm92aWRlZCBwYXRoIHNlZ21lbnRzIHRvIHRoZSBiYXNlIFVSTC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSB1dGlsaXR5IGZvciBjcmVhdGluZyBmdWxseSBxdWFsaWZpZWQgVVJMcyB0byB2YXJpb3VzIHJlc291cmNlcyBvciBwYWdlcyB3aXRoaW4gdGhlIERyYWVnZXIgd2Vic2l0ZS5cbiAqXG4gKiBAZnVuY3Rpb24gYnVpbGRXZWJzaXRlVXJsXG4gKiBAcGFyYW0gey4uLihzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgfCBudWxsIHwgdW5kZWZpbmVkKX0gc2VnbWVudHMgLSBUaGUgcGF0aCBzZWdtZW50cyB0byBhcHBlbmQgdG8gdGhlIGJhc2UgVVJMLlxuICogVGhlc2UgY2FuIGluY2x1ZGUgc3RyaW5ncywgbnVtYmVycywgc3ltYm9scywgb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzICh0aGUgbGF0dGVyIHR3byBhcmUgaWdub3JlZCkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZnVsbHkgY29uc3RydWN0ZWQgVVJMLCBpbmNsdWRpbmcgdGhlIGJhc2UgVVJMIGFuZCBhbGwgcHJvdmlkZWQgcGF0aCBzZWdtZW50cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmV0dXJucyAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20vYWJvdXQtdXMnXG4gKiBjb25zdCB1cmwgPSBidWlsZFdlYnNpdGVVcmwoJ2Fib3V0LXVzJyk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENhbiBhbHNvIGhhbmRsZSBtdWx0aXBsZSBzZWdtZW50cywgcmV0dXJuaW5nICdodHRwczovL3d3dy5kcmFlZ2VyLmNvbS9wcm9kdWN0cy9zZWFyY2gvMTIzJ1xuICogY29uc3QgcHJvZHVjdFVybCA9IGJ1aWxkV2Vic2l0ZVVybCgncHJvZHVjdHMnLCAnc2VhcmNoJywgMTIzKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2Vic2l0ZVVybCguLi5zZWdtZW50czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBzdHJpbmcge1xuICByZXR1cm4gYnVpbGRVcmwoRFJBRUdFUl9XRUJTSVRFX1VSTCwgLi4uc2VnbWVudHMpO1xufVxuIl19
|
|
@@ -74,7 +74,8 @@ class MatchBreakpointsDirective {
|
|
|
74
74
|
this.viewContainer.clear();
|
|
75
75
|
const template = matchesBreakpoints ? this.template : this.elseTemplate;
|
|
76
76
|
if (template) {
|
|
77
|
-
this.viewContainer.createEmbeddedView(template);
|
|
77
|
+
const viewRef = this.viewContainer.createEmbeddedView(template);
|
|
78
|
+
viewRef.markForCheck();
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatchBreakpointsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-breakpoints.mjs","sources":["../../../../libs/angular/breakpoints/src/lib/helpers/configure-breakpoint.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.config.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.service.ts","../../../../libs/angular/breakpoints/src/lib/directives/match-breakpoints.directive.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.module.ts","../../../../libs/angular/breakpoints/src/odx-angular-breakpoints.ts"],"sourcesContent":["type BreakpointOperators = '<' | '=' | '>';\ntype BreakpointConfig<T extends string> = Record<`${BreakpointOperators}${T}`, string>;\n\nexport function configureBreakpoint<T extends string>(name: T, min: number, max: number): BreakpointConfig<T> {\n return {\n [`<${name}` as const]: `(max-width: ${min - 1}px)`,\n [`=${name}` as const]: `(min-width: ${min}px) and (max-width: ${max - 1}px)`,\n [`>${name}` as const]: `(min-width: ${min}px)`,\n } as BreakpointConfig<T>;\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { configureBreakpoint } from './helpers/configure-breakpoint';\n\nexport const DEFAULT_BREAKPOINTS = {\n ...configureBreakpoint('phone-s', 360, 480),\n ...configureBreakpoint('phone', 480, 768),\n ...configureBreakpoint('tablet', 768, 960),\n ...configureBreakpoint('desktop-s', 960, 1200),\n ...configureBreakpoint('desktop', 1200, 9999),\n} as const;\n\nexport interface BreakpointsConfig {\n breakpoints: Partial<OdxAngular.Breakpoints>;\n}\n\nexport const { BreakpointsConfig, BreakpointsDefaultConfig, injectBreakpointsConfig, provideBreakpointsConfig } = createConfigTokens(\n 'Breakpoints',\n '@odx/angular/breakpoints',\n {\n breakpoints: DEFAULT_BREAKPOINTS,\n } as BreakpointsConfig\n);\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject, Injectable } from '@angular/core';\nimport { distinctUntilChanged, map, Observable, of, shareReplay } from 'rxjs';\nimport { injectBreakpointsConfig } from './breakpoints.config';\nimport { BreakpointName } from './models';\n\n@Injectable({ providedIn: 'root' })\nexport class BreakpointsService {\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly config = injectBreakpointsConfig();\n\n public observe(breakpoints: BreakpointName[]): Observable<boolean> {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.createBreakpointObserver(mediaQueries);\n }\n\n public matches(breakpoints: BreakpointName[]): boolean {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.breakpointObserver.isMatched(mediaQueries);\n }\n\n private getMediaQueries(breakpointNames: BreakpointName[]): string[] {\n return breakpointNames.map((name) => this.config.breakpoints[name] as string).filter(Boolean);\n }\n\n private createBreakpointObserver(mediaQueries: string[]): Observable<boolean> {\n if (mediaQueries.length < 1) return of(false);\n\n return this.breakpointObserver.observe(mediaQueries).pipe(\n map(({ matches }) => matches),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { coerceArray, untilDestroyed } from '@odx/angular/utils';\nimport { BehaviorSubject, switchMap, tap } from 'rxjs';\nimport { BreakpointsService } from '../breakpoints.service';\nimport { BreakpointName } from '../models';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxMatchBreakpoints]',\n})\nexport class MatchBreakpointsDirective implements OnInit {\n private readonly breakpoints$$ = new BehaviorSubject<BreakpointName[]>([]);\n private readonly breakpointsService = inject(BreakpointsService);\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly template = inject(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n @Input('odxMatchBreakpoints')\n public set breakpoints(value: BreakpointName | BreakpointName[] | null | undefined) {\n this.breakpoints$$.next(coerceArray(value ?? []));\n }\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxMatchBreakpointsElse')\n public elseTemplate?: TemplateRef<unknown> | null = null;\n\n public ngOnInit(): void {\n this.breakpoints$$\n .pipe(\n switchMap((breakpoints) => this.breakpointsService.observe(breakpoints)),\n tap((matchesBreakpoints) => this.render(matchesBreakpoints)),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n private render(matchesBreakpoints: boolean): void {\n this.viewContainer.clear();\n const template = matchesBreakpoints ? this.template : this.elseTemplate;\n if (template) {\n this.viewContainer.createEmbeddedView(template);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MatchBreakpointsDirective } from './directives';\n\nconst modules = [MatchBreakpointsDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class BreakpointsModule {}\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-breakpoints.mjs","sources":["../../../../libs/angular/breakpoints/src/lib/helpers/configure-breakpoint.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.config.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.service.ts","../../../../libs/angular/breakpoints/src/lib/directives/match-breakpoints.directive.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.module.ts","../../../../libs/angular/breakpoints/src/odx-angular-breakpoints.ts"],"sourcesContent":["type BreakpointOperators = '<' | '=' | '>';\ntype BreakpointConfig<T extends string> = Record<`${BreakpointOperators}${T}`, string>;\n\nexport function configureBreakpoint<T extends string>(name: T, min: number, max: number): BreakpointConfig<T> {\n return {\n [`<${name}` as const]: `(max-width: ${min - 1}px)`,\n [`=${name}` as const]: `(min-width: ${min}px) and (max-width: ${max - 1}px)`,\n [`>${name}` as const]: `(min-width: ${min}px)`,\n } as BreakpointConfig<T>;\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { configureBreakpoint } from './helpers/configure-breakpoint';\n\nexport const DEFAULT_BREAKPOINTS = {\n ...configureBreakpoint('phone-s', 360, 480),\n ...configureBreakpoint('phone', 480, 768),\n ...configureBreakpoint('tablet', 768, 960),\n ...configureBreakpoint('desktop-s', 960, 1200),\n ...configureBreakpoint('desktop', 1200, 9999),\n} as const;\n\nexport interface BreakpointsConfig {\n breakpoints: Partial<OdxAngular.Breakpoints>;\n}\n\nexport const { BreakpointsConfig, BreakpointsDefaultConfig, injectBreakpointsConfig, provideBreakpointsConfig } = createConfigTokens(\n 'Breakpoints',\n '@odx/angular/breakpoints',\n {\n breakpoints: DEFAULT_BREAKPOINTS,\n } as BreakpointsConfig\n);\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject, Injectable } from '@angular/core';\nimport { distinctUntilChanged, map, Observable, of, shareReplay } from 'rxjs';\nimport { injectBreakpointsConfig } from './breakpoints.config';\nimport { BreakpointName } from './models';\n\n@Injectable({ providedIn: 'root' })\nexport class BreakpointsService {\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly config = injectBreakpointsConfig();\n\n public observe(breakpoints: BreakpointName[]): Observable<boolean> {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.createBreakpointObserver(mediaQueries);\n }\n\n public matches(breakpoints: BreakpointName[]): boolean {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.breakpointObserver.isMatched(mediaQueries);\n }\n\n private getMediaQueries(breakpointNames: BreakpointName[]): string[] {\n return breakpointNames.map((name) => this.config.breakpoints[name] as string).filter(Boolean);\n }\n\n private createBreakpointObserver(mediaQueries: string[]): Observable<boolean> {\n if (mediaQueries.length < 1) return of(false);\n\n return this.breakpointObserver.observe(mediaQueries).pipe(\n map(({ matches }) => matches),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { coerceArray, untilDestroyed } from '@odx/angular/utils';\nimport { BehaviorSubject, switchMap, tap } from 'rxjs';\nimport { BreakpointsService } from '../breakpoints.service';\nimport { BreakpointName } from '../models';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxMatchBreakpoints]',\n})\nexport class MatchBreakpointsDirective implements OnInit {\n private readonly breakpoints$$ = new BehaviorSubject<BreakpointName[]>([]);\n private readonly breakpointsService = inject(BreakpointsService);\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly template = inject(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n @Input('odxMatchBreakpoints')\n public set breakpoints(value: BreakpointName | BreakpointName[] | null | undefined) {\n this.breakpoints$$.next(coerceArray(value ?? []));\n }\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxMatchBreakpointsElse')\n public elseTemplate?: TemplateRef<unknown> | null = null;\n\n public ngOnInit(): void {\n this.breakpoints$$\n .pipe(\n switchMap((breakpoints) => this.breakpointsService.observe(breakpoints)),\n tap((matchesBreakpoints) => this.render(matchesBreakpoints)),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n private render(matchesBreakpoints: boolean): void {\n this.viewContainer.clear();\n const template = matchesBreakpoints ? this.template : this.elseTemplate;\n if (template) {\n const viewRef = this.viewContainer.createEmbeddedView(template);\n viewRef.markForCheck();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MatchBreakpointsDirective } from './directives';\n\nconst modules = [MatchBreakpointsDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class BreakpointsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { __decorate, __metadata } from 'tslib';
|
|
2
|
+
import * as i1 from '@angular/common';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import * as i0 from '@angular/core';
|
|
5
|
+
import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
|
|
6
|
+
import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
|
|
7
|
+
import { LinkDirective } from '@odx/angular/components/link';
|
|
8
|
+
import { LogoDirective } from '@odx/angular/components/logo';
|
|
9
|
+
import { CSSModifier, CSSComponent } from '@odx/angular/internal';
|
|
10
|
+
import { provideTranslations, TranslatePipe } from '@odx/angular/internal/translate';
|
|
11
|
+
import { createConfigTokens, buildWebsiteUrl, trackByIndex, injectElement } from '@odx/angular/utils';
|
|
12
|
+
import { of, combineLatest, map } from 'rxjs';
|
|
13
|
+
|
|
14
|
+
var footerTranslations = {
|
|
15
|
+
en: {
|
|
16
|
+
legalNotice: 'Legal notice',
|
|
17
|
+
providerIdentification: 'Provider identification',
|
|
18
|
+
dataProtection: 'Data protection',
|
|
19
|
+
openSource: 'Open-source licenses',
|
|
20
|
+
termsAndConditions: 'Terms and Conditions',
|
|
21
|
+
status: 'Status',
|
|
22
|
+
},
|
|
23
|
+
de: {
|
|
24
|
+
legalNotice: 'Rechtliche Hinweise',
|
|
25
|
+
providerIdentification: 'Impressum',
|
|
26
|
+
dataProtection: 'Datenschutz',
|
|
27
|
+
openSource: 'Open-Source-Lizenzen',
|
|
28
|
+
termsAndConditions: 'Allgemeine Geschäftsbedingungen',
|
|
29
|
+
status: 'Status',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates configuration tokens for the footer links, providing a structured way to inject and manage footer link configurations.
|
|
35
|
+
* This utility function encapsulates the configuration for footer links, including defaults and the ability to inject custom configurations.
|
|
36
|
+
*
|
|
37
|
+
* @returns {Object} An object containing configuration tokens for footer links:
|
|
38
|
+
* - `FooterLinksConfig`: A token for injecting the footer links configuration.
|
|
39
|
+
* - `FooterLinksDefaultConfig`: A token representing the default configuration values.
|
|
40
|
+
* - `injectFooterLinksConfig`: A function to inject the current footer links configuration.
|
|
41
|
+
* - `provideFooterLinksConfig`: A function to provide a custom configuration for footer links.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* // In your module or component
|
|
45
|
+
* @NgModule({
|
|
46
|
+
* providers: [
|
|
47
|
+
* provideFooterLinksConfig({
|
|
48
|
+
* legalNoticeUrl: 'https://www.custom-url/legal-notice',
|
|
49
|
+
* providerIdentificationUrl: 'https://www.custom-url/provider-identification',
|
|
50
|
+
* dynamicLinks: myDynamicLinksObservable
|
|
51
|
+
* })
|
|
52
|
+
* ]
|
|
53
|
+
* })
|
|
54
|
+
* export class MyModule {}
|
|
55
|
+
*/
|
|
56
|
+
const { FooterLinksConfig, FooterLinksDefaultConfig, injectFooterLinksConfig, provideFooterLinksConfig } = createConfigTokens('FooterLinks', '@odx/angular/components/footer', {
|
|
57
|
+
providerIdentificationUrl: buildWebsiteUrl('provideridentification'),
|
|
58
|
+
legalNoticeUrl: buildWebsiteUrl('legalnotice'),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Creates an observable stream of footer links, combining statically configured links with dynamically provided ones.
|
|
63
|
+
* It leverages the footer links configuration injected from `injectFooterLinksConfig` and optionally includes
|
|
64
|
+
* dynamic links if provided. All links are filtered to include only those with a non-empty URL.
|
|
65
|
+
*
|
|
66
|
+
* @function createFooterLinks$
|
|
67
|
+
* @returns {Observable<FooterLink[]>} An Observable that emits an array of `FooterLink` objects. Each `FooterLink`
|
|
68
|
+
* contains a `name` and a `url`. The observable emits updates if the set of dynamic links changes.
|
|
69
|
+
*/
|
|
70
|
+
function createFooterLinks$() {
|
|
71
|
+
const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } = injectFooterLinksConfig();
|
|
72
|
+
const dynamicLinks$ = dynamicLinks ?? of([]);
|
|
73
|
+
const links = [
|
|
74
|
+
{ name: 'status', url: statusUrl },
|
|
75
|
+
{ name: 'termsAndConditions', url: termsAndConditionsUrl },
|
|
76
|
+
{ name: 'providerIdentification', url: providerIdentificationUrl },
|
|
77
|
+
{ name: 'openSource', url: openSourceUrl },
|
|
78
|
+
{ name: 'dataProtection', url: dataProtectionUrl },
|
|
79
|
+
{ name: 'legalNotice', url: legalNoticeUrl },
|
|
80
|
+
];
|
|
81
|
+
return combineLatest([dynamicLinks$, of(links)]).pipe(map((links) => links.flat().filter((link) => !!link.url)));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const FooterVariant = {
|
|
85
|
+
LIGHT: 'light',
|
|
86
|
+
DARK: 'dark',
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Represents the footer component of an application, dynamically generating links and supporting various styles.
|
|
91
|
+
* This component integrates dynamic and static content for the footer, including a logo, navigational links, and a customizable description.
|
|
92
|
+
*
|
|
93
|
+
* @usage `<odx-footer [description]="dynamicOrStaticContent" [variant]="'light'|'dark'"></odx-footer>`
|
|
94
|
+
*
|
|
95
|
+
* @input
|
|
96
|
+
* - `description` - Accepts dynamic content (observable or static string) for displaying a custom description in the footer.
|
|
97
|
+
* - `variant` - Sets the footer's appearance theme, supporting `light` and `dark` variants as defined by `FooterVariant`.
|
|
98
|
+
*/
|
|
99
|
+
let FooterComponent = class FooterComponent {
|
|
100
|
+
constructor() {
|
|
101
|
+
this.footerLinks$ = createFooterLinks$();
|
|
102
|
+
this.trackByIndex = trackByIndex;
|
|
103
|
+
this.element = injectElement();
|
|
104
|
+
this.description = null;
|
|
105
|
+
this.variant = FooterVariant.LIGHT;
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "odx-footer", inputs: { description: "description", variant: "variant" }, providers: [provideTranslations(footerTranslations)], ngImport: i0, template: "<div class=\"odx-footer__inner\">\n <div class=\"odx-footer__content\">\n <ng-content></ng-content>\n </div>\n <nav class=\"odx-footer__navigation\">\n <ng-content select=\"[odxLink]\" />\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of footerLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </nav>\n <p class=\"odx-footer__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "ngmodule", type: CommonModule }, { 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: "pipe", type: TranslatePipe, name: "odxTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
109
|
+
};
|
|
110
|
+
__decorate([
|
|
111
|
+
CSSModifier(),
|
|
112
|
+
__metadata("design:type", String)
|
|
113
|
+
], FooterComponent.prototype, "variant", void 0);
|
|
114
|
+
FooterComponent = __decorate([
|
|
115
|
+
CSSComponent('footer')
|
|
116
|
+
], FooterComponent);
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, decorators: [{
|
|
118
|
+
type: Component,
|
|
119
|
+
args: [{ standalone: true, selector: 'odx-footer', imports: [LinkDirective, LogoDirective, DynamicViewDirective, CommonModule, TranslatePipe], providers: [provideTranslations(footerTranslations)], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-footer__inner\">\n <div class=\"odx-footer__content\">\n <ng-content></ng-content>\n </div>\n <nav class=\"odx-footer__navigation\">\n <ng-content select=\"[odxLink]\" />\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of footerLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </nav>\n <p class=\"odx-footer__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </p>\n</div>\n" }]
|
|
120
|
+
}], propDecorators: { description: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], variant: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}] } });
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Generated bundle index. Do not edit.
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
export { FooterComponent, FooterLinksConfig, FooterLinksDefaultConfig, FooterVariant, injectFooterLinksConfig, provideFooterLinksConfig };
|
|
131
|
+
//# sourceMappingURL=odx-angular-components-footer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odx-angular-components-footer.mjs","sources":["../../../../libs/angular/components/footer/src/lib/footer.i18n.ts","../../../../libs/angular/components/footer/src/lib/footer.config.ts","../../../../libs/angular/components/footer/src/lib/helpers/create-footer-links.ts","../../../../libs/angular/components/footer/src/lib/models/footer-variant.ts","../../../../libs/angular/components/footer/src/lib/footer.component.ts","../../../../libs/angular/components/footer/src/lib/footer.component.html","../../../../libs/angular/components/footer/src/odx-angular-components-footer.ts"],"sourcesContent":["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 { MainMenuLinksConfig } from '@odx/angular/components/main-menu';\nimport { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\nimport { FooterLink } from './models';\n\nexport interface FooterLinksConfig extends MainMenuLinksConfig {\n dynamicLinks?: Observable<FooterLink[]>;\n}\n\n/**\n * Creates configuration tokens for the footer links, providing a structured way to inject and manage footer link configurations.\n * This utility function encapsulates the configuration for footer links, including defaults and the ability to inject custom configurations.\n *\n * @returns {Object} An object containing configuration tokens for footer links:\n * - `FooterLinksConfig`: A token for injecting the footer links configuration.\n * - `FooterLinksDefaultConfig`: A token representing the default configuration values.\n * - `injectFooterLinksConfig`: A function to inject the current footer links configuration.\n * - `provideFooterLinksConfig`: A function to provide a custom configuration for footer links.\n *\n * @example\n * // In your module or component\n * @NgModule({\n * providers: [\n * provideFooterLinksConfig({\n * legalNoticeUrl: 'https://www.custom-url/legal-notice',\n * providerIdentificationUrl: 'https://www.custom-url/provider-identification',\n * dynamicLinks: myDynamicLinksObservable\n * })\n * ]\n * })\n * export class MyModule {}\n */\nexport const { FooterLinksConfig, FooterLinksDefaultConfig, injectFooterLinksConfig, provideFooterLinksConfig } = createConfigTokens(\n 'FooterLinks',\n '@odx/angular/components/footer',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as FooterLinksConfig,\n);\n","import { Observable, combineLatest, map, of } from 'rxjs';\nimport { injectFooterLinksConfig } from '../footer.config';\nimport { FooterLink } from '../models';\n\n/**\n * Creates an observable stream of footer links, combining statically configured links with dynamically provided ones.\n * It leverages the footer links configuration injected from `injectFooterLinksConfig` and optionally includes\n * dynamic links if provided. All links are filtered to include only those with a non-empty URL.\n *\n * @function createFooterLinks$\n * @returns {Observable<FooterLink[]>} An Observable that emits an array of `FooterLink` objects. Each `FooterLink`\n * contains a `name` and a `url`. The observable emits updates if the set of dynamic links changes.\n */\n\nexport function createFooterLinks$(): Observable<FooterLink[]> {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } =\n injectFooterLinksConfig();\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)]).pipe(map((links) => links.flat().filter((link): link is FooterLink => !!link.url)));\n}\n","export type FooterVariant = (typeof FooterVariant)[keyof typeof FooterVariant];\n\nexport const FooterVariant = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';\nimport { injectElement, trackByIndex } from '@odx/angular/utils';\nimport footerTranslations from './footer.i18n';\nimport { createFooterLinks$ } from './helpers';\nimport { FooterVariant } from './models';\n\n/**\n * Represents the footer component of an application, dynamically generating links and supporting various styles.\n * This component integrates dynamic and static content for the footer, including a logo, navigational links, and a customizable description.\n *\n * @usage `<odx-footer [description]=\"dynamicOrStaticContent\" [variant]=\"'light'|'dark'\"></odx-footer>`\n *\n * @input\n * - `description` - Accepts dynamic content (observable or static string) for displaying a custom description in the footer.\n * - `variant` - Sets the footer's appearance theme, supporting `light` and `dark` variants as defined by `FooterVariant`.\n */\n\n@CSSComponent('footer')\n@Component({\n standalone: true,\n selector: 'odx-footer',\n imports: [LinkDirective, LogoDirective, DynamicViewDirective, CommonModule, TranslatePipe],\n templateUrl: './footer.component.html',\n providers: [provideTranslations(footerTranslations)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FooterComponent {\n protected readonly footerLinks$ = createFooterLinks$();\n protected readonly trackByIndex = trackByIndex;\n public readonly element = injectElement();\n\n @Input()\n public description?: DynamicTextContent | null = null;\n\n @CSSModifier()\n @Input()\n public variant: FooterVariant = FooterVariant.LIGHT;\n}\n","<div class=\"odx-footer__inner\">\n <div class=\"odx-footer__content\">\n <ng-content></ng-content>\n </div>\n <nav class=\"odx-footer__navigation\">\n <ng-content select=\"[odxLink]\" />\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of footerLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </nav>\n <p class=\"odx-footer__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </p>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, inject, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/router';
|
|
4
|
+
import { RouterLinkActive } from '@angular/router';
|
|
5
|
+
import { reactiveClassBinding, injectElement } from '@odx/angular/utils';
|
|
6
|
+
import { startWith, distinctUntilChanged } from 'rxjs';
|
|
7
|
+
import { __decorate, __metadata } from 'tslib';
|
|
8
|
+
import { ActionGroupComponent } from '@odx/angular/components/action-group';
|
|
9
|
+
import { CSSModifier, CSSComponent } from '@odx/angular/internal';
|
|
10
|
+
import { CoreModule } from '@odx/angular';
|
|
11
|
+
|
|
12
|
+
class HeaderNavigationRouterLinkDirective {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HeaderNavigationRouterLinkDirective, isStandalone: true, selector: "[routerLink][odxHeaderNavigationLink]", hostDirectives: [{ directive: i1.RouterLinkActive, inputs: ["routerLinkActiveOptions", "routerLinkActiveOptions"] }], ngImport: i0 }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationRouterLinkDirective, decorators: [{
|
|
17
|
+
type: Directive,
|
|
18
|
+
args: [{
|
|
19
|
+
standalone: true,
|
|
20
|
+
selector: '[routerLink][odxHeaderNavigationLink]',
|
|
21
|
+
hostDirectives: [{ directive: RouterLinkActive, inputs: ['routerLinkActiveOptions'] }],
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
class HeaderNavigationLinkDirective {
|
|
25
|
+
constructor() {
|
|
26
|
+
const routerLinkActive = inject(RouterLinkActive, { self: true, optional: true });
|
|
27
|
+
if (!routerLinkActive)
|
|
28
|
+
return;
|
|
29
|
+
const isActive$ = routerLinkActive.isActiveChange.pipe(startWith(routerLinkActive.isActive), distinctUntilChanged());
|
|
30
|
+
reactiveClassBinding(isActive$, 'is-active');
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
33
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HeaderNavigationLinkDirective, isStandalone: true, selector: "[odxHeaderNavigationLink]", ngImport: i0 }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationLinkDirective, decorators: [{
|
|
36
|
+
type: Directive,
|
|
37
|
+
args: [{
|
|
38
|
+
standalone: true,
|
|
39
|
+
selector: '[odxHeaderNavigationLink]',
|
|
40
|
+
}]
|
|
41
|
+
}], ctorParameters: function () { return []; } });
|
|
42
|
+
|
|
43
|
+
let HeaderNavigationComponent = class HeaderNavigationComponent {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.element = injectElement();
|
|
46
|
+
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: HeaderNavigationComponent, isStandalone: true, selector: "odx-header-navigation", inputs: { centered: ["centered", "centered", booleanAttribute] }, ngImport: i0, template: "<odx-action-group class=\"odx-header-navigation__inner\">\n <ng-content select=\"ng-template, [odxHeaderNavigationLink]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n", dependencies: [{ kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
49
|
+
};
|
|
50
|
+
__decorate([
|
|
51
|
+
CSSModifier(),
|
|
52
|
+
__metadata("design:type", Boolean)
|
|
53
|
+
], HeaderNavigationComponent.prototype, "centered", void 0);
|
|
54
|
+
HeaderNavigationComponent = __decorate([
|
|
55
|
+
CSSComponent('header-navigation')
|
|
56
|
+
], HeaderNavigationComponent);
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ standalone: true, selector: 'odx-header-navigation', imports: [ActionGroupComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<odx-action-group class=\"odx-header-navigation__inner\">\n <ng-content select=\"ng-template, [odxHeaderNavigationLink]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n" }]
|
|
60
|
+
}], propDecorators: { centered: [{
|
|
61
|
+
type: Input,
|
|
62
|
+
args: [{ transform: booleanAttribute }]
|
|
63
|
+
}] } });
|
|
64
|
+
|
|
65
|
+
const modules = [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective];
|
|
66
|
+
class HeaderNavigationModule {
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
68
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, imports: [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective], exports: [CoreModule, HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective] }); }
|
|
69
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, imports: [HeaderNavigationComponent, CoreModule] }); }
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, decorators: [{
|
|
72
|
+
type: NgModule,
|
|
73
|
+
args: [{
|
|
74
|
+
imports: modules,
|
|
75
|
+
exports: [CoreModule, ...modules],
|
|
76
|
+
}]
|
|
77
|
+
}] });
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Generated bundle index. Do not edit.
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
export { HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationModule, HeaderNavigationRouterLinkDirective };
|
|
84
|
+
//# sourceMappingURL=odx-angular-components-header-navigation.mjs.map
|