@eui/mobile-core 17.2.0-snapshot-1716535851440 → 17.2.0-snapshot-1716885030476

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.
Files changed (27) hide show
  1. package/docs/components/EuimChipSelectorComponent.html +1 -1
  2. package/docs/components/EuimHelpSupportComponent.html +326 -8
  3. package/docs/components/EuimPdfViewerComponent.html +22 -2
  4. package/docs/dependencies.html +5 -5
  5. package/docs/index.html +1 -1
  6. package/docs/interfaces/Contact.html +90 -0
  7. package/docs/interfaces/HelpAndSupportItem.html +311 -0
  8. package/docs/interfaces/Item.html +671 -0
  9. package/docs/interfaces/Material.html +90 -0
  10. package/docs/js/menu-wc.js +12 -6
  11. package/docs/js/menu-wc_es5.js +11 -11
  12. package/docs/js/search/search_index.js +2 -2
  13. package/esm2022/lib/components/euim-about/euim-about.module.mjs +7 -3
  14. package/esm2022/lib/components/euim-about/euim-help-support/euim-help-support.component.mjs +66 -23
  15. package/esm2022/lib/components/euim-pdf-viewer/euim-pdf-viewer.component.mjs +71 -29
  16. package/esm2022/lib/components/euim-pdf-viewer/euim-pdf-viewer.module.mjs +7 -3
  17. package/fesm2022/eui-mobile-core.mjs +134 -46
  18. package/fesm2022/eui-mobile-core.mjs.map +1 -1
  19. package/lib/components/euim-about/euim-about.module.d.ts +2 -1
  20. package/lib/components/euim-about/euim-about.module.d.ts.map +1 -1
  21. package/lib/components/euim-about/euim-help-support/euim-help-support.component.d.ts +39 -3
  22. package/lib/components/euim-about/euim-help-support/euim-help-support.component.d.ts.map +1 -1
  23. package/lib/components/euim-pdf-viewer/euim-pdf-viewer.component.d.ts +26 -3
  24. package/lib/components/euim-pdf-viewer/euim-pdf-viewer.component.d.ts.map +1 -1
  25. package/lib/components/euim-pdf-viewer/euim-pdf-viewer.module.d.ts +2 -1
  26. package/lib/components/euim-pdf-viewer/euim-pdf-viewer.module.d.ts.map +1 -1
  27. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  export * from '@eui/base';
2
2
  import * as i0 from '@angular/core';
3
3
  import { Injectable, booleanAttribute, Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, NgModule, EventEmitter, Output, ContentChildren, ViewChild, HostListener, ContentChild } from '@angular/core';
4
- import { BehaviorSubject, Subject } from 'rxjs';
4
+ import { BehaviorSubject, Subject, throwError } from 'rxjs';
5
5
  import * as i2$1 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
7
7
  import * as i1 from '@ionic/angular';
@@ -9,14 +9,16 @@ import { IonicModule } from '@ionic/angular';
9
9
  import { EclLanguageService, EclDefaultLanguageService } from '@eui/ecl';
10
10
  import * as i2 from '@eui/core';
11
11
  import { EuiEuLanguages } from '@eui/core';
12
- import { takeUntil, distinctUntilKeyChanged } from 'rxjs/operators';
12
+ import { takeUntil, distinctUntilKeyChanged, startWith, switchMap, map, catchError } from 'rxjs/operators';
13
13
  import * as i1$1 from '@ngx-translate/core';
14
14
  import { TranslateModule } from '@ngx-translate/core';
15
15
  import * as i1$2 from '@angular/router';
16
16
  import { NavigationEnd, RouterModule } from '@angular/router';
17
- import * as i2$2 from 'ng2-pdf-viewer';
17
+ import * as i2$2 from '@angular/common/http';
18
+ import { HttpClientModule } from '@angular/common/http';
19
+ import * as i3 from 'ng2-pdf-viewer';
18
20
  import { PdfViewerModule } from 'ng2-pdf-viewer';
19
- import * as i3 from '@mapaxe/ngx-pinch-zoom';
21
+ import * as i4 from '@mapaxe/ngx-pinch-zoom';
20
22
  import { PinchZoomModule } from '@mapaxe/ngx-pinch-zoom';
21
23
  import * as i2$3 from 'angularx-qrcode';
22
24
  import { QRCodeModule } from 'angularx-qrcode';
@@ -3046,12 +3048,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
3046
3048
  }] });
3047
3049
 
