@dsivd/prestations-ng 19.2.0-beta.10 → 19.2.0-beta.12
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 +45 -0
- package/CONTRIBUTING.md +1 -1
- package/GOOD_PRACTICES.md +4 -2
- package/UPGRADING_V19.md +16 -5
- package/fesm2022/dsivd-prestations-ng.mjs +94 -14
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/package.json +1 -1
- package/types/dsivd-prestations-ng.d.ts +55 -29
- package/dsivd-prestations-ng-19.2.0-beta.10.tgz +0 -0
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
|
|
@@ -194,6 +218,9 @@ Please check the [UPGRADING_V19.md](UPGRADING_V19.md) guide for more information
|
|
|
194
218
|
- `ng add @dsivd/prestations-ng` works again on the Angular workspaces created since Angular 14: it failed because
|
|
195
219
|
`angular.json` no longer has a `defaultProject` (the dependencies are now added to every application), then
|
|
196
220
|
because of the comments of `tsconfig.json` (now kept, like its formatting).
|
|
221
|
+
- `foehn-feedback-notification`: an error of `api/feedbacknotification/queryparams/{reference}` is logged and the
|
|
222
|
+
links are displayed without the feedback url, it reached the `ErrorHandler` as unhandled.
|
|
223
|
+
- The npm package no longer contains its own archive (`dsivd-prestations-ng-<version>.tgz`).
|
|
197
224
|
|
|
198
225
|
## [19.1.1]
|
|
199
226
|
|
|
@@ -337,6 +364,24 @@ Please check the [UPGRADING_V19.md](UPGRADING_V19.md) guide for more information
|
|
|
337
364
|
- [foehn-list-summary.component.ts](projects/prestations-ng/src/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.ts)
|
|
338
365
|
- `[list]` attribut has been removed. Use `[model]` instead.
|
|
339
366
|
|
|
367
|
+
## [18.3.15]
|
|
368
|
+
|
|
369
|
+
### Updated
|
|
370
|
+
|
|
371
|
+
- [foehn-navigation.component.html](projects/prestations-ng/src/foehn-navigation/foehn-navigation/foehn-navigation.component.html)
|
|
372
|
+
- [foehn-simple-navigation.component.html](projects/prestations-ng/src/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.html)
|
|
373
|
+
- 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
|
|
374
|
+
- [foehn-navigation.service.ts](projects/prestations-ng/src/foehn-navigation/foehn-navigation.service.ts)
|
|
375
|
+
- new method `pendingNavigationDirection()`: direction of the navigation started with `next()` or `previous()` until it ends, `null` otherwise
|
|
376
|
+
|
|
377
|
+
### Fixed
|
|
378
|
+
|
|
379
|
+
- [abstract-page-component.ts](projects/prestations-ng/src/abstract-page-component.ts)
|
|
380
|
+
- 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
|
|
381
|
+
- new protected method `navigateToNextPage()`: pages overriding `onFormSent()` should call it instead of `this._navigation.next()` to get this protection
|
|
382
|
+
- [abstract-page-from-menu.component.ts](projects/prestations-ng/src/foehn-menu-prestation/abstract-page-from-menu.component.ts)
|
|
383
|
+
- same fix when returning to the parent page
|
|
384
|
+
|
|
340
385
|
## [18.3.13]
|
|
341
386
|
|
|
342
387
|
### Fixed
|
package/CONTRIBUTING.md
CHANGED
|
@@ -171,7 +171,7 @@ Alternatively, you can manually publish the package. Although this method is not
|
|
|
171
171
|
- Ensure you can push to the npm registry: `npm adduser --registry=https://registry.npmjs.org --scope=@dsivd`
|
|
172
172
|
- Update the version number in `package.json` either manually or with `npm version`
|
|
173
173
|
- Commit and tag the version change
|
|
174
|
-
- Package a new version of the library with `npm package`
|
|
174
|
+
- Package a new version of the library with `npm run package`
|
|
175
175
|
- Publish the package:
|
|
176
176
|
- `npm run publish:stable` for stable version (released to everybody)
|
|
177
177
|
- `npm run publish:next` for next version (development only)
|
package/GOOD_PRACTICES.md
CHANGED
|
@@ -461,8 +461,10 @@ private readonly changeDetectorRef = inject(ChangeDetectorRef);
|
|
|
461
461
|
ngOnInit(): void {
|
|
462
462
|
super.ngOnInit();
|
|
463
463
|
this.sessionInfoWithApplicationService.prefillForm((info) => {
|
|
464
|
-
this.form
|
|
465
|
-
|
|
464
|
+
if (this.form) {
|
|
465
|
+
this.form.email = info?.email ?? null;
|
|
466
|
+
this.changeDetectorRef.markForCheck();
|
|
467
|
+
}
|
|
466
468
|
});
|
|
467
469
|
}
|
|
468
470
|
```
|
package/UPGRADING_V19.md
CHANGED
|
@@ -1246,7 +1246,7 @@ In `front/src/`, remove the file `typings.d.ts` if it is still there.
|
|
|
1246
1246
|
{
|
|
1247
1247
|
"extends": "./tsconfig.json",
|
|
1248
1248
|
"compilerOptions": {
|
|
1249
|
-
"outDir": "
|
|
1249
|
+
"outDir": "./out-tsc/app",
|
|
1250
1250
|
"types": []
|
|
1251
1251
|
},
|
|
1252
1252
|
"include": ["src/**/*.ts"],
|
|
@@ -1448,12 +1448,15 @@ When using `IntelliJ`, you can run code inspection on your project to fix deprec
|
|
|
1448
1448
|
- In your `tsconfig.json` file, add `"strict": true` in `compilerOptions` and remove `alwaysStrict`, `noImplicitThis`, `strictBindCallApply` and `strictFunctionTypes` as they are already included in `strict` mode.
|
|
1449
1449
|
- In your `tsconfig.json` file, remove `useDefineForClassFields` from `compilerOptions`.
|
|
1450
1450
|
|
|
1451
|
-
Now fix your project until no more errors:
|
|
1451
|
+
Now fix your project until no more errors (unlike `tsc -b`, these commands write nothing):
|
|
1452
1452
|
|
|
1453
1453
|
```bash
|
|
1454
|
-
npx tsc -
|
|
1454
|
+
npx tsc -p tsconfig.app.json --noEmit
|
|
1455
|
+
npx tsc -p tsconfig.spec.json --noEmit
|
|
1455
1456
|
```
|
|
1456
1457
|
|
|
1458
|
+
`tsc` doesn't check the templates: the errors reported by `strictTemplates` appear when you build your application.
|
|
1459
|
+
|
|
1457
1460
|
and finally run the following commands to build, test and start your application:
|
|
1458
1461
|
|
|
1459
1462
|
```bash
|
|
@@ -1515,6 +1518,8 @@ The CommonJS dependencies of prestations-ng are now `"iban"` and `"dayjs"` (whic
|
|
|
1515
1518
|
"allowedCommonJsDependencies": ["iban", "dayjs"]
|
|
1516
1519
|
```
|
|
1517
1520
|
|
|
1521
|
+
Also remove the packages that are no longer installed (`npm ls <package>` lists nothing).
|
|
1522
|
+
|
|
1518
1523
|
### Zoneless (optional but recommended)
|
|
1519
1524
|
|
|
1520
1525
|
Since v19.2, prestations-ng does not need zone.js anymore: the state of its components is held by signals, which
|
|
@@ -1558,6 +1563,10 @@ then uninstall zone.js:
|
|
|
1558
1563
|
npm uninstall zone.js
|
|
1559
1564
|
```
|
|
1560
1565
|
|
|
1566
|
+
`zone.js` stays in your `package-lock.json` as an optional peer dependency of `@angular/core`: this is expected. Check
|
|
1567
|
+
instead that the build of your application no longer outputs a `polyfills` chunk (unless you still have other
|
|
1568
|
+
polyfills, e.g. `@angular/localize/init`).
|
|
1569
|
+
|
|
1561
1570
|
#### Check your components
|
|
1562
1571
|
|
|
1563
1572
|
Without zone.js, Angular refreshes a component only when it is notified that something changed:
|
|
@@ -1601,8 +1610,10 @@ Pay attention to:
|
|
|
1601
1610
|
ngOnInit(): void {
|
|
1602
1611
|
super.ngOnInit();
|
|
1603
1612
|
this.sessionInfoWithApplicationService.prefillForm((info) => {
|
|
1604
|
-
this.form
|
|
1605
|
-
|
|
1613
|
+
if (this.form) {
|
|
1614
|
+
this.form.email = info?.email ?? null;
|
|
1615
|
+
this.changeDetectorRef.markForCheck();
|
|
1616
|
+
}
|
|
1606
1617
|
});
|
|
1607
1618
|
}
|
|
1608
1619
|
```
|
|
@@ -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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
@@ -3818,7 +3867,10 @@ class FoehnFeedbackNotificationComponent {
|
|
|
3818
3867
|
.post(`api/feedbacknotification/queryparams/${reference}`, fbu, {
|
|
3819
3868
|
responseType: 'text',
|
|
3820
3869
|
})
|
|
3821
|
-
.pipe(map((cryptedUrlParams) => `${feedBackFormBaseUrl}?q=${encodeURIComponent(cryptedUrlParams)}`))
|
|
3870
|
+
.pipe(map((cryptedUrlParams) => `${feedBackFormBaseUrl}?q=${encodeURIComponent(cryptedUrlParams)}`), catchError((e) => {
|
|
3871
|
+
console.error('Unable to get the feedback url, returning null', e);
|
|
3872
|
+
return of(null);
|
|
3873
|
+
}));
|
|
3822
3874
|
}
|
|
3823
3875
|
getCategory(sessionInfoData, etapeInfo) {
|
|
3824
3876
|
if (sessionInfoData?.categories) {
|
|
@@ -9993,7 +10045,7 @@ class FoehnInputEmailComponent extends FoehnInputStringComponent {
|
|
|
9993
10045
|
this.helpModal.set({
|
|
9994
10046
|
title: modalTitle,
|
|
9995
10047
|
body: modalContent,
|
|
9996
|
-
modalSize: 'modal-
|
|
10048
|
+
modalSize: 'modal-md',
|
|
9997
10049
|
});
|
|
9998
10050
|
}
|
|
9999
10051
|
if (this.standardHelpText() === undefined) {
|
|
@@ -12518,11 +12570,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
12518
12570
|
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
12571
|
}], propDecorators: { onPay: [{ type: i0.Output, args: ["onPay"] }] } });
|
|
12520
12572
|
|
|
12573
|
+
// The loading state isn't displayed when the target page loads quickly, so that it doesn't flicker.
|
|
12574
|
+
const LOADING_DISPLAY_DELAY_MS = 200;
|
|
12521
12575
|
class AbstractFoehnNavigationComponent {
|
|
12522
12576
|
showContinueLaterButton = input(true, ...(ngDevMode ? [{ debugName: "showContinueLaterButton" }] : /* istanbul ignore next */ []));
|
|
12523
12577
|
showNextButton = input(true, ...(ngDevMode ? [{ debugName: "showNextButton" }] : /* istanbul ignore next */ []));
|
|
12524
12578
|
nextLabel = input('foehn-navigation.next.label', ...(ngDevMode ? [{ debugName: "nextLabel" }] : /* istanbul ignore next */ []));
|
|
12525
12579
|
prevLabel = input('foehn-navigation.previous.label', ...(ngDevMode ? [{ debugName: "prevLabel" }] : /* istanbul ignore next */ []));
|
|
12580
|
+
loadingLabel = input('foehn-navigation.loading.label', ...(ngDevMode ? [{ debugName: "loadingLabel" }] : /* istanbul ignore next */ []));
|
|
12526
12581
|
continueLaterLabel = input('foehn-navigation.continue-later.label', ...(ngDevMode ? [{ debugName: "continueLaterLabel" }] : /* istanbul ignore next */ []));
|
|
12527
12582
|
continueLaterAlreadyRegisteredLabel = input('foehn-navigation.continue-later-already-registered.label', ...(ngDevMode ? [{ debugName: "continueLaterAlreadyRegisteredLabel" }] : /* istanbul ignore next */ []));
|
|
12528
12583
|
continueLaterConnectedLabel = input('foehn-navigation.continue-later-connected.label', ...(ngDevMode ? [{ debugName: "continueLaterConnectedLabel" }] : /* istanbul ignore next */ []));
|
|
@@ -12531,21 +12586,46 @@ class AbstractFoehnNavigationComponent {
|
|
|
12531
12586
|
onNext = output();
|
|
12532
12587
|
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
|
12533
12588
|
onPrevious = output();
|
|
12589
|
+
pendingNavigationDirection;
|
|
12590
|
+
loadingDirection;
|
|
12591
|
+
isNavigating = computed(() => this.pendingNavigationDirection() !== null, ...(ngDevMode ? [{ debugName: "isNavigating" }] : /* istanbul ignore next */ []));
|
|
12592
|
+
isLoading = computed(() => this.loadingDirection() !== null, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
12593
|
+
isLoadingNext = computed(() => this.loadingDirection() === NavigationDirection.FORWARD, ...(ngDevMode ? [{ debugName: "isLoadingNext" }] : /* istanbul ignore next */ []));
|
|
12594
|
+
isLoadingPrevious = computed(() => this.loadingDirection() === NavigationDirection.BACKWARD, ...(ngDevMode ? [{ debugName: "isLoadingPrevious" }] : /* istanbul ignore next */ []));
|
|
12595
|
+
constructor() {
|
|
12596
|
+
const pendingNavigationDirection = inject(FoehnNavigationService)
|
|
12597
|
+
.pendingNavigationDirection()
|
|
12598
|
+
.pipe(
|
|
12599
|
+
// A navigation pending when the component is created is the one activating its page.
|
|
12600
|
+
skip(1));
|
|
12601
|
+
this.pendingNavigationDirection = toSignal(pendingNavigationDirection, {
|
|
12602
|
+
initialValue: null,
|
|
12603
|
+
});
|
|
12604
|
+
this.loadingDirection = toSignal(pendingNavigationDirection.pipe(switchMap((direction) => direction === null
|
|
12605
|
+
? of(null)
|
|
12606
|
+
: timer(LOADING_DISPLAY_DELAY_MS).pipe(map(() => direction)))), { initialValue: null });
|
|
12607
|
+
}
|
|
12534
12608
|
goToNext() {
|
|
12609
|
+
if (this.isNavigating()) {
|
|
12610
|
+
return;
|
|
12611
|
+
}
|
|
12535
12612
|
this.onNext.emit();
|
|
12536
12613
|
}
|
|
12537
12614
|
goToPrevious() {
|
|
12615
|
+
if (this.isNavigating()) {
|
|
12616
|
+
return;
|
|
12617
|
+
}
|
|
12538
12618
|
this.onPrevious.emit();
|
|
12539
12619
|
}
|
|
12540
12620
|
canShowNextButton() {
|
|
12541
12621
|
return this.showNextButton();
|
|
12542
12622
|
}
|
|
12543
12623
|
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 });
|
|
12624
|
+
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
12625
|
}
|
|
12546
12626
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: AbstractFoehnNavigationComponent, decorators: [{
|
|
12547
12627
|
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"] }] } });
|
|
12628
|
+
}], 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
12629
|
|
|
12550
12630
|
class FoehnNavigationComponent extends AbstractFoehnNavigationComponent {
|
|
12551
12631
|
transmitLabel = input('foehn-navigation.transmit.label', ...(ngDevMode ? [{ debugName: "transmitLabel" }] : /* istanbul ignore next */ []));
|
|
@@ -12592,7 +12672,7 @@ class FoehnNavigationComponent extends AbstractFoehnNavigationComponent {
|
|
|
12592
12672
|
return this.navigationService.isLinearRouting();
|
|
12593
12673
|
}
|
|
12594
12674
|
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
|
|
12675
|
+
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
12676
|
}
|
|
12597
12677
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: FoehnNavigationComponent, decorators: [{
|
|
12598
12678
|
type: Component,
|
|
@@ -12602,7 +12682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
12602
12682
|
FoehnIconChevronLeftComponent,
|
|
12603
12683
|
FoehnIconChevronRightComponent,
|
|
12604
12684
|
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
|
|
12685
|
+
], 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
12686
|
}], propDecorators: { transmitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "transmitLabel", required: false }] }] } });
|
|
12607
12687
|
|
|
12608
12688
|
class FoehnSimpleNavigationComponent extends AbstractFoehnNavigationComponent {
|
|
@@ -12611,7 +12691,7 @@ class FoehnSimpleNavigationComponent extends AbstractFoehnNavigationComponent {
|
|
|
12611
12691
|
return this.showPreviousButton();
|
|
12612
12692
|
}
|
|
12613
12693
|
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
|
|
12694
|
+
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
12695
|
}
|
|
12616
12696
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: FoehnSimpleNavigationComponent, decorators: [{
|
|
12617
12697
|
type: Component,
|
|
@@ -12620,7 +12700,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
12620
12700
|
FoehnIconChevronLeftComponent,
|
|
12621
12701
|
FoehnIconChevronRightComponent,
|
|
12622
12702
|
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
|
|
12703
|
+
], 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
12704
|
}], propDecorators: { showPreviousButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPreviousButton", required: false }] }] } });
|
|
12625
12705
|
|
|
12626
12706
|
class FoehnRemainingAlertsSummaryComponent {
|
|
@@ -15162,7 +15242,7 @@ class AbstractPageFromMenuComponent extends AbstractPageComponent {
|
|
|
15162
15242
|
}
|
|
15163
15243
|
breadCrumb.breadcrumbItems?.pop();
|
|
15164
15244
|
this._breadcrumbEventService.setBreadcrumb(breadCrumb);
|
|
15165
|
-
this.
|
|
15245
|
+
this.navigateToNextPage();
|
|
15166
15246
|
});
|
|
15167
15247
|
}
|
|
15168
15248
|
appendPageToBreadCrumb() {
|