@dsivd/prestations-ng 19.2.0-beta.10 → 19.2.0-beta.11

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 CHANGED
@@ -38,6 +38,19 @@
38
38
  - Added `streetAllowCustomValue` input to control whether the street field allows custom values (defaults to `true`).
39
39
  - Added `swissNpaLocalityBaseUrl` input to control the base URL for Swiss NPA localities (defaults to `'api/refinf/locality'`).
40
40
 
41
+ - [foehn-navigation.component.html](projects/prestations-ng/src/foehn-navigation/foehn-navigation/foehn-navigation.component.html)
42
+ - [foehn-simple-navigation.component.html](projects/prestations-ng/src/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.html)
43
+ - while the page targeted by "next", "transmit" or "previous" is loading for more than 200 ms (e.g. lazy loaded
44
+ route), the clicked button displays a spinner with the new `loadingLabel` input (dictionary key
45
+ `foehn-navigation.loading.label`, "Chargement...") and the navigation buttons are disabled (`aria-disabled`;
46
+ clicks are ignored from the start of the navigation); a live `output` region announces the loading to screen
47
+ readers (also in 18.3.15)
48
+ - this state is exposed by read-only signals: `pendingNavigationDirection`, `loadingDirection`, `isNavigating`,
49
+ `isLoading`, `isLoadingNext` and `isLoadingPrevious`
50
+ - [foehn-navigation.service.ts](projects/prestations-ng/src/foehn-navigation/foehn-navigation.service.ts)
51
+ - new method `pendingNavigationDirection()`: direction of the navigation started with `next()` or `previous()`
52
+ until it ends, `null` otherwise (also in 18.3.15)
53
+
41
54
  ### Changed
42
55
 
43
56
  Library now runs as strict mode, which may cause some errors to appear in your project after updating.
@@ -57,6 +70,12 @@ Please check the [UPGRADING_V19.md](UPGRADING_V19.md) guide for more information
57
70
  `addCustomErrorOrDefault(name, errors, errorCode, fileName, customErrors, { overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters, maxFileSizeInMo })`.
58
71
  The custom error 413 returned by the server now also displays the `maxFileSizeInMo` limit of
59
72
  `foehn-bo-multi-upload`.
73
+ - [foehn-modal.component.ts](projects/prestations-ng/src/foehn-modal/foehn-modal.component.ts)
74
+ - 🚨 `modalSize` is now typed with the new `FoehnModalSize` type
75
+ (`'' | 'modal-sm' | 'modal-md' | 'modal-lg' | 'modal-xl'`) instead of `string`, as are `HelpModal.modalSize`
76
+ and therefore the `helpModal` of the `foehn-input-*` components. Other values, such as `modal-xs`, are not
77
+ Bootstrap classes, had no effect and no longer compile: replace them with `modal-md` to keep the same size
78
+ (removing them in a `HelpModal` would fall back to `modal-lg`).
60
79
  - 🚀 **prestations-ng is now zoneless**: its components no longer need zone.js to be refreshed. They keep
61
80
  working in an application using zone.js, and your application can now drop zone.js, see
62
81
  [UPGRADING_V19.md](UPGRADING_V19.md#zoneless-optional-but-recommended).
@@ -134,6 +153,11 @@ Please check the [UPGRADING_V19.md](UPGRADING_V19.md) guide for more information
134
153
 
135
154
  ### Fixed
136
155
 
156
+ - `AbstractPageComponent` and `AbstractPageFromMenuComponent`: a second click on "next" or "transmit" while the next
157
+ page is loading (lazy loaded route, resolver, async guard) no longer saves again and skips the next page:
158
+ `send()`, `sendAndTransmit()` and `transmit()` are ignored until the navigation to the next page ends. Pages
159
+ overriding `onFormSent()` should call the new protected method `navigateToNextPage()` instead of
160
+ `this._navigation.next()` to get this protection (also in 18.3.15).
137
161
  - `captcha`: no more `NG0953` warning ("Unexpected emit for destroyed `OutputRef`") when the captcha script fails to
138
162
  load after the component has been destroyed (e.g. the user left the page meanwhile).
139
163
  - `foehn-multiselect-autocomplete`: the suggestions and the message displayed once every element is selected follow a
@@ -337,6 +361,24 @@ Please check the [UPGRADING_V19.md](UPGRADING_V19.md) guide for more information
337
361
  - [foehn-list-summary.component.ts](projects/prestations-ng/src/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.ts)
338
362
  - `[list]` attribut has been removed. Use `[model]` instead.
339
363
 
364
+ ## [18.3.15]
365
+
366
+ ### Updated
367
+
368
+ - [foehn-navigation.component.html](projects/prestations-ng/src/foehn-navigation/foehn-navigation/foehn-navigation.component.html)
369
+ - [foehn-simple-navigation.component.html](projects/prestations-ng/src/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.html)
370
+ - while the page targeted by "next", "transmit" or "previous" is loading for more than 200 ms (e.g. lazy loaded route), the clicked button displays a spinner with the new `loadingLabel` input (dictionary key `foehn-navigation.loading.label`, "Chargement...") and the navigation buttons are disabled (`aria-disabled`; clicks are ignored from the start of the navigation); a `role="status"` region announces the loading to screen readers
371
+ - [foehn-navigation.service.ts](projects/prestations-ng/src/foehn-navigation/foehn-navigation.service.ts)
372
+ - new method `pendingNavigationDirection()`: direction of the navigation started with `next()` or `previous()` until it ends, `null` otherwise
373
+
374
+ ### Fixed
375
+
376
+ - [abstract-page-component.ts](projects/prestations-ng/src/abstract-page-component.ts)
377
+ - fixed a second click on "next" or "transmit" while the next page is loading (lazy loaded route, resolver, async guard) saving again and skipping the next page: `send()`, `sendAndTransmit()` and `transmit()` are now ignored until the navigation to the next page ends
378
+ - new protected method `navigateToNextPage()`: pages overriding `onFormSent()` should call it instead of `this._navigation.next()` to get this protection
379
+ - [abstract-page-from-menu.component.ts](projects/prestations-ng/src/foehn-menu-prestation/abstract-page-from-menu.component.ts)
380
+ - same fix when returning to the parent page
381
+
340
382
  ## [18.3.13]
341
383
 
342
384
  ### Fixed
@@ -2,8 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, InjectionToken, model, input, viewChildren, viewChild, forwardRef, output, computed, linkedSignal, DestroyRef, signal, effect, untracked, PendingTasks, Directive, ChangeDetectorRef, Pipe, Component, contentChildren, EnvironmentInjector, runInInjectionContext, afterNextRender, ElementRef, Injector, makeEnvironmentProviders, ErrorHandler, provideBrowserGlobalErrorListeners, provideAppInitializer, importProvidersFrom, NgZone, afterRenderEffect, contentChild, TemplateRef } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal, toObservable, outputToObservable } from '@angular/core/rxjs-interop';
4
4
  import { Router, ActivatedRoute, RouterLink, NavigationStart, NavigationEnd } from '@angular/router';
5
- import { Subject, BehaviorSubject, combineLatest, of, filter as filter$1, tap as tap$1, throwError, switchMap as switchMap$1, forkJoin, from, concatMap, toArray, EMPTY, startWith, merge, noop, interval, withLatestFrom, map as map$1, concat } from 'rxjs';
6
- import { filter, shareReplay, tap, map, debounceTime, catchError, switchMap, first, finalize, throttleTime, mergeMap, share, take, distinctUntilChanged, startWith as startWith$1, takeWhile, takeUntil } from 'rxjs/operators';
5
+ import { Subject, BehaviorSubject, combineLatest, of, filter as filter$1, tap as tap$1, throwError, switchMap as switchMap$1, forkJoin, from, concatMap, toArray, EMPTY, startWith, merge, noop, interval, withLatestFrom, timer, map as map$1, concat } from 'rxjs';
6
+ import { filter, shareReplay, tap, map, debounceTime, catchError, switchMap, first, finalize, throttleTime, mergeMap, share, take, distinctUntilChanged, startWith as startWith$1, takeWhile, takeUntil, skip } from 'rxjs/operators';
7
7
  import { HttpClient, HttpEventType, HttpResponse, HTTP_INTERCEPTORS, HttpStatusCode, HttpResponseBase, HttpErrorResponse, HttpParams, provideHttpClient, withInterceptorsFromDi, withInterceptors } from '@angular/common/http';
8
8
  import * as i1 from '@angular/forms';
9
9
  import { NgModel, NgForm, FormsModule } from '@angular/forms';
@@ -1193,6 +1193,7 @@ const DEFAULT_DICTIONARY = {
1193
1193
  'foehn-navigation.next.label': 'Suivant',
1194
1194
  'foehn-navigation.previous.label': 'Précédent',
1195
1195
  'foehn-navigation.transmit.label': 'Transmettre',
1196
+ 'foehn-navigation.loading.label': 'Chargement...',
1196
1197
  'foehn-navigation.continue-later.label': 'Envoyer un lien pour reprendre cette demande plus tard',
1197
1198
  'foehn-navigation.continue-later-already-registered.label': 'Modifier mes informations de reprise et envoyer un nouveau lien',
1198
1199
  'foehn-navigation.continue-later-connected.label': 'Finir la demande plus tard',
@@ -2530,6 +2531,8 @@ class FoehnNavigationService {
2530
2531
  isInit = false;
2531
2532
  initializedAndRouteActivated = new BehaviorSubject(false);
2532
2533
  linearRouting = true;
2534
+ pendingNavigationDirectionSubject = new BehaviorSubject(null);
2535
+ lastNavigationId = 0;
2533
2536
  get initialized() {
2534
2537
  return this.isInit;
2535
2538
  }
@@ -2607,6 +2610,14 @@ class FoehnNavigationService {
2607
2610
  hasBeenInitialized() {
2608
2611
  return this.initializedAndRouteActivated.asObservable();
2609
2612
  }
2613
+ /**
2614
+ * Direction of the navigation started with next() or previous() until it ends, null otherwise.
2615
+ * The current page stays displayed while the target one is activated (e.g. lazy loaded route).
2616
+ * @returns Observable<NavigationDirection | null>
2617
+ */
2618
+ pendingNavigationDirection() {
2619
+ return this.pendingNavigationDirectionSubject.asObservable();
2620
+ }
2610
2621
  getQueryParamsToForwardAsString() {
2611
2622
  const params = this.getQueryParamsToForward() || {};
2612
2623
  let stringParams = '';
@@ -2761,7 +2772,15 @@ class FoehnNavigationService {
2761
2772
  ? SdkEventType.NAVIGATION_FORWARD
2762
2773
  : SdkEventType.NAVIGATION_BACKWARD;
2763
2774
  this.eventsLoggerService.addEvent(eventType, route?.path);
2764
- return this.redirect(route?.path);
2775
+ const navigation = this.redirect(route?.path);
2776
+ const navigationId = ++this.lastNavigationId;
2777
+ this.pendingNavigationDirectionSubject.next(direction);
2778
+ return navigation.finally(() => {
2779
+ // A navigation replaced by a newer one ends first (cancelled).
2780
+ if (navigationId === this.lastNavigationId) {
2781
+ this.pendingNavigationDirectionSubject.next(null);
2782
+ }
2783
+ });
2765
2784
  }
2766
2785
  isRouteAvailable(route) {
2767
2786
  const { canActivate } = route;
@@ -3172,6 +3191,7 @@ class AbstractPageComponent {
3172
3191
  _pendingUploadService = inject(PendingUploadService);
3173
3192
  _transmitConcurrentSafe;
3174
3193
  _gesdemSaveSubscription = null;
3194
+ _isNavigatingToNextPage = false;
3175
3195
  _registerNgModelService = inject(RegisterNgModelService);
3176
3196
  _pageTitle = new Subject();
3177
3197
  // ECMAScript private field: cannot collide with a member of the pages extending this class.
@@ -3253,6 +3273,9 @@ class AbstractPageComponent {
3253
3273
  });
3254
3274
  }
3255
3275
  send(goToNextPage = true, displaySuccessMessage = true) {
3276
+ if (this._isNavigatingToNextPage) {
3277
+ return;
3278
+ }
3256
3279
  const hasPendingFiles = this._pendingUploadService.hasPendingFiles();
3257
3280
  if (hasPendingFiles) {
3258
3281
  goToNextPage = false;
@@ -3277,6 +3300,9 @@ class AbstractPageComponent {
3277
3300
  }
3278
3301
  }
3279
3302
  transmit() {
3303
+ if (this._isNavigatingToNextPage) {
3304
+ return;
3305
+ }
3280
3306
  this._validationHandlerService.shouldDisplayErrors(true);
3281
3307
  this._transmitConcurrentSafe
3282
3308
  .pipe(tap(() => this._eventsLoggerService.addEvent(SdkEventType.TRANSMIT)), catchError((error) => {
@@ -3288,11 +3314,14 @@ class AbstractPageComponent {
3288
3314
  // Do not show warning alert on closing tab or navigator when form has been transmitted
3289
3315
  this._registerNgModelService.setHasInteractions(false);
3290
3316
  this._gesdemEventService.formTransmittedSubject.next(this._gesdemService.lastResponse);
3291
- this._navigation.next();
3317
+ this.navigateToNextPage();
3292
3318
  }
3293
3319
  });
3294
3320
  }
3295
3321
  sendAndTransmit(displaySuccessMessage = true) {
3322
+ if (this._isNavigatingToNextPage) {
3323
+ return;
3324
+ }
3296
3325
  this._gesdemEventService
3297
3326
  .formSentObservable()
3298
3327
  .pipe(first())
@@ -3338,13 +3367,33 @@ class AbstractPageComponent {
3338
3367
  this._gesdemEventService.formSentSubject.next(this._gesdemService.lastResponse);
3339
3368
  const foehnFormComponentVal = this.foehnFormComponent();
3340
3369
  if (isValid && goToNextPage) {
3341
- this._navigation.next();
3370
+ this.navigateToNextPage();
3342
3371
  }
3343
3372
  else if (!isValid && foehnFormComponentVal) {
3344
3373
  foehnFormComponentVal.focusErrorSummary();
3345
3374
  }
3346
3375
  }, console.error);
3347
3376
  }
3377
+ /**
3378
+ * Navigates to the next page and ignores send(), sendAndTransmit() and transmit() until the navigation ends.
3379
+ *
3380
+ * The current page stays displayed and clickable while the next one is activated (e.g. lazy loaded route,
3381
+ * resolver or async guard): a second click on "next" would save again, then navigate once more from the
3382
+ * next page and skip it.
3383
+ */
3384
+ async navigateToNextPage() {
3385
+ if (this._isNavigatingToNextPage) {
3386
+ return;
3387
+ }
3388
+ this._isNavigatingToNextPage = true;
3389
+ try {
3390
+ await this._navigation.next();
3391
+ }
3392
+ finally {
3393
+ // Released when the navigation is cancelled or fails so that the user can try again.
3394
+ this._isNavigatingToNextPage = false;
3395
+ }
3396
+ }
3348
3397
  checkHasPendingsFilesBeforeTransmit() {
3349
3398
  if (this._pendingUploadService.hasPendingFiles()) {
3350
3399
  this._pendingUploadService.attachmentsUploaded
@@ -9993,7 +10042,7 @@ class FoehnInputEmailComponent extends FoehnInputStringComponent {
9993
10042
  this.helpModal.set({
9994
10043
  title: modalTitle,
9995
10044
  body: modalContent,
9996
- modalSize: 'modal-xs',
10045
+ modalSize: 'modal-md',
9997
10046
  });
9998
10047
  }
9999
10048
  if (this.standardHelpText() === undefined) {
@@ -12518,11 +12567,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
12518
12567
  args: [{ selector: 'sdk-pending-payment', imports: [FoehnModalComponent, SdkDictionaryPipe], template: "<foehn-modal\n [closeable]=\"false\"\n [modalHeaderText]=\"'epayment.pending-payment.title' | fromDictionary\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"isModalVisible = $event\"\n modalSize=\"modal-lg\"\n>\n <div class=\"modal-body\">\n <p>{{ 'epayment.pending-payment.text' | fromDictionary }}</p>\n </div>\n <div modal-footer class=\"w-100\">\n <div class=\"d-flex\">\n <button\n id=\"goToPayerButton\"\n type=\"button\"\n class=\"btn btn-primary ms-auto\"\n (click)=\"goToPayer()\"\n >\n {{ 'epayment.pending-payment.button' | fromDictionary }}\n </button>\n </div>\n </div>\n</foehn-modal>\n" }]
12519
12568
  }], propDecorators: { onPay: [{ type: i0.Output, args: ["onPay"] }] } });
12520
12569
 
12570
+ // The loading state isn't displayed when the target page loads quickly, so that it doesn't flicker.
12571
+ const LOADING_DISPLAY_DELAY_MS = 200;
12521
12572
  class AbstractFoehnNavigationComponent {
12522
12573
  showContinueLaterButton = input(true, ...(ngDevMode ? [{ debugName: "showContinueLaterButton" }] : /* istanbul ignore next */ []));
12523
12574
  showNextButton = input(true, ...(ngDevMode ? [{ debugName: "showNextButton" }] : /* istanbul ignore next */ []));
12524
12575
  nextLabel = input('foehn-navigation.next.label', ...(ngDevMode ? [{ debugName: "nextLabel" }] : /* istanbul ignore next */ []));
12525
12576
  prevLabel = input('foehn-navigation.previous.label', ...(ngDevMode ? [{ debugName: "prevLabel" }] : /* istanbul ignore next */ []));
12577
+ loadingLabel = input('foehn-navigation.loading.label', ...(ngDevMode ? [{ debugName: "loadingLabel" }] : /* istanbul ignore next */ []));
12526
12578
  continueLaterLabel = input('foehn-navigation.continue-later.label', ...(ngDevMode ? [{ debugName: "continueLaterLabel" }] : /* istanbul ignore next */ []));
12527
12579
  continueLaterAlreadyRegisteredLabel = input('foehn-navigation.continue-later-already-registered.label', ...(ngDevMode ? [{ debugName: "continueLaterAlreadyRegisteredLabel" }] : /* istanbul ignore next */ []));
12528
12580
  continueLaterConnectedLabel = input('foehn-navigation.continue-later-connected.label', ...(ngDevMode ? [{ debugName: "continueLaterConnectedLabel" }] : /* istanbul ignore next */ []));
@@ -12531,21 +12583,46 @@ class AbstractFoehnNavigationComponent {
12531
12583
  onNext = output();
12532
12584
  // eslint-disable-next-line @angular-eslint/no-output-on-prefix
12533
12585
  onPrevious = output();
12586
+ pendingNavigationDirection;
12587
+ loadingDirection;
12588
+ isNavigating = computed(() => this.pendingNavigationDirection() !== null, ...(ngDevMode ? [{ debugName: "isNavigating" }] : /* istanbul ignore next */ []));
12589
+ isLoading = computed(() => this.loadingDirection() !== null, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
12590
+ isLoadingNext = computed(() => this.loadingDirection() === NavigationDirection.FORWARD, ...(ngDevMode ? [{ debugName: "isLoadingNext" }] : /* istanbul ignore next */ []));
12591
+ isLoadingPrevious = computed(() => this.loadingDirection() === NavigationDirection.BACKWARD, ...(ngDevMode ? [{ debugName: "isLoadingPrevious" }] : /* istanbul ignore next */ []));
12592
+ constructor() {
12593
+ const pendingNavigationDirection = inject(FoehnNavigationService)
12594
+ .pendingNavigationDirection()
12595
+ .pipe(
12596
+ // A navigation pending when the component is created is the one activating its page.
12597
+ skip(1));
12598
+ this.pendingNavigationDirection = toSignal(pendingNavigationDirection, {
12599
+ initialValue: null,
12600
+ });
12601
+ this.loadingDirection = toSignal(pendingNavigationDirection.pipe(switchMap((direction) => direction === null
12602
+ ? of(null)
12603
+ : timer(LOADING_DISPLAY_DELAY_MS).pipe(map(() => direction)))), { initialValue: null });
12604
+ }
12534
12605
  goToNext() {
12606
+ if (this.isNavigating()) {
12607
+ return;
12608
+ }
12535
12609
  this.onNext.emit();
12536
12610
  }
12537
12611
  goToPrevious() {
12612
+ if (this.isNavigating()) {
12613
+ return;
12614
+ }
12538
12615
  this.onPrevious.emit();
12539
12616
  }
12540
12617
  canShowNextButton() {
12541
12618
  return this.showNextButton();
12542
12619
  }
12543
12620
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: AbstractFoehnNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12544
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.23", type: AbstractFoehnNavigationComponent, isStandalone: true, inputs: { showContinueLaterButton: { classPropertyName: "showContinueLaterButton", publicName: "showContinueLaterButton", isSignal: true, isRequired: false, transformFunction: null }, showNextButton: { classPropertyName: "showNextButton", publicName: "showNextButton", isSignal: true, isRequired: false, transformFunction: null }, nextLabel: { classPropertyName: "nextLabel", publicName: "nextLabel", isSignal: true, isRequired: false, transformFunction: null }, prevLabel: { classPropertyName: "prevLabel", publicName: "prevLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLaterLabel: { classPropertyName: "continueLaterLabel", publicName: "continueLaterLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLaterAlreadyRegisteredLabel: { classPropertyName: "continueLaterAlreadyRegisteredLabel", publicName: "continueLaterAlreadyRegisteredLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLaterConnectedLabel: { classPropertyName: "continueLaterConnectedLabel", publicName: "continueLaterConnectedLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerRecoveryOnPageChange: { classPropertyName: "triggerRecoveryOnPageChange", publicName: "triggerRecoveryOnPageChange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onNext: "onNext", onPrevious: "onPrevious" }, ngImport: i0 });
12621
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.23", type: AbstractFoehnNavigationComponent, isStandalone: true, inputs: { showContinueLaterButton: { classPropertyName: "showContinueLaterButton", publicName: "showContinueLaterButton", isSignal: true, isRequired: false, transformFunction: null }, showNextButton: { classPropertyName: "showNextButton", publicName: "showNextButton", isSignal: true, isRequired: false, transformFunction: null }, nextLabel: { classPropertyName: "nextLabel", publicName: "nextLabel", isSignal: true, isRequired: false, transformFunction: null }, prevLabel: { classPropertyName: "prevLabel", publicName: "prevLabel", isSignal: true, isRequired: false, transformFunction: null }, loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLaterLabel: { classPropertyName: "continueLaterLabel", publicName: "continueLaterLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLaterAlreadyRegisteredLabel: { classPropertyName: "continueLaterAlreadyRegisteredLabel", publicName: "continueLaterAlreadyRegisteredLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLaterConnectedLabel: { classPropertyName: "continueLaterConnectedLabel", publicName: "continueLaterConnectedLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerRecoveryOnPageChange: { classPropertyName: "triggerRecoveryOnPageChange", publicName: "triggerRecoveryOnPageChange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onNext: "onNext", onPrevious: "onPrevious" }, ngImport: i0 });
12545
12622
  }
12546
12623
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: AbstractFoehnNavigationComponent, decorators: [{
12547
12624
  type: Directive
12548
- }], propDecorators: { showContinueLaterButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showContinueLaterButton", required: false }] }], showNextButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNextButton", required: false }] }], nextLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextLabel", required: false }] }], prevLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "prevLabel", required: false }] }], continueLaterLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLaterLabel", required: false }] }], continueLaterAlreadyRegisteredLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLaterAlreadyRegisteredLabel", required: false }] }], continueLaterConnectedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLaterConnectedLabel", required: false }] }], triggerRecoveryOnPageChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerRecoveryOnPageChange", required: false }] }], onNext: [{ type: i0.Output, args: ["onNext"] }], onPrevious: [{ type: i0.Output, args: ["onPrevious"] }] } });
12625
+ }], ctorParameters: () => [], propDecorators: { showContinueLaterButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showContinueLaterButton", required: false }] }], showNextButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNextButton", required: false }] }], nextLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextLabel", required: false }] }], prevLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "prevLabel", required: false }] }], loadingLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingLabel", required: false }] }], continueLaterLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLaterLabel", required: false }] }], continueLaterAlreadyRegisteredLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLaterAlreadyRegisteredLabel", required: false }] }], continueLaterConnectedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLaterConnectedLabel", required: false }] }], triggerRecoveryOnPageChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerRecoveryOnPageChange", required: false }] }], onNext: [{ type: i0.Output, args: ["onNext"] }], onPrevious: [{ type: i0.Output, args: ["onPrevious"] }] } });
12549
12626
 
12550
12627
  class FoehnNavigationComponent extends AbstractFoehnNavigationComponent {
12551
12628
  transmitLabel = input('foehn-navigation.transmit.label', ...(ngDevMode ? [{ debugName: "transmitLabel" }] : /* istanbul ignore next */ []));
@@ -12592,7 +12669,7 @@ class FoehnNavigationComponent extends AbstractFoehnNavigationComponent {
12592
12669
  return this.navigationService.isLinearRouting();
12593
12670
  }
12594
12671
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: FoehnNavigationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12595
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.23", type: FoehnNavigationComponent, isStandalone: true, selector: "foehn-navigation", inputs: { transmitLabel: { classPropertyName: "transmitLabel", publicName: "transmitLabel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n@if (isForcedOnRecapForPendingPayment()) {\n <sdk-pending-payment (onPay)=\"goToNext()\" />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getPreviousRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (!isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getNextRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n @if (isLastFormPage() && canShowNextButton()) {\n <button\n type=\"submit\"\n id=\"transmitButton\"\n (click)=\"goToNext()\"\n class=\"btn btn-success vd-btn-pagination-submit\"\n >\n {{ transmitLabel() | fromDictionary }}\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"], dependencies: [{ kind: "component", type: GesdemActionRecoveryRegistrationComponent, selector: "gesdem-action-recovery-registration", inputs: ["dispatchFormErrors", "continueLaterLabel", "continueLaterAlreadyRegisteredLabel", "continueLaterConnectedLabel", "triggerOnPageChange"] }, { kind: "component", type: PendingPaymentComponent, selector: "sdk-pending-payment", outputs: ["onPay"] }, { kind: "component", type: FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] });
12672
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.23", type: FoehnNavigationComponent, isStandalone: true, selector: "foehn-navigation", inputs: { transmitLabel: { classPropertyName: "transmitLabel", publicName: "transmitLabel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n@if (isForcedOnRecapForPendingPayment()) {\n <sdk-pending-payment (onPay)=\"goToNext()\" />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingPrevious()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n }\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getPreviousRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (!isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingNext()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n }\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getNextRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n @if (isLastFormPage() && canShowNextButton()) {\n <button\n type=\"submit\"\n id=\"transmitButton\"\n (click)=\"goToNext()\"\n class=\"btn btn-success vd-btn-pagination-submit\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n >\n @if (isLoadingNext()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n {{ transmitLabel() | fromDictionary }}\n }\n </button>\n }\n </li>\n }\n </ul>\n <output class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (isLoading()) {\n {{ loadingLabel() | fromDictionary }}\n }\n </output>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"], dependencies: [{ kind: "component", type: GesdemActionRecoveryRegistrationComponent, selector: "gesdem-action-recovery-registration", inputs: ["dispatchFormErrors", "continueLaterLabel", "continueLaterAlreadyRegisteredLabel", "continueLaterConnectedLabel", "triggerOnPageChange"] }, { kind: "component", type: PendingPaymentComponent, selector: "sdk-pending-payment", outputs: ["onPay"] }, { kind: "component", type: FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] });
12596
12673
  }
12597
12674
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: FoehnNavigationComponent, decorators: [{
12598
12675
  type: Component,
@@ -12602,7 +12679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
12602
12679
  FoehnIconChevronLeftComponent,
12603
12680
  FoehnIconChevronRightComponent,
12604
12681
  SdkDictionaryPipe,
12605
- ], template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n@if (isForcedOnRecapForPendingPayment()) {\n <sdk-pending-payment (onPay)=\"goToNext()\" />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getPreviousRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (!isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getNextRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n @if (isLastFormPage() && canShowNextButton()) {\n <button\n type=\"submit\"\n id=\"transmitButton\"\n (click)=\"goToNext()\"\n class=\"btn btn-success vd-btn-pagination-submit\"\n >\n {{ transmitLabel() | fromDictionary }}\n </button>\n }\n </li>\n }\n </ul>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"] }]
12682
+ ], template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n@if (isForcedOnRecapForPendingPayment()) {\n <sdk-pending-payment (onPay)=\"goToNext()\" />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingPrevious()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n }\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getPreviousRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (!isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingNext()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n }\n </span>\n @if (isLinearRouting()) {\n <span class=\"visually-hidden\">:</span>\n <span class=\"vd-pagination__label\">\n {{ getNextRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n }\n </button>\n </li>\n }\n @if (isLastFormPage() && canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n @if (isLastFormPage() && canShowNextButton()) {\n <button\n type=\"submit\"\n id=\"transmitButton\"\n (click)=\"goToNext()\"\n class=\"btn btn-success vd-btn-pagination-submit\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n >\n @if (isLoadingNext()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n {{ transmitLabel() | fromDictionary }}\n }\n </button>\n }\n </li>\n }\n </ul>\n <output class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (isLoading()) {\n {{ loadingLabel() | fromDictionary }}\n }\n </output>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"] }]
12606
12683
  }], propDecorators: { transmitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "transmitLabel", required: false }] }] } });
12607
12684
 
12608
12685
  class FoehnSimpleNavigationComponent extends AbstractFoehnNavigationComponent {
@@ -12611,7 +12688,7 @@ class FoehnSimpleNavigationComponent extends AbstractFoehnNavigationComponent {
12611
12688
  return this.showPreviousButton();
12612
12689
  }
12613
12690
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: FoehnSimpleNavigationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12614
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.23", type: FoehnSimpleNavigationComponent, isStandalone: true, selector: "foehn-simple-navigation", inputs: { showPreviousButton: { classPropertyName: "showPreviousButton", publicName: "showPreviousButton", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n </span>\n </button>\n </li>\n }\n @if (canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n </span>\n </button>\n </li>\n }\n </ul>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"], dependencies: [{ kind: "component", type: GesdemActionRecoveryRegistrationComponent, selector: "gesdem-action-recovery-registration", inputs: ["dispatchFormErrors", "continueLaterLabel", "continueLaterAlreadyRegisteredLabel", "continueLaterConnectedLabel", "triggerOnPageChange"] }, { kind: "component", type: FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] });
12691
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.23", type: FoehnSimpleNavigationComponent, isStandalone: true, selector: "foehn-simple-navigation", inputs: { showPreviousButton: { classPropertyName: "showPreviousButton", publicName: "showPreviousButton", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingPrevious()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n }\n </span>\n </button>\n </li>\n }\n @if (canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingNext()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n }\n </span>\n </button>\n </li>\n }\n </ul>\n <output class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (isLoading()) {\n {{ loadingLabel() | fromDictionary }}\n }\n </output>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"], dependencies: [{ kind: "component", type: GesdemActionRecoveryRegistrationComponent, selector: "gesdem-action-recovery-registration", inputs: ["dispatchFormErrors", "continueLaterLabel", "continueLaterAlreadyRegisteredLabel", "continueLaterConnectedLabel", "triggerOnPageChange"] }, { kind: "component", type: FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] });
12615
12692
  }
12616
12693
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: FoehnSimpleNavigationComponent, decorators: [{
12617
12694
  type: Component,
@@ -12620,7 +12697,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
12620
12697
  FoehnIconChevronLeftComponent,
12621
12698
  FoehnIconChevronRightComponent,
12622
12699
  SdkDictionaryPipe,
12623
- ], template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n </span>\n </button>\n </li>\n }\n @if (canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n </span>\n </button>\n </li>\n }\n </ul>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"] }]
12700
+ ], template: "@if (showContinueLaterButton()) {\n <gesdem-action-recovery-registration\n [continueLaterLabel]=\"continueLaterLabel()\"\n [continueLaterAlreadyRegisteredLabel]=\"\n continueLaterAlreadyRegisteredLabel()\n \"\n [continueLaterConnectedLabel]=\"continueLaterConnectedLabel()\"\n [triggerOnPageChange]=\"triggerRecoveryOnPageChange()\"\n />\n}\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n @if (canShowPreviousButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--previous\">\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingPrevious()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n <foehn-icon-chevron-left\n class=\"me-1\"\n aria-hidden=\"true\"\n />\n {{ prevLabel() | fromDictionary }}\n }\n </span>\n </button>\n </li>\n }\n @if (canShowNextButton()) {\n <li class=\"vd-pagination__item vd-pagination__item--next\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n [class.disabled]=\"isLoading()\"\n [attr.aria-disabled]=\"isLoading() || null\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n @if (isLoadingNext()) {\n <span\n class=\"spinner-border spinner-border-sm me-1\"\n aria-hidden=\"true\"\n ></span>\n {{ loadingLabel() | fromDictionary }}\n } @else {\n {{ nextLabel() | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ms-1\"\n aria-hidden=\"true\"\n />\n }\n </span>\n </button>\n </li>\n }\n </ul>\n <output class=\"visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (isLoading()) {\n {{ loadingLabel() | fromDictionary }}\n }\n </output>\n</nav>\n", styles: [".vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}.btn.btn-link{text-transform:none}\n"] }]
12624
12701
  }], propDecorators: { showPreviousButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPreviousButton", required: false }] }] } });
12625
12702
 
12626
12703
  class FoehnRemainingAlertsSummaryComponent {
@@ -15162,7 +15239,7 @@ class AbstractPageFromMenuComponent extends AbstractPageComponent {
15162
15239
  }
15163
15240
  breadCrumb.breadcrumbItems?.pop();
15164
15241
  this._breadcrumbEventService.setBreadcrumb(breadCrumb);
15165
- this._navigation.next();
15242
+ this.navigateToNextPage();
15166
15243
  });
15167
15244
  }
15168
15245
  appendPageToBreadCrumb() {