3048
3050
  class EuimPdfViewerComponent {
3049
- constructor(alertService) {
3051
+ constructor(alertService, http) {
3050
3052
  this.alertService = alertService;
3053
+ this.http = http;
3051
3054
  this.page = 1;
3052
3055
  this.zoom = 1;
3053
3056
  this.loading = true;
3054
3057
  this.errorMessage = '';
3058
+ this.pdfNumPages = 1;
3059
+ this.urlChange$ = new Subject();
3055
3060
  this.showDefaultError = true;
3056
3061
  setTimeout(() => {
3057
3062
  if (this.showDefaultError) {
@@ -3060,6 +3065,29 @@ class EuimPdfViewerComponent {
3060
3065
  }
3061
3066
  }, 15000);
3062
3067
  }
3068
+ ngOnInit() {
3069
+ // subscribe and cancel previous subscription (if any) for fetching data while URL changes
3070
+ this.subscription = this.urlChange$.pipe(startWith(this.url), switchMap((url) => this.getPDFData(url))).subscribe({
3071
+ next: (data) => {
3072
+ this.data = data;
3073
+ this.showDefaultError = false;
3074
+ this.loading = false;
3075
+ },
3076
+ error: () => {
3077
+ this.onError();
3078
+ this.data = null;
3079
+ },
3080
+ });
3081
+ }
3082
+ ngOnChanges(changes) {
3083
+ if (changes['url']) {
3084
+ this.loading = true;
3085
+ this.urlChange$.next(changes['url'].currentValue);
3086
+ }
3087
+ }
3088
+ ngOnDestroy() {
3089
+ this.subscription.unsubscribe();
3090
+ }
3063
3091
  zoomChange(event) {
3064
3092
  this.eventResult = event;
3065
3093
  this.zoom = this.eventResult.scale;
@@ -3068,6 +3096,7 @@ class EuimPdfViewerComponent {
3068
3096
  this.showDefaultError = false;
3069
3097
  this.loading = false;
3070
3098
  this.pdf = pdf;
3099
+ this.pdfNumPages = this.pdf.numPages;
3071
3100
  }
3072
3101
  onError() {
3073
3102
  this.showDefaultError = false;
@@ -3075,16 +3104,8 @@ class EuimPdfViewerComponent {
3075
3104
  this.errorMessage = 'File could not be loaded.';
3076
3105
  }
3077
3106
  onDownload() {
3078
- this.pdf.getData().then((u8) => {
3079
- const blob = new Blob([u8.buffer], {
3080
- type: 'application/pdf',
3081
- });
3082
- const url = URL.createObjectURL(blob);
3083
- this.openLink(url);
3084
- // Remove the link when done
3085
- setTimeout(() => {
3086
- window.URL.revokeObjectURL(url);
3087
- }, 5000);
3107
+ this.pdf?.getData().then((u8) => {
3108
+ this.downloadFile(u8, 'file.pdf');
3088
3109
  });
3089
3110
  }
3090
3111
  onZoomIn() {
@@ -3098,9 +3119,6 @@ class EuimPdfViewerComponent {
3098
3119
  onResetZoom() {
3099
3120
  this.pinch.resetZoom();
3100
3121
  }
3101
- // async onDismissModal() {
3102
- // await this.modalCtrl.dismiss();
3103
- // }
3104
3122
  nextPage() {
3105
3123
  if (this.page < this.pdf.numPages) {
3106
3124
  this.page++;
@@ -3111,23 +3129,46 @@ class EuimPdfViewerComponent {
3111
3129
  this.page--;
3112
3130
  }
3113
3131
  }
3114
- openLink(url) {
3132
+ /**
3133
+ * Download file from the given data and filename using Blob.
3134
+ * It generates an anchor link and clicks on it to download the file.
3135
+ * @param data
3136
+ * @param filename
3137
+ * @private
3138
+ */
3139
+ downloadFile(data, filename) {
3140
+ const blob = new Blob([data.buffer], { type: 'application/pdf' });
3141
+ const url = window.URL.createObjectURL(blob);
3115
3142
  const a = document.createElement('a');
3116
- document.body.appendChild(a);
3117
- a.style.display = 'none';
3118
3143
  a.href = url;
3119
- a.download = 'PDF_File.pdf';
3144
+ a.download = filename;
3145
+ document.body.appendChild(a);
3120
3146
  a.click();
3121
- // Remove the link when done
3147
+ setTimeout(() => {
3148
+ window.URL.revokeObjectURL(url);
3149
+ }, 5000);
3122
3150
  document.body.removeChild(a);
3123
3151
  }
3124
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimPdfViewerComponent, deps: [{ token: i1.AlertController }], target: i0.ɵɵFactoryTarget.Component }); }
3125
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: EuimPdfViewerComponent, selector: "euim-pdf-viewer", inputs: { url: "url", page: "page" }, viewQueries: [{ propertyName: "pinch", first: true, predicate: ["pinch"], descendants: true, static: true }], ngImport: i0, template: "@if (loading || errorMessage) {\n<div>\n @if (loading) {\n <euim-spinner>\n <div euimSpinnerMessage>Loading PDF...</div>\n </euim-spinner>\n }\n @if (errorMessage) {\n <div>{{errorMessage}}</div>\n }\n</div>\n}\n\n<pinch-zoom [transition-duration]=\"50\" [zoomControlScale]=\"0.5\" (onZoomChange)=\"zoomChange($event)\" [wheelZoomFactor]=\"0.5\" [stepZoomFactor]=\"0.5\" #pinch>\n <div style=\"display: block;width: 100%; height: 500px\">\n <pdf-viewer [src]=\"url\"\n [zoom]=\"zoom\"\n [original-size]=\"true\"\n [autoresize]=\"false\"\n (after-load-complete)=\"onLoaded($event)\"\n (error)=\"onError()\"\n [page]=\"page\"\n style=\"width: 100%; height: 100%\">\n </pdf-viewer>\n </div>\n</pinch-zoom>\n\n<ion-footer>\n <ion-toolbar color=\"primary\" class=\"euim-pdf-viewer__footer\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"onDownload()\" [disabled]=\"!pdf\">\n <ion-icon name=\"download-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons class=\"euim-pdf-viewer__footer-zoom-container\">\n <ion-button (click)=\"onZoomOut()\" [disabled]=\"zoom === 1\">\n <ion-icon name=\"remove-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"onResetZoom()\">\n {{'euim.pdf-viewer.reset.zoom' | translate }}\n </ion-button>\n <ion-button (click)=\"onZoomIn()\">\n <ion-icon name=\"add-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n\n <ion-button (click)=\"prevPage()\">\n {{'euim.stepper.previous' | translate }}\n </ion-button>\n {{page}}\n <ion-button (click)=\"nextPage()\">\n {{'euim.stepper.next' | translate }}\n </ion-button>\n\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\n", styles: [".euim-pdf-viewer__footer-zoom-container{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2$2.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "component", type: i3.PinchZoomComponent, selector: "pinch-zoom, [pinch-zoom]", inputs: ["properties", "transition-duration", "transitionDuration", "double-tap", "doubleTap", "double-tap-scale", "doubleTapScale", "auto-zoom-out", "autoZoomOut", "limit-zoom", "limitZoom", "disabled", "disablePan", "overflow", "zoomControlScale", "disableZoomControl", "backgroundColor", "limitPan", "minPanScale", "minScale", "listeners", "wheel", "autoHeight", "stepZoomFactor", "wheelZoomFactor", "draggableImage"], outputs: ["onZoomChange"], exportAs: ["pinchZoom"] }, { kind: "component", type: EuimSpinnerComponent, selector: "euim-spinner" }, { kind: "component", type: EuimSpinnerMessageComponent, selector: "[euimSpinnerMessage]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
3152
+ /**
3153
+ * Fetch PDF data from the given URL and return as Uint8Array.
3154
+ * @param url
3155
+ * @private
3156
+ */
3157
+ getPDFData(url) {
3158
+ return this.http.get(url, { responseType: 'arraybuffer' })
3159
+ // transform ArrayBuffer to Uint8Array
3160
+ .pipe(map((data) => new Uint8Array(data)), catchError(err => {
3161
+ this.onError();
3162
+ return throwError(() => err);
3163
+ }));
3164
+ }
3165
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimPdfViewerComponent, deps: [{ token: i1.AlertController }, { token: i2$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
3166
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: EuimPdfViewerComponent, selector: "euim-pdf-viewer", inputs: { url: "url", page: "page" }, viewQueries: [{ propertyName: "pinch", first: true, predicate: ["pinch"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "@if (loading || errorMessage) {\n<div>\n @if (loading) {\n <euim-spinner>\n <div euimSpinnerMessage>Loading PDF...</div>\n </euim-spinner>\n }\n @if (errorMessage) {\n <div>{{errorMessage}}</div>\n }\n</div>\n}\n\n<pinch-zoom [limit-zoom]=\"4\" [transition-duration]=\"50\" [zoomControlScale]=\"0.5\" (onZoomChange)=\"zoomChange($event)\" [wheelZoomFactor]=\"0.5\" [stepZoomFactor]=\"0.5\" #pinch>\n <div style=\"display: block;width: 100%; height: 500px\">\n <pdf-viewer [src]=\"data\"\n [original-size]=\"false\"\n [zoom-scale]=\"'page-height'\"\n (after-load-complete)=\"onLoaded($event)\"\n (error)=\"onError()\"\n [(page)]=\"page\"\n [stick-to-page]=\"false\"\n [show-all]=\"false\"\n [render-text]=\"true\"\n style=\"width: 100%; height: 100%\">\n </pdf-viewer>\n </div>\n</pinch-zoom>\n\n<ion-footer>\n <ion-toolbar color=\"primary\" class=\"euim-pdf-viewer__footer\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"onDownload()\" [disabled]=\"!pdf || !data\">\n <ion-icon name=\"download-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons class=\"euim-pdf-viewer__footer-zoom-container\">\n <ion-button (click)=\"onZoomOut()\" [disabled]=\"zoom === 1 || !pdf || !data\">\n <ion-icon name=\"remove-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"onResetZoom()\" [disabled]=\"zoom === 1 || !pdf || !data\">\n {{'euim.pdf-viewer.reset.zoom' | translate }}\n </ion-button>\n <ion-button (click)=\"onZoomIn()\" [disabled]=\"zoom === 4 || !pdf || !data\">\n <ion-icon name=\"add-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n\n <ion-button (click)=\"prevPage()\" [disabled]=\"page === 1 || !pdf || !data\">\n {{'euim.stepper.previous' | translate }}\n </ion-button>\n {{page}}\n <ion-button (click)=\"nextPage()\" [disabled]=\"page === pdfNumPages || !pdf || !data\">\n {{'euim.stepper.next' | translate }}\n </ion-button>\n\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\n", styles: [".euim-pdf-viewer__footer-zoom-container{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }, { kind: "component", type: i4.PinchZoomComponent, selector: "pinch-zoom, [pinch-zoom]", inputs: ["properties", "transition-duration", "transitionDuration", "double-tap", "doubleTap", "double-tap-scale", "doubleTapScale", "auto-zoom-out", "autoZoomOut", "limit-zoom", "limitZoom", "disabled", "disablePan", "overflow", "zoomControlScale", "disableZoomControl", "backgroundColor", "limitPan", "minPanScale", "minScale", "listeners", "wheel", "autoHeight", "stepZoomFactor", "wheelZoomFactor", "draggableImage"], outputs: ["onZoomChange"], exportAs: ["pinchZoom"] }, { kind: "component", type: EuimSpinnerComponent, selector: "euim-spinner" }, { kind: "component", type: EuimSpinnerMessageComponent, selector: "[euimSpinnerMessage]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
3126
3167
  }
3127
3168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimPdfViewerComponent, decorators: [{
3128
3169
  type: Component,
3129
- args: [{ selector: 'euim-pdf-viewer', encapsulation: ViewEncapsulation.None, template: "@if (loading || errorMessage) {\n<div>\n @if (loading) {\n <euim-spinner>\n <div euimSpinnerMessage>Loading PDF...</div>\n </euim-spinner>\n }\n @if (errorMessage) {\n <div>{{errorMessage}}</div>\n }\n</div>\n}\n\n<pinch-zoom [transition-duration]=\"50\" [zoomControlScale]=\"0.5\" (onZoomChange)=\"zoomChange($event)\" [wheelZoomFactor]=\"0.5\" [stepZoomFactor]=\"0.5\" #pinch>\n <div style=\"display: block;width: 100%; height: 500px\">\n <pdf-viewer [src]=\"url\"\n [zoom]=\"zoom\"\n [original-size]=\"true\"\n [autoresize]=\"false\"\n (after-load-complete)=\"onLoaded($event)\"\n (error)=\"onError()\"\n [page]=\"page\"\n style=\"width: 100%; height: 100%\">\n </pdf-viewer>\n </div>\n</pinch-zoom>\n\n<ion-footer>\n <ion-toolbar color=\"primary\" class=\"euim-pdf-viewer__footer\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"onDownload()\" [disabled]=\"!pdf\">\n <ion-icon name=\"download-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons class=\"euim-pdf-viewer__footer-zoom-container\">\n <ion-button (click)=\"onZoomOut()\" [disabled]=\"zoom === 1\">\n <ion-icon name=\"remove-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"onResetZoom()\">\n {{'euim.pdf-viewer.reset.zoom' | translate }}\n </ion-button>\n <ion-button (click)=\"onZoomIn()\">\n <ion-icon name=\"add-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n\n <ion-button (click)=\"prevPage()\">\n {{'euim.stepper.previous' | translate }}\n </ion-button>\n {{page}}\n <ion-button (click)=\"nextPage()\">\n {{'euim.stepper.next' | translate }}\n </ion-button>\n\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\n", styles: [".euim-pdf-viewer__footer-zoom-container{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"] }]
3130
- }], ctorParameters: () => [{ type: i1.AlertController }], propDecorators: { url: [{
3170
+ args: [{ selector: 'euim-pdf-viewer', encapsulation: ViewEncapsulation.None, template: "@if (loading || errorMessage) {\n<div>\n @if (loading) {\n <euim-spinner>\n <div euimSpinnerMessage>Loading PDF...</div>\n </euim-spinner>\n }\n @if (errorMessage) {\n <div>{{errorMessage}}</div>\n }\n</div>\n}\n\n<pinch-zoom [limit-zoom]=\"4\" [transition-duration]=\"50\" [zoomControlScale]=\"0.5\" (onZoomChange)=\"zoomChange($event)\" [wheelZoomFactor]=\"0.5\" [stepZoomFactor]=\"0.5\" #pinch>\n <div style=\"display: block;width: 100%; height: 500px\">\n <pdf-viewer [src]=\"data\"\n [original-size]=\"false\"\n [zoom-scale]=\"'page-height'\"\n (after-load-complete)=\"onLoaded($event)\"\n (error)=\"onError()\"\n [(page)]=\"page\"\n [stick-to-page]=\"false\"\n [show-all]=\"false\"\n [render-text]=\"true\"\n style=\"width: 100%; height: 100%\">\n </pdf-viewer>\n </div>\n</pinch-zoom>\n\n<ion-footer>\n <ion-toolbar color=\"primary\" class=\"euim-pdf-viewer__footer\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"onDownload()\" [disabled]=\"!pdf || !data\">\n <ion-icon name=\"download-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons class=\"euim-pdf-viewer__footer-zoom-container\">\n <ion-button (click)=\"onZoomOut()\" [disabled]=\"zoom === 1 || !pdf || !data\">\n <ion-icon name=\"remove-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"onResetZoom()\" [disabled]=\"zoom === 1 || !pdf || !data\">\n {{'euim.pdf-viewer.reset.zoom' | translate }}\n </ion-button>\n <ion-button (click)=\"onZoomIn()\" [disabled]=\"zoom === 4 || !pdf || !data\">\n <ion-icon name=\"add-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n\n <ion-button (click)=\"prevPage()\" [disabled]=\"page === 1 || !pdf || !data\">\n {{'euim.stepper.previous' | translate }}\n </ion-button>\n {{page}}\n <ion-button (click)=\"nextPage()\" [disabled]=\"page === pdfNumPages || !pdf || !data\">\n {{'euim.stepper.next' | translate }}\n </ion-button>\n\n </ion-buttons>\n </ion-toolbar>\n</ion-footer>\n", styles: [".euim-pdf-viewer__footer-zoom-container{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"] }]
3171
+ }], ctorParameters: () => [{ type: i1.AlertController }, { type: i2$2.HttpClient }], propDecorators: { url: [{
3131
3172
  type: Input
3132
3173
  }], page: [{
3133
3174
  type: Input
@@ -3146,13 +3187,15 @@ class EuimPdfViewerModule {
3146
3187
  PdfViewerModule,
3147
3188
  PinchZoomModule,
3148
3189
  EuimSpinnerComponentModule,
3149
- TranslateModule], exports: [EuimPdfViewerComponent] }); }
3190
+ TranslateModule,
3191
+ HttpClientModule], exports: [EuimPdfViewerComponent] }); }
3150
3192
  /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimPdfViewerModule, imports: [CommonModule,
3151
3193
  IonicModule,
3152
3194
  PdfViewerModule,
3153
3195
  PinchZoomModule,
3154
3196
  EuimSpinnerComponentModule,
3155
- TranslateModule] }); }
3197
+ TranslateModule,
3198
+ HttpClientModule] }); }
3156
3199
  }
3157
3200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimPdfViewerModule, decorators: [{
3158
3201
  type: NgModule,
@@ -3164,6 +3207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
3164
3207
  PinchZoomModule,
3165
3208
  EuimSpinnerComponentModule,
3166
3209
  TranslateModule,
3210
+ HttpClientModule,
3167
3211
  ],
3168
3212
  exports: [
3169
3213
  ...COMPONENTS$1,
@@ -3220,40 +3264,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
3220
3264
  }] } });
3221
3265
 
3222
3266
  class EuimHelpSupportComponent {
3223
- constructor() {
3267
+ constructor(router) {
3268
+ this.router = router;
3269
+ /**
3270
+ * @deprecated will be removed in eUI Mobile v18. Please use {@link helpAndSupportItems} instead
3271
+ */
3224
3272
  this.helpContacts = { contacts: [] };
3273
+ /**
3274
+ * @deprecated will be removed in eUI Mobile v18. Please use {@link helpAndSupportItems} instead
3275
+ */
3225
3276
  this.supportMaterials = { materials: [] };
3277
+ /**
3278
+ * @deprecated will be removed in eUI Mobile v18
3279
+ */
3226
3280
  this.alertInfos = {};
3281
+ this.helpAndSupportItems = [];
3227
3282
  this.className = 'euim-help-support';
3228
3283
  }
3229
- getLink(linkType, linkTitle) {
3230
- switch (linkType) {
3231
- case 'call':
3232
- return 'tel:' + linkTitle;
3233
- case 'mail':
3234
- return 'mailto:' + linkTitle;
3235
- default:
3236
- return linkTitle;
3284
+ onItemClick(item, linkType, linkTitle) {
3285
+ if (item?.routerLink) {
3286
+ this.router.navigate([item.routerLink], {
3287
+ fragment: item.fragment && !item.link ? item.fragment : null,
3288
+ });
3237
3289
  }
3290
+ else {
3291
+ window.open(this.getLink(item, linkType, linkTitle), this.setTargetAttribute(item, linkType));
3292
+ }
3293
+ }
3294
+ isLinkSharp(item) {
3295
+ return item?.endIcon === 'link-sharp';
3238
3296
  }
3239
- setTargetAttribute(linkType) {
3240
- if (linkType === 'call' || linkType === 'mail') {
3297
+ getLinkClass(item) {
3298
+ return this.isLinkSharp(item) ? 'euim-help-support__contact-link euim-help-support__contact-link--no-underlined' : 'euim-help-support__contact-link';
3299
+ }
3300
+ getLink(item, linkType, linkTitle) {
3301
+ if (linkTitle && linkType === 'mail') {
3302
+ return 'mailto:' + linkTitle;
3303
+ }
3304
+ if (linkTitle && linkType === 'call') {
3305
+ return 'tel:' + linkTitle;
3306
+ }
3307
+ if (linkTitle) {
3308
+ return linkTitle;
3309
+ }
3310
+ if (item) {
3311
+ if (item.phone) {
3312
+ return 'tel:' + item.phone;
3313
+ }
3314
+ if (item.mail) {
3315
+ return 'mailto:' + item.mail;
3316
+ }
3317
+ if (item.link) {
3318
+ return item.link;
3319
+ }
3320
+ }
3321
+ }
3322
+ setTargetAttribute(item, linkType) {
3323
+ if (item?.phone || item?.mail || linkType === 'call' || linkType === 'mail') {
3241
3324
  return '_self';
3242
3325
  }
3243
3326
  return '_blank';
3244
3327
  }
3245
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimHelpSupportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3246
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: EuimHelpSupportComponent, selector: "euim-help-support", inputs: { helpContacts: "helpContacts", supportMaterials: "supportMaterials", alertInfos: "alertInfos" }, host: { properties: { "class": "this.className" } }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <euim-toolbar>\n <euim-toolbar-title>{{'euim.about.help.support' | translate }}</euim-toolbar-title>\n </euim-toolbar>\n </ion-toolbar>\n @if (alertInfos) {\n <euim-alert-message color=\"primary\">\n <ion-icon name=\"person-circle\" slotStart></ion-icon>\n {{ alertInfos.title }}\n\n @if (alertInfos.btnLink) {\n <ion-button [href]=\"alertInfos.btnLink\" slotEnd size=\"small\" fill=\"outline\">\n <strong>{{ alertInfos.btnTitle }}</strong>\n </ion-button>\n }\n </euim-alert-message>\n }\n</ion-header>\n\n@if (helpContacts.contacts.length > 0 || supportMaterials.materials.length > 0) {\n <ion-list>\n @if (helpContacts.contacts.length > 0) {\n <ion-item-divider>\n <ion-label>{{ helpContacts.sectionTitle }}</ion-label>\n </ion-item-divider>\n @for (contact of helpContacts.contacts; track contact; let isLast = $last) {\n <ion-item [lines]=\"isLast ? 'none' : ''\">\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"contact.icon\"></ion-icon>\n </euim-avatar-icon>\n <ion-label>\n <a class=\"euim-help-support__contact-link\" [target]=\"setTargetAttribute(contact.linkType)\" [href]=\"contact.link ? contact.link : getLink(contact.linkType, contact.linkTitle)\">\n <div euimLabel euimLabelTitle>{{contact.linkTitle}}</div>\n </a>\n\n <div euimLabel euimLabelSubTitle>{{contact.subtitle}}</div>\n </ion-label>\n </ion-item>\n }\n }\n\n @if (supportMaterials.materials.length > 0) {\n <ion-item-divider>\n <ion-label>{{ supportMaterials.sectionTitle }}</ion-label>\n </ion-item-divider>\n @for (material of supportMaterials.materials; track material) {\n <ion-item lines=\"none\">\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"material.icon\"></ion-icon>\n </euim-avatar-icon>\n <ion-label>\n <div euimLabel euimLabelTitle>{{material.title}}</div>\n <div euimLabel euimLabelSubTitle>{{material.subtitle}}</div>\n </ion-label>\n <ion-buttons>\n <ion-button target=\"_blank\" [href]=\"material.link\" fill=\"clear\" >\n <ion-icon name=\"link-sharp\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n </ion-list>\n}\n<ng-content></ng-content>\n\n\n", styles: [".euim-help-support__contact-link .euim-label__title{font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);color:var(--eui-base-color-primary-100)}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonItemDivider, selector: "ion-item-divider", inputs: ["color", "mode", "sticky"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: EuimToolbarComponent, selector: "euim-toolbar", inputs: ["hasBackButton", "backButtonDefaultHref", "hasSidebarTrigger", "hasLanguageSelector"], outputs: ["backButtonClick"] }, { kind: "component", type: EuimToolbarTitleComponent, selector: "euim-toolbar-title" }, { kind: "component", type: EuimLabelComponent, selector: "div[euimLabel], p[euimLabel], span[euimLabel], euim-label", inputs: ["euimLabelTruncateWithLines", "euimLabelTitle", "euimLabelSubTitle", "euimLabelMeta", "euimLabelTruncate"] }, { kind: "component", type: EuimAvatarIconComponent, selector: "euim-avatar-icon", inputs: ["color", "size", "fill", "variant", "borderColor"] }, { kind: "component", type: EuimAlertMessageComponent, selector: "euim-alert-message", inputs: ["euimLabelTruncate", "hasIcon", "isCloseable"], outputs: ["euimClose"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
3328
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimHelpSupportComponent, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
3329
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: EuimHelpSupportComponent, selector: "euim-help-support", inputs: { helpContacts: "helpContacts", supportMaterials: "supportMaterials", alertInfos: "alertInfos", helpAndSupportItems: "helpAndSupportItems" }, host: { properties: { "class": "this.className" } }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <euim-toolbar>\n <euim-toolbar-title>{{'euim.about.help.support' | translate }}</euim-toolbar-title>\n </euim-toolbar>\n </ion-toolbar>\n @if (alertInfos.title) {\n <euim-alert-message color=\"primary\">\n <ion-icon name=\"person-circle\" slotStart></ion-icon>\n {{ alertInfos.title }}\n\n @if (alertInfos.btnLink) {\n <ion-button [href]=\"alertInfos.btnLink\" slotEnd size=\"small\" fill=\"outline\">\n <strong>{{ alertInfos.btnTitle }}</strong>\n </ion-button>\n }\n </euim-alert-message>\n }\n <ng-content select=\"[headerSection]\"></ng-content>\n</ion-header>\n\n@if (helpAndSupportItems.length > 0 || helpContacts.contacts.length > 0 || supportMaterials.materials.length > 0) {\n <ion-list>\n @for (helpSupportItem of helpAndSupportItems; track $index;) {\n @if (helpSupportItem.sectionTitle) {\n <ion-item-divider>\n <ion-label>{{ helpSupportItem.sectionTitle }}</ion-label>\n </ion-item-divider>\n }\n\n @for (item of helpSupportItem.items; track item;) {\n\n <ion-item [lines]=\"item.hasBottomLine ? 'insert' : 'none'\" (click)=\"onItemClick(item, undefined, undefined)\">\n @if (item.startIcon) {\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"item.startIcon\"></ion-icon>\n </euim-avatar-icon>\n }\n @if (item.title || item.subtitle) {\n <ion-label>\n @if (item.title) {\n <a [ngClass]=\"getLinkClass(item)\">\n @if (!isLinkSharp(item)) {\n <div class=\"euim-help-support__title\">{{ item.title }}</div>\n }\n @if (isLinkSharp(item)) {\n <div euimLabel euimLabelTitle>{{ item.title }}</div>\n }\n </a>\n }\n @if (item.subtitle) {\n <div euimLabel euimLabelSubTitle>\n {{ item.subtitle }}\n </div>\n }\n </ion-label>\n }\n @if (item.endIcon) {\n <ion-buttons>\n <ion-button fill=\"clear\">\n <ion-icon [name]=\"item.endIcon\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n }\n </ion-item>\n }\n }\n @if (helpContacts.contacts.length > 0) {\n @if (helpContacts.sectionTitle) {\n <ion-item-divider>\n <ion-label>{{ helpContacts.sectionTitle }}</ion-label>\n </ion-item-divider>\n }\n @for (contact of helpContacts.contacts; track contact; let isLast = $last) {\n <ion-item [lines]=\"isLast ? 'none' : ''\" (click)=\"onItemClick(undefined, contact.linkType, contact.linkTitle)\">\n @if (contact.icon) {\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"contact.icon\"></ion-icon>\n </euim-avatar-icon>\n }\n @if (contact.linkTitle || contact.subtitle) {\n <ion-label>\n @if (contact.linkTitle) {\n <a class=\"euim-help-support__contact-link\">\n <div class=\"euim-help-support__title\">{{contact.linkTitle}}</div>\n </a>\n }\n @if (contact.subtitle) {\n <div euimLabel euimLabelSubTitle>{{contact.subtitle}}</div>\n }\n </ion-label>\n }\n </ion-item>\n }\n }\n\n @if (supportMaterials.materials.length > 0) {\n @if (supportMaterials.sectionTitle) {\n <ion-item-divider>\n <ion-label>{{ supportMaterials.sectionTitle }}</ion-label>\n </ion-item-divider>\n }\n @for (material of supportMaterials.materials; track material) {\n <ion-item lines=\"none\" (click)=\"onItemClick(material, undefined, undefined)\">\n @if (material.icon) {\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"material.icon\"></ion-icon>\n </euim-avatar-icon>\n }\n <ion-label>\n @if (material.title) {\n <div euimLabel euimLabelTitle>{{material.title}}</div>\n }\n @if (material.subtitle) {\n <div euimLabel euimLabelSubTitle>{{material.subtitle}}</div>\n }\n </ion-label>\n <ion-buttons>\n <ion-button fill=\"clear\" >\n <ion-icon name=\"link-sharp\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n </ion-list>\n}\n<ng-content></ng-content>\n\n\n", styles: [".euim-help-support__title{font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.euim-help-support__contact-link--no-underlined{text-decoration:none}.euim-help-support ion-item{position:relative;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonItemDivider, selector: "ion-item-divider", inputs: ["color", "mode", "sticky"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: EuimToolbarComponent, selector: "euim-toolbar", inputs: ["hasBackButton", "backButtonDefaultHref", "hasSidebarTrigger", "hasLanguageSelector"], outputs: ["backButtonClick"] }, { kind: "component", type: EuimToolbarTitleComponent, selector: "euim-toolbar-title" }, { kind: "component", type: EuimLabelComponent, selector: "div[euimLabel], p[euimLabel], span[euimLabel], euim-label", inputs: ["euimLabelTruncateWithLines", "euimLabelTitle", "euimLabelSubTitle", "euimLabelMeta", "euimLabelTruncate"] }, { kind: "component", type: EuimAvatarIconComponent, selector: "euim-avatar-icon", inputs: ["color", "size", "fill", "variant", "borderColor"] }, { kind: "component", type: EuimAlertMessageComponent, selector: "euim-alert-message", inputs: ["euimLabelTruncate", "hasIcon", "isCloseable"], outputs: ["euimClose"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
3247
3330
  }
3248
3331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimHelpSupportComponent, decorators: [{
3249
3332
  type: Component,
3250
- args: [{ selector: 'euim-help-support', encapsulation: ViewEncapsulation.None, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <euim-toolbar>\n <euim-toolbar-title>{{'euim.about.help.support' | translate }}</euim-toolbar-title>\n </euim-toolbar>\n </ion-toolbar>\n @if (alertInfos) {\n <euim-alert-message color=\"primary\">\n <ion-icon name=\"person-circle\" slotStart></ion-icon>\n {{ alertInfos.title }}\n\n @if (alertInfos.btnLink) {\n <ion-button [href]=\"alertInfos.btnLink\" slotEnd size=\"small\" fill=\"outline\">\n <strong>{{ alertInfos.btnTitle }}</strong>\n </ion-button>\n }\n </euim-alert-message>\n }\n</ion-header>\n\n@if (helpContacts.contacts.length > 0 || supportMaterials.materials.length > 0) {\n <ion-list>\n @if (helpContacts.contacts.length > 0) {\n <ion-item-divider>\n <ion-label>{{ helpContacts.sectionTitle }}</ion-label>\n </ion-item-divider>\n @for (contact of helpContacts.contacts; track contact; let isLast = $last) {\n <ion-item [lines]=\"isLast ? 'none' : ''\">\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"contact.icon\"></ion-icon>\n </euim-avatar-icon>\n <ion-label>\n <a class=\"euim-help-support__contact-link\" [target]=\"setTargetAttribute(contact.linkType)\" [href]=\"contact.link ? contact.link : getLink(contact.linkType, contact.linkTitle)\">\n <div euimLabel euimLabelTitle>{{contact.linkTitle}}</div>\n </a>\n\n <div euimLabel euimLabelSubTitle>{{contact.subtitle}}</div>\n </ion-label>\n </ion-item>\n }\n }\n\n @if (supportMaterials.materials.length > 0) {\n <ion-item-divider>\n <ion-label>{{ supportMaterials.sectionTitle }}</ion-label>\n </ion-item-divider>\n @for (material of supportMaterials.materials; track material) {\n <ion-item lines=\"none\">\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"material.icon\"></ion-icon>\n </euim-avatar-icon>\n <ion-label>\n <div euimLabel euimLabelTitle>{{material.title}}</div>\n <div euimLabel euimLabelSubTitle>{{material.subtitle}}</div>\n </ion-label>\n <ion-buttons>\n <ion-button target=\"_blank\" [href]=\"material.link\" fill=\"clear\" >\n <ion-icon name=\"link-sharp\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n </ion-list>\n}\n<ng-content></ng-content>\n\n\n", styles: [".euim-help-support__contact-link .euim-label__title{font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);color:var(--eui-base-color-primary-100)}\n"] }]
3251
- }], propDecorators: { helpContacts: [{
3333
+ args: [{ selector: 'euim-help-support', encapsulation: ViewEncapsulation.None, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <euim-toolbar>\n <euim-toolbar-title>{{'euim.about.help.support' | translate }}</euim-toolbar-title>\n </euim-toolbar>\n </ion-toolbar>\n @if (alertInfos.title) {\n <euim-alert-message color=\"primary\">\n <ion-icon name=\"person-circle\" slotStart></ion-icon>\n {{ alertInfos.title }}\n\n @if (alertInfos.btnLink) {\n <ion-button [href]=\"alertInfos.btnLink\" slotEnd size=\"small\" fill=\"outline\">\n <strong>{{ alertInfos.btnTitle }}</strong>\n </ion-button>\n }\n </euim-alert-message>\n }\n <ng-content select=\"[headerSection]\"></ng-content>\n</ion-header>\n\n@if (helpAndSupportItems.length > 0 || helpContacts.contacts.length > 0 || supportMaterials.materials.length > 0) {\n <ion-list>\n @for (helpSupportItem of helpAndSupportItems; track $index;) {\n @if (helpSupportItem.sectionTitle) {\n <ion-item-divider>\n <ion-label>{{ helpSupportItem.sectionTitle }}</ion-label>\n </ion-item-divider>\n }\n\n @for (item of helpSupportItem.items; track item;) {\n\n <ion-item [lines]=\"item.hasBottomLine ? 'insert' : 'none'\" (click)=\"onItemClick(item, undefined, undefined)\">\n @if (item.startIcon) {\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"item.startIcon\"></ion-icon>\n </euim-avatar-icon>\n }\n @if (item.title || item.subtitle) {\n <ion-label>\n @if (item.title) {\n <a [ngClass]=\"getLinkClass(item)\">\n @if (!isLinkSharp(item)) {\n <div class=\"euim-help-support__title\">{{ item.title }}</div>\n }\n @if (isLinkSharp(item)) {\n <div euimLabel euimLabelTitle>{{ item.title }}</div>\n }\n </a>\n }\n @if (item.subtitle) {\n <div euimLabel euimLabelSubTitle>\n {{ item.subtitle }}\n </div>\n }\n </ion-label>\n }\n @if (item.endIcon) {\n <ion-buttons>\n <ion-button fill=\"clear\">\n <ion-icon [name]=\"item.endIcon\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n }\n </ion-item>\n }\n }\n @if (helpContacts.contacts.length > 0) {\n @if (helpContacts.sectionTitle) {\n <ion-item-divider>\n <ion-label>{{ helpContacts.sectionTitle }}</ion-label>\n </ion-item-divider>\n }\n @for (contact of helpContacts.contacts; track contact; let isLast = $last) {\n <ion-item [lines]=\"isLast ? 'none' : ''\" (click)=\"onItemClick(undefined, contact.linkType, contact.linkTitle)\">\n @if (contact.icon) {\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"contact.icon\"></ion-icon>\n </euim-avatar-icon>\n }\n @if (contact.linkTitle || contact.subtitle) {\n <ion-label>\n @if (contact.linkTitle) {\n <a class=\"euim-help-support__contact-link\">\n <div class=\"euim-help-support__title\">{{contact.linkTitle}}</div>\n </a>\n }\n @if (contact.subtitle) {\n <div euimLabel euimLabelSubTitle>{{contact.subtitle}}</div>\n }\n </ion-label>\n }\n </ion-item>\n }\n }\n\n @if (supportMaterials.materials.length > 0) {\n @if (supportMaterials.sectionTitle) {\n <ion-item-divider>\n <ion-label>{{ supportMaterials.sectionTitle }}</ion-label>\n </ion-item-divider>\n }\n @for (material of supportMaterials.materials; track material) {\n <ion-item lines=\"none\" (click)=\"onItemClick(material, undefined, undefined)\">\n @if (material.icon) {\n <euim-avatar-icon fill=\"solid\" slot=\"start\">\n <ion-icon [name]=\"material.icon\"></ion-icon>\n </euim-avatar-icon>\n }\n <ion-label>\n @if (material.title) {\n <div euimLabel euimLabelTitle>{{material.title}}</div>\n }\n @if (material.subtitle) {\n <div euimLabel euimLabelSubTitle>{{material.subtitle}}</div>\n }\n </ion-label>\n <ion-buttons>\n <ion-button fill=\"clear\" >\n <ion-icon name=\"link-sharp\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-item>\n }\n }\n </ion-list>\n}\n<ng-content></ng-content>\n\n\n", styles: [".euim-help-support__title{font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.euim-help-support__contact-link--no-underlined{text-decoration:none}.euim-help-support ion-item{position:relative;cursor:pointer}\n"] }]
3334
+ }], ctorParameters: () => [{ type: i1$2.Router }], propDecorators: { helpContacts: [{
3252
3335
  type: Input
3253
3336
  }], supportMaterials: [{
3254
3337
  type: Input
3255
3338
  }], alertInfos: [{
3256
3339
  type: Input
3340
+ }], helpAndSupportItems: [{
3341
+ type: Input
3257
3342
  }], className: [{
3258
3343
  type: HostBinding,
3259
3344
  args: ['class']
@@ -3321,7 +3406,8 @@ class EuimAboutModule {
3321
3406
  EuimAvatarIconModule,
3322
3407
  EuimAlertMessageModule,
3323
3408
  PinchZoomModule,
3324
- TranslateModule], exports: [EuimAboutComponent,
3409
+ TranslateModule,
3410
+ RouterModule], exports: [EuimAboutComponent,
3325
3411
  EuimChangelogComponent,
3326
3412
  EuimOpenSourceLicencesComponent,
3327
3413
  EuimHelpSupportComponent,
@@ -3335,7 +3421,8 @@ class EuimAboutModule {
3335
3421
  EuimAvatarIconModule,
3336
3422
  EuimAlertMessageModule,
3337
3423
  PinchZoomModule,
3338
- TranslateModule] }); }
3424
+ TranslateModule,
3425
+ RouterModule] }); }
3339
3426
  }
3340
3427
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuimAboutModule, decorators: [{
3341
3428
  type: NgModule,
@@ -3351,6 +3438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
3351
3438
  EuimAlertMessageModule,
3352
3439
  PinchZoomModule,
3353
3440
  TranslateModule,
3441
+ RouterModule,
3354
3442
  ],
3355
3443
  exports: [
3356
3444
  ...COMPONENTS,