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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, AfterViewInit, Signal, ElementRef, DestroyRef, OnDestroy, InjectionToken, OnChanges, SimpleChanges, EnvironmentProviders, SimpleChange, AfterViewChecked, PipeTransform, TemplateRef, TrackByFunction, ErrorHandler, NgZone } from '@angular/core';
2
+ import { OnInit, AfterViewInit, Signal, ElementRef, DestroyRef, OnDestroy, InjectionToken, OnChanges, SimpleChanges, EnvironmentProviders, Injector, SimpleChange, AfterViewChecked, PipeTransform, TemplateRef, TrackByFunction, ErrorHandler, NgZone } from '@angular/core';
3
3
  import { Params, Route, ActivatedRoute, ActivatedRouteSnapshot, CanActivateFn, Router, QueryParamsHandling } from '@angular/router';
4
4
  import { Observable, Subject, BehaviorSubject } from 'rxjs';
5
5
  import { NgModel, NgForm } from '@angular/forms';
@@ -117,6 +117,7 @@ declare class ValidationHandlerService {
117
117
 
118
118
  declare const GESDEM_MAX_DATA_LENGTH = 10000;
119
119
  declare abstract class FoehnInputComponent<T> implements OnInit, AfterViewInit {
120
+ #private;
120
121
  readonly model: _angular_core.ModelSignal<T | null | undefined>;
121
122
  readonly pattern: _angular_core.ModelSignal<string | undefined>;
122
123
  readonly helpModal: _angular_core.ModelSignal<HelpModal | undefined>;
@@ -194,7 +195,7 @@ declare abstract class FoehnInputComponent<T> implements OnInit, AfterViewInit {
194
195
  protected readonly hostHidden: Signal<"hidden" | null>;
195
196
  protected readonly _destroyRef: DestroyRef;
196
197
  private readonly registerNgModelService;
197
- private _errors;
198
+ private readonly _errors;
198
199
  private readonly userInputSubject;
199
200
  private readonly subComponentsEffect;
200
201
  private readonly modelEffect;
@@ -429,7 +430,7 @@ declare class GesdemHandlerService {
429
430
  private readonly dictionaryService;
430
431
  private readonly dateHelper;
431
432
  private readonly _updateFormDataSubject;
432
- private _lastResponse;
433
+ private readonly _lastResponse;
433
434
  private _captchaToken;
434
435
  get lastResponse(): FormPostResponse<I18nForm>;
435
436
  get updateFormDataSubject(): Observable<I18nForm | undefined | null>;
@@ -478,7 +479,7 @@ declare class SdkDictionaryService {
478
479
  private readonly httpClient;
479
480
  private readonly growlService;
480
481
  private readonly validationService;
481
- private dictionary;
482
+ private readonly dictionary;
482
483
  private defaultLanguageCode;
483
484
  private readonly dictionaryObservable;
484
485
  private readonly availableLanguagesObservable;
@@ -530,9 +531,10 @@ declare class SdkEventsLoggerService {
530
531
  }
531
532
 
532
533
  declare abstract class AbstractPageComponent<T extends I18nForm> implements OnInit, AfterViewInit {
534
+ #private;
533
535
  readonly foehnFormComponent: _angular_core.Signal<FoehnFormComponent | undefined>;
534
536
  form: T | undefined | null;
535
- reference: string | null;
537
+ reference: string | null | undefined;
536
538
  protected _destroyRef: DestroyRef;
537
539
  protected _gesdemService: GesdemHandlerService;
538
540
  protected _gesdemEventService: GesdemEventService;
@@ -569,7 +571,7 @@ declare abstract class AbstractPageComponent<T extends I18nForm> implements OnIn
569
571
  declare class FoehnNotfoundComponent implements OnInit, OnDestroy {
570
572
  readonly shouldRedirect: _angular_core.InputSignal<boolean>;
571
573
  readonly setPageTitle: _angular_core.InputSignal<boolean>;
572
- seconds: number;
574
+ readonly seconds: _angular_core.WritableSignal<number>;
573
575
  private readonly router;
574
576
  private readonly foehnPageService;
575
577
  private intervalId;
@@ -816,7 +818,8 @@ declare class GesdemErrorComponent implements OnInit {
816
818
  }
817
819
 
818
820
  /**
819
- * Provides the core PrestationsNg configuration (HTTP interceptors, error handler, FontAwesome config).
821
+ * Provides the core PrestationsNg configuration (HTTP interceptors, error handler and global error
822
+ * listeners, FontAwesome config).
820
823
  * Replaces the old PrestationsNgCoreModule.
821
824
  *
822
825
  * Usage in bootstrapApplication:
@@ -879,11 +882,11 @@ declare class FoehnPageComponent implements OnChanges, OnInit {
879
882
  * If set to 'false', hide the default Security Best Practice link.
880
883
  */
881
884
  readonly showDefaultSecurityBestPracticeLink: _angular_core.InputSignal<boolean>;
882
- readonly appTitle: _angular_core.InputSignal<string | undefined>;
885
+ readonly appTitle: _angular_core.InputSignal<string | null | undefined>;
883
886
  readonly footerLinks: _angular_core.InputSignal<FooterLink[] | undefined>;
884
887
  readonly draftsEnabled: _angular_core.InputSignal<boolean>;
885
888
  readonly draftsUrl: _angular_core.InputSignal<string | undefined>;
886
- readonly etapeId: _angular_core.InputSignal<string | undefined>;
889
+ readonly etapeId: _angular_core.InputSignal<string | null | undefined>;
887
890
  readonly userConnectedAsDisplayed: _angular_core.InputSignal<boolean>;
888
891
  readonly statusProgressBarHidden: _angular_core.InputSignal<boolean | undefined>;
889
892
  /**
@@ -897,7 +900,7 @@ declare class FoehnPageComponent implements OnChanges, OnInit {
897
900
  * reloading the page while having unsaved data.
898
901
  */
899
902
  readonly showBeforeUnloadNativeConfirmAlert: _angular_core.InputSignal<boolean | undefined>;
900
- pageTitle: string | undefined;
903
+ readonly pageTitle: _angular_core.WritableSignal<string | undefined>;
901
904
  hasBlockingSupportAlert: Observable<boolean>;
902
905
  displayUserCategory: Observable<boolean> | undefined;
903
906
  showSecuredAreaLoginButton: Observable<boolean> | undefined;
@@ -937,9 +940,12 @@ declare class FoehnPageComponent implements OnChanges, OnInit {
937
940
 
938
941
  declare class FoehnPageCounterComponent {
939
942
  readonly textTemplate: _angular_core.InputSignal<string>;
940
- isStable: Observable<boolean>;
943
+ /**
944
+ * The counter is displayed once the page has been rendered,
945
+ * when the current route of the navigation is known.
946
+ */
947
+ readonly isStable: _angular_core.WritableSignal<boolean>;
941
948
  private readonly foehnNavigationService;
942
- private readonly ngZone;
943
949
  constructor();
944
950
  get placeholders(): PlaceholderType;
945
951
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnPageCounterComponent, never>;
@@ -1015,7 +1021,7 @@ declare class DropdownMenuGroup {
1015
1021
  }
1016
1022
 
1017
1023
  declare class FoehnHeaderComponent implements OnInit {
1018
- readonly title: _angular_core.InputSignal<string | undefined>;
1024
+ readonly title: _angular_core.InputSignal<string | null | undefined>;
1019
1025
  readonly showSecuredAreaLoginButton: _angular_core.InputSignal<boolean | null>;
1020
1026
  readonly routerLinkAppTitle: _angular_core.InputSignal<string | undefined>;
1021
1027
  readonly userInfo: _angular_core.ModelSignal<SessionInfoData | null | undefined>;
@@ -1026,7 +1032,7 @@ declare class FoehnHeaderComponent implements OnInit {
1026
1032
  readonly isParticulier: _angular_core.Signal<boolean>;
1027
1033
  readonly prenomNom: _angular_core.Signal<string>;
1028
1034
  id: string;
1029
- connectedEsMenu: DropdownMenuGroup[] | undefined;
1035
+ readonly connectedEsMenu: _angular_core.Signal<DropdownMenuGroup[] | undefined>;
1030
1036
  isProduction: Observable<boolean> | undefined;
1031
1037
  mockedServices: Observable<string[] | null | undefined> | undefined;
1032
1038
  availableLanguages: Observable<Language[]> | undefined;
@@ -1040,7 +1046,6 @@ declare class FoehnHeaderComponent implements OnInit {
1040
1046
  private readonly destroyRef;
1041
1047
  private readonly ENV_PROD;
1042
1048
  private readonly AVS;
1043
- constructor();
1044
1049
  ngOnInit(): void;
1045
1050
  getEnvironmentLabel(info: ApplicationInfo): string | null | undefined;
1046
1051
  languageChanged(languageCode: string): void;
@@ -1070,7 +1075,7 @@ declare class FoehnSkipLinkComponent implements OnInit {
1070
1075
 
1071
1076
  declare class FoehnStatusProgressBarComponent implements OnInit {
1072
1077
  readonly hidden: _angular_core.InputSignal<boolean | undefined>;
1073
- isTransmitted: boolean;
1078
+ readonly isTransmitted: _angular_core.WritableSignal<boolean>;
1074
1079
  protected activatedRoute: ActivatedRoute;
1075
1080
  private readonly navigation;
1076
1081
  private readonly gesdemHand;
@@ -1124,6 +1129,7 @@ declare class FormSelectOptionGroup {
1124
1129
  }
1125
1130
 
1126
1131
  declare abstract class FoehnCheckableGroupComponent extends FoehnInputComponent<any> implements OnInit, OnChanges {
1132
+ #private;
1127
1133
  readonly elements: _angular_core.ModelSignal<any>;
1128
1134
  readonly elementsUrl: _angular_core.InputSignal<string | undefined>;
1129
1135
  /**
@@ -1153,10 +1159,9 @@ declare abstract class FoehnCheckableGroupComponent extends FoehnInputComponent<
1153
1159
  */
1154
1160
  readonly missingModelValues: Signal<any[]>;
1155
1161
  readonly hasMissingModelValue: Signal<boolean>;
1156
- groupedElements: FormSelectOptionGroup[];
1162
+ readonly groupedElements: _angular_core.WritableSignal<FormSelectOptionGroup[]>;
1157
1163
  protected readonly httpClient: HttpClient;
1158
1164
  protected readonly multiple: Signal<boolean>;
1159
- private readonly ngZone;
1160
1165
  private pulling_;
1161
1166
  private readonly _onInitSubject;
1162
1167
  private disabledByElements;
@@ -1238,20 +1243,24 @@ declare class FoehnAutocompleteComponent extends FoehnCheckableGroupComponent im
1238
1243
  readonly suggestionsList: _angular_core.Signal<any>;
1239
1244
  readonly inputElement: _angular_core.Signal<any>;
1240
1245
  readonly inputValue: _angular_core.WritableSignal<string | null>;
1241
- searchValue: string | null;
1242
- inputHasFocus: boolean;
1243
- hideSuggestions: boolean;
1246
+ readonly searchValue: _angular_core.WritableSignal<string | null>;
1247
+ readonly inputHasFocus: _angular_core.WritableSignal<boolean>;
1248
+ readonly hideSuggestions: _angular_core.WritableSignal<boolean>;
1244
1249
  currentBlurTimer: ReturnType<typeof setTimeout> | null;
1245
1250
  placeholder: string | undefined;
1246
- VIEW_PORT_HEIGHT: number;
1247
- displayedElements: any[];
1248
- notificationMessageUpdated: boolean;
1251
+ readonly displayedElements: _angular_core.WritableSignal<any[]>;
1252
+ /**
1253
+ * Height of the suggestion list: at most NB_ITEMS_VISIBLE items are visible.
1254
+ */
1255
+ readonly VIEW_PORT_HEIGHT: _angular_core.Signal<number>;
1256
+ readonly notificationMessageUpdated: _angular_core.WritableSignal<boolean>;
1249
1257
  readonly disabledComputed: _angular_core.Signal<boolean>;
1258
+ protected readonly componentInjector: Injector;
1250
1259
  private currentItemGlobalIndex;
1251
1260
  private readonly NB_ITEMS_VISIBLE;
1252
1261
  private readonly filterSubject;
1253
1262
  private listHasFocus;
1254
- private activeDescendantId;
1263
+ private readonly activeDescendantId;
1255
1264
  private readonly SUGGESTION_SELECTED_CLASS;
1256
1265
  private readonly EXCLUDE_HTML_TAGS_REGEX;
1257
1266
  private readonly SUGGESTION_CUSTOM_ATTRIBUTE_LABEL_VALUE;
@@ -1299,7 +1308,10 @@ declare class FoehnAutocompleteComponent extends FoehnCheckableGroupComponent im
1299
1308
  private checkAndSetInputValue;
1300
1309
  private setSuggestionsDisplayed;
1301
1310
  private setDisplayedElements;
1302
- private resizeDisplayViewPort;
1311
+ /**
1312
+ * The virtual scroll viewport has to measure its size again once its new height is rendered.
1313
+ */
1314
+ private checkViewportSizeAfterRender;
1303
1315
  private getSelectedElement;
1304
1316
  private selectNextElement;
1305
1317
  private clearSelectionAndFindSelectedIndex;
@@ -1319,7 +1331,24 @@ declare class FoehnAutocompleteComponent extends FoehnCheckableGroupComponent im
1319
1331
  private getCustomValue;
1320
1332
  private getModelValueDisplayValue;
1321
1333
  private selectValueToDisplay;
1334
+ /**
1335
+ * Selects the value to display each time the elements are retrieved (onInitSubject) and each time the model
1336
+ * changes. `isSuggestionListDynamic` is read at each retrieval as it can change at runtime: only the matching
1337
+ * of the current kind of list is active (switchMap).
1338
+ */
1322
1339
  private matchValueOnModelChangeSubscription;
1340
+ /**
1341
+ * Dynamic suggestion list: the value to display is selected each time the model changes, with the current elements
1342
+ * and then with the elements loaded next, until they contain the model. The loaded elements depend on the search:
1343
+ * the model is not reset when it is not in them, and once displayed, the elements loaded for the search of the user
1344
+ * no longer change what is displayed.
1345
+ */
1346
+ private matchValueOfDynamicList;
1347
+ /**
1348
+ * Static suggestion list: each time the elements are retrieved, the value to display is selected for the current
1349
+ * model (replayed by model$), then each time the model changes.
1350
+ */
1351
+ private matchValueOfStaticList;
1323
1352
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnAutocompleteComponent, never>;
1324
1353
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnAutocompleteComponent, "foehn-autocomplete", never, { "searchValueMinCharsCount": { "alias": "searchValueMinCharsCount"; "required": false; "isSignal": true; }; "allowCustomValue": { "alias": "allowCustomValue"; "required": false; "isSignal": true; }; "isSuggestionListDynamic": { "alias": "isSuggestionListDynamic"; "required": false; "isSignal": true; }; "customValueModelGenerator": { "alias": "customValueModelGenerator"; "required": false; "isSignal": true; }; "itemHeightInSuggestionListInPx": { "alias": "itemHeightInSuggestionListInPx"; "required": false; "isSignal": true; }; "elementSuggestionLabel": { "alias": "elementSuggestionLabel"; "required": false; "isSignal": true; }; "caseSensitiveSearch": { "alias": "caseSensitiveSearch"; "required": false; "isSignal": true; }; }, { "userSearchInput": "userSearchInput"; }, never, ["*"], true, never>;
1325
1354
  }
@@ -1347,8 +1376,8 @@ declare class FoehnInputTextComponent extends FoehnInputStringComponent {
1347
1376
  declare class FoehnInputForeignLocalityComponent extends FoehnInputComponent<Locality> {
1348
1377
  readonly localityRequired: _angular_core.InputSignal<boolean>;
1349
1378
  readonly zipCodeRequired: _angular_core.InputSignal<boolean>;
1350
- zipCode: string | null;
1351
- longName: string | null;
1379
+ readonly zipCode: _angular_core.WritableSignal<string | null>;
1380
+ readonly longName: _angular_core.WritableSignal<string | null>;
1352
1381
  updateLocality(): void;
1353
1382
  handleUserInput(): void;
1354
1383
  onModelChange(value: Locality | null): void;
@@ -1359,7 +1388,7 @@ declare class FoehnInputForeignLocalityComponent extends FoehnInputComponent<Loc
1359
1388
  }
1360
1389
 
1361
1390
  declare class FoehnInputForeignStreetComponent extends FoehnInputComponent<Street> {
1362
- longName: string | null;
1391
+ readonly longName: _angular_core.WritableSignal<string | null>;
1363
1392
  updateStreet(): void;
1364
1393
  handleUserInput(): void;
1365
1394
  onModelChange(value: Street | null): void;
@@ -1380,7 +1409,9 @@ declare class FoehnInputAddressComponent extends FoehnInputComponent<Address> im
1380
1409
  readonly showAdressLine2: _angular_core.InputSignal<boolean>;
1381
1410
  readonly countryRequired: _angular_core.InputSignal<boolean>;
1382
1411
  readonly swissNpaLocalityRequired: _angular_core.InputSignal<boolean>;
1412
+ readonly swissNpaLocalityBaseUrl: _angular_core.InputSignal<string>;
1383
1413
  readonly streetRequired: _angular_core.InputSignal<boolean | undefined>;
1414
+ readonly streetAllowCustomValue: _angular_core.InputSignal<boolean>;
1384
1415
  readonly streetNumberRequired: _angular_core.InputSignal<boolean>;
1385
1416
  readonly hideNotRequiredExtraLabelStreetNumber: _angular_core.InputSignal<boolean>;
1386
1417
  readonly foreignZipCodeRequired: _angular_core.InputSignal<boolean>;
@@ -1398,20 +1429,23 @@ declare class FoehnInputAddressComponent extends FoehnInputComponent<Address> im
1398
1429
  readonly foreignStreetComponent: _angular_core.Signal<FoehnInputForeignStreetComponent | undefined>;
1399
1430
  readonly foreignHouseNumber: _angular_core.Signal<FoehnInputTextComponent | undefined>;
1400
1431
  readonly countryAutocomplete: _angular_core.Signal<FoehnAutocompleteComponent | undefined>;
1401
- country: Country | null;
1402
- locality: Locality | null;
1403
- street: Street | null;
1404
- houseNumber: string | null;
1405
- postOfficeBoxText: string | null;
1406
- addressLine1: string | null;
1407
- addressLine2: string | null;
1432
+ readonly country: _angular_core.WritableSignal<Country | null>;
1433
+ readonly locality: _angular_core.WritableSignal<Locality | null>;
1434
+ readonly street: _angular_core.WritableSignal<Street | null>;
1435
+ readonly houseNumber: _angular_core.WritableSignal<string | null>;
1436
+ readonly postOfficeBoxText: _angular_core.WritableSignal<string | null>;
1437
+ readonly addressLine1: _angular_core.WritableSignal<string | null>;
1438
+ readonly addressLine2: _angular_core.WritableSignal<string | null>;
1408
1439
  countries: Observable<Country[]> | undefined;
1409
1440
  localities: Observable<Locality[]> | undefined;
1410
1441
  streets: Observable<Street[]> | undefined;
1411
1442
  streetNumbers: Observable<StreetNumber[]> | undefined;
1412
- streetCustomErrors: Record<string, string>;
1443
+ readonly streetCustomErrors: _angular_core.WritableSignal<Record<string, string>>;
1413
1444
  private readonly httpClient;
1414
1445
  private readonly dictionaryService;
1446
+ private readonly addressInjector;
1447
+ private isSanitizationScheduled;
1448
+ private isDefaultCountryScheduled;
1415
1449
  private readonly iso2IdSubject;
1416
1450
  private readonly zipCodeIdSubject;
1417
1451
  private readonly estrIdSubject;
@@ -1440,6 +1474,15 @@ declare class FoehnInputAddressComponent extends FoehnInputComponent<Address> im
1440
1474
  isForeignStreetRequired(): boolean;
1441
1475
  isPostOfficeBoxTextRequired(): boolean;
1442
1476
  private sanitizeAddress;
1477
+ /**
1478
+ * @returns the sanitized address when it differs from the given value, otherwise null
1479
+ */
1480
+ private getSanitizedModel;
1481
+ /**
1482
+ * The sanitized model is set after the next rendering (not while the view is checked), from the latest model: the
1483
+ * model given by the parent in between (e.g. prefilled asynchronously) has been received, it is not overwritten.
1484
+ */
1485
+ private scheduleModelSanitization;
1443
1486
  private replaceAtLeastOneNotNull;
1444
1487
  private getCountries;
1445
1488
  private getLocalities;
@@ -1455,9 +1498,16 @@ declare class FoehnInputAddressComponent extends FoehnInputComponent<Address> im
1455
1498
  private getValidValue;
1456
1499
  private isModelEmpty;
1457
1500
  private manageDefaultCountry;
1501
+ /**
1502
+ * The default country is applied after the next rendering (once for the changes of the same rendering), from the
1503
+ * latest state: without zone.js, a model given by the parent in between (e.g. prefilled asynchronously) is only
1504
+ * received with the next change detection, it must not be overwritten by the model with the default country only.
1505
+ */
1506
+ private scheduleDefaultCountry;
1507
+ private applyDefaultCountry;
1458
1508
  private isCountryInputDirty;
1459
1509
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnInputAddressComponent, never>;
1460
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnInputAddressComponent, "foehn-input-address", never, { "isOnlySwiss": { "alias": "isOnlySwiss"; "required": false; "isSignal": true; }; "showPostOfficeBoxText": { "alias": "showPostOfficeBoxText"; "required": false; "isSignal": true; }; "showAdressLines": { "alias": "showAdressLines"; "required": false; "isSignal": true; }; "showAdressLine1": { "alias": "showAdressLine1"; "required": false; "isSignal": true; }; "showAdressLine2": { "alias": "showAdressLine2"; "required": false; "isSignal": true; }; "countryRequired": { "alias": "countryRequired"; "required": false; "isSignal": true; }; "swissNpaLocalityRequired": { "alias": "swissNpaLocalityRequired"; "required": false; "isSignal": true; }; "streetRequired": { "alias": "streetRequired"; "required": false; "isSignal": true; }; "streetNumberRequired": { "alias": "streetNumberRequired"; "required": false; "isSignal": true; }; "hideNotRequiredExtraLabelStreetNumber": { "alias": "hideNotRequiredExtraLabelStreetNumber"; "required": false; "isSignal": true; }; "foreignZipCodeRequired": { "alias": "foreignZipCodeRequired"; "required": false; "isSignal": true; }; "foreignLocalityRequired": { "alias": "foreignLocalityRequired"; "required": false; "isSignal": true; }; "foreignStreetRequired": { "alias": "foreignStreetRequired"; "required": false; "isSignal": true; }; "foreignStreetNumberRequired": { "alias": "foreignStreetNumberRequired"; "required": false; "isSignal": true; }; "postOfficeBoxTextRequired": { "alias": "postOfficeBoxTextRequired"; "required": false; "isSignal": true; }; "addressLine1Required": { "alias": "addressLine1Required"; "required": false; "isSignal": true; }; "addressLine2Required": { "alias": "addressLine2Required"; "required": false; "isSignal": true; }; "withCompanyLocalities": { "alias": "withCompanyLocalities"; "required": false; "isSignal": true; }; "withDefaultCountry": { "alias": "withDefaultCountry"; "required": false; "isSignal": true; }; "specifiedCanton": { "alias": "specifiedCanton"; "required": false; "isSignal": true; }; "countriesUrl": { "alias": "countriesUrl"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1510
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnInputAddressComponent, "foehn-input-address", never, { "isOnlySwiss": { "alias": "isOnlySwiss"; "required": false; "isSignal": true; }; "showPostOfficeBoxText": { "alias": "showPostOfficeBoxText"; "required": false; "isSignal": true; }; "showAdressLines": { "alias": "showAdressLines"; "required": false; "isSignal": true; }; "showAdressLine1": { "alias": "showAdressLine1"; "required": false; "isSignal": true; }; "showAdressLine2": { "alias": "showAdressLine2"; "required": false; "isSignal": true; }; "countryRequired": { "alias": "countryRequired"; "required": false; "isSignal": true; }; "swissNpaLocalityRequired": { "alias": "swissNpaLocalityRequired"; "required": false; "isSignal": true; }; "swissNpaLocalityBaseUrl": { "alias": "swissNpaLocalityBaseUrl"; "required": false; "isSignal": true; }; "streetRequired": { "alias": "streetRequired"; "required": false; "isSignal": true; }; "streetAllowCustomValue": { "alias": "streetAllowCustomValue"; "required": false; "isSignal": true; }; "streetNumberRequired": { "alias": "streetNumberRequired"; "required": false; "isSignal": true; }; "hideNotRequiredExtraLabelStreetNumber": { "alias": "hideNotRequiredExtraLabelStreetNumber"; "required": false; "isSignal": true; }; "foreignZipCodeRequired": { "alias": "foreignZipCodeRequired"; "required": false; "isSignal": true; }; "foreignLocalityRequired": { "alias": "foreignLocalityRequired"; "required": false; "isSignal": true; }; "foreignStreetRequired": { "alias": "foreignStreetRequired"; "required": false; "isSignal": true; }; "foreignStreetNumberRequired": { "alias": "foreignStreetNumberRequired"; "required": false; "isSignal": true; }; "postOfficeBoxTextRequired": { "alias": "postOfficeBoxTextRequired"; "required": false; "isSignal": true; }; "addressLine1Required": { "alias": "addressLine1Required"; "required": false; "isSignal": true; }; "addressLine2Required": { "alias": "addressLine2Required"; "required": false; "isSignal": true; }; "withCompanyLocalities": { "alias": "withCompanyLocalities"; "required": false; "isSignal": true; }; "withDefaultCountry": { "alias": "withDefaultCountry"; "required": false; "isSignal": true; }; "specifiedCanton": { "alias": "specifiedCanton"; "required": false; "isSignal": true; }; "countriesUrl": { "alias": "countriesUrl"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1461
1511
  }
1462
1512
 
1463
1513
  declare class FoehnBreadcrumbComponent implements OnInit {
@@ -1489,7 +1539,7 @@ declare class FoehnCheckboxComponent extends FoehnCheckableGroupComponent implem
1489
1539
  }
1490
1540
 
1491
1541
  declare class FoehnRadioComponent extends FoehnCheckableGroupComponent implements OnInit, AfterViewChecked {
1492
- inputValue: string | null | undefined;
1542
+ readonly inputValue: _angular_core.WritableSignal<string | null | undefined>;
1493
1543
  ngOnInit(): void;
1494
1544
  onModelChange(value: any): void;
1495
1545
  ngAfterViewChecked(): void;
@@ -1542,16 +1592,21 @@ declare class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteCom
1542
1592
  readonly defaultElemRef: _angular_core.Signal<readonly ElementRef<any>[]>;
1543
1593
  readonly defaultDeleteFocusArea: _angular_core.Signal<ElementRef<any> | undefined>;
1544
1594
  readonly defaultElementValuesComputed: _angular_core.Signal<unknown[]>;
1545
- autocompleteInputValue: string | null;
1546
- showEmptyListMessage: boolean;
1547
- srAnnouncements: string;
1595
+ readonly autocompleteInputValue: _angular_core.WritableSignal<string | null>;
1596
+ /**
1597
+ * Every element is selected: a message replaces the autocomplete (not for an empty list of elements).
1598
+ */
1599
+ readonly showEmptyListMessage: _angular_core.Signal<boolean>;
1600
+ readonly srAnnouncements: _angular_core.WritableSignal<string>;
1601
+ protected readonly suggestions: _angular_core.Signal<[]>;
1548
1602
  private readonly dictionaryService;
1549
1603
  private srAnnouncementClearTimer;
1550
1604
  private readonly SR_ANNOUNCEMENT_CLEAR_TIMEOUT_INTERVAL_MS;
1551
1605
  private pendingRemovedIndexForFocus;
1606
+ private readonly suggestionsEffect;
1607
+ private readonly autocompleteInputVisibilityEffect;
1552
1608
  private readonly selectedElemRefEffect;
1553
1609
  ngOnInit(): void;
1554
- onModelChange(value: any): void;
1555
1610
  hasErrorsToDisplay(): boolean;
1556
1611
  getLabel(value: any): string | null | undefined;
1557
1612
  updateMultiselectAutocomplete(currentModel: unknown[]): void;
@@ -1560,18 +1615,16 @@ declare class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteCom
1560
1615
  removeItem(item: unknown, index: number): void;
1561
1616
  trackByFn(index: number): number;
1562
1617
  canBeDeleted(index: number): boolean;
1563
- onAutocompleteElementsLoaded(elements: []): void;
1618
+ onAutocompleteElementsLoaded(): void;
1564
1619
  getDeleteButtonAriaLabel(element: unknown): string;
1565
1620
  hasDefaultDeleteFocusArea(): boolean;
1566
1621
  getBadgeLabel(element: any): string;
1567
- private manageListWhenElementsAreLoaded;
1568
1622
  private findElementByModelItem;
1569
1623
  private getValidValue;
1570
1624
  private focusNextAreaAfterDelete;
1571
1625
  private filterAutocompleteElements;
1572
- private manageSuggestionListAndFocusAfterAddingAnItem;
1573
- private manageSuggestionListAndFocusAfterRemovingAnItem;
1574
- private showAlertMessageAndHideAutocomplete;
1626
+ private focusAfterAddingAnItem;
1627
+ private applySuggestionsToAutocomplete;
1575
1628
  private manageScreenReaderAnnouncement;
1576
1629
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnMultiselectAutocompleteComponent, never>;
1577
1630
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnMultiselectAutocompleteComponent, "foehn-multiselect-autocomplete", never, { "elementBadgeLabel": { "alias": "elementBadgeLabel"; "required": false; "isSignal": true; }; "selectedItemsListLegend": { "alias": "selectedItemsListLegend"; "required": false; "isSignal": true; }; "noElementsSelectedLabel": { "alias": "noElementsSelectedLabel"; "required": false; "isSignal": true; }; "excludeFromErrorSummary": { "alias": "excludeFromErrorSummary"; "required": false; "isSignal": true; }; "defaultElementValues": { "alias": "defaultElementValues"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -1672,7 +1725,7 @@ declare class FoehnInputPrefixedTextComponent extends FoehnInputStringComponent
1672
1725
  readonly prefixColClass: _angular_core.InputSignal<string>;
1673
1726
  readonly textColClass: _angular_core.InputSignal<string>;
1674
1727
  readonly text: _angular_core.Signal<string | null>;
1675
- private previousPrefix;
1728
+ private readonly previousPrefix;
1676
1729
  constructor();
1677
1730
  onTextChange(value: string | undefined | null): void;
1678
1731
  updateFullText(text: string | null | undefined): void;
@@ -1685,10 +1738,10 @@ declare class FoehnInputPrefixedTextComponent extends FoehnInputStringComponent
1685
1738
  declare class FoehnInputTextareaComponent extends FoehnInputStringComponent implements OnInit {
1686
1739
  readonly rows: _angular_core.InputSignal<number>;
1687
1740
  readonly displayCharCount: _angular_core.InputSignal<boolean | undefined>;
1688
- isCharCountExceeded: boolean;
1689
- charCountLeft: number | undefined;
1690
- charCountLabel: string | undefined;
1691
- ariaLiveStatus: string;
1741
+ readonly isCharCountExceeded: _angular_core.WritableSignal<boolean>;
1742
+ readonly charCountLeft: _angular_core.WritableSignal<number | undefined>;
1743
+ readonly charCountLabel: _angular_core.WritableSignal<string | undefined>;
1744
+ readonly ariaLiveStatus: _angular_core.WritableSignal<string>;
1692
1745
  private readonly dictionary;
1693
1746
  ngOnInit(): void;
1694
1747
  onModelChange(value: string): void;
@@ -1708,10 +1761,10 @@ declare class FoehnDateComponent extends FoehnInputComponent<(number | null)[]>
1708
1761
  readonly maxDate: _angular_core.InputSignal<number[] | undefined>;
1709
1762
  readonly childrenLabelSrOnly: _angular_core.InputSignal<boolean>;
1710
1763
  readonly clearButton: _angular_core.InputSignal<boolean>;
1711
- day: string | null;
1712
- month: string | null;
1713
- year: string | null;
1714
- datePickerModel: number[] | null;
1764
+ readonly day: _angular_core.WritableSignal<string | null>;
1765
+ readonly month: _angular_core.WritableSignal<string | null>;
1766
+ readonly year: _angular_core.WritableSignal<string | null>;
1767
+ readonly datePickerModel: _angular_core.WritableSignal<number[] | null>;
1715
1768
  readonly disabledComputed: Signal<boolean>;
1716
1769
  constructor();
1717
1770
  updateDate(): void;
@@ -1739,18 +1792,23 @@ declare class FoehnDateTimeComponent extends FoehnInputComponent<(number | null)
1739
1792
  readonly hideDatePickerButton: _angular_core.InputSignal<boolean>;
1740
1793
  readonly childrenLabelSrOnly: _angular_core.InputSignal<boolean>;
1741
1794
  readonly clearButton: _angular_core.InputSignal<boolean>;
1742
- date: (number | null)[] | null;
1743
- time: string | null;
1795
+ readonly date: _angular_core.WritableSignal<(number | null)[] | null>;
1796
+ readonly time: _angular_core.WritableSignal<string | null>;
1744
1797
  private readonly userInputTimeSubject;
1745
1798
  private readonly timeModelChangeSubject;
1746
1799
  private readonly dateHelper;
1800
+ private readonly pendingTasksService;
1801
+ /**
1802
+ * The application is not stable (e.g. fixture.whenStable() in tests) while a time user input is debounced.
1803
+ */
1804
+ private removePendingTimeInputTask;
1747
1805
  constructor();
1748
1806
  updateDateTime(): void;
1749
1807
  handleUserInput(): void;
1750
1808
  timeModelChange(value: string | null | undefined): void;
1751
1809
  handleUserInputTime(value: string | null | undefined): void;
1752
1810
  handleUserInputDate(): void;
1753
- onModelChange(value: (number | null)[] | null): void;
1811
+ onModelChange(_value: (number | null)[] | null): void;
1754
1812
  getValidValue(): (number | null)[] | null | undefined;
1755
1813
  resetModel(): void;
1756
1814
  isEmpty(): boolean;
@@ -1758,6 +1816,7 @@ declare class FoehnDateTimeComponent extends FoehnInputComponent<(number | null)
1758
1816
  private isTimeEmpty;
1759
1817
  private isDateEmpty;
1760
1818
  private isDateEmptyDependingOnDisabled;
1819
+ private stopPendingTimeInputTask;
1761
1820
  private toNumber;
1762
1821
  private numberToString;
1763
1822
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnDateTimeComponent, never>;
@@ -1767,15 +1826,19 @@ declare class FoehnDateTimeComponent extends FoehnInputComponent<(number | null)
1767
1826
  declare class FoehnTimeComponent extends FoehnInputStringComponent {
1768
1827
  readonly childrenLabelSrOnly: _angular_core.InputSignal<boolean>;
1769
1828
  readonly clearButton: _angular_core.InputSignal<boolean>;
1770
- hour: string | null;
1771
- minute: string | null;
1829
+ readonly hour: _angular_core.WritableSignal<string | null>;
1830
+ readonly minute: _angular_core.WritableSignal<string | null>;
1772
1831
  private readonly dateHelper;
1773
1832
  constructor();
1774
1833
  updateTime(): void;
1775
1834
  handleUserInput(): void;
1776
- onModelChange(value: string): void;
1835
+ onModelChange(_value: string): void;
1777
1836
  resetModel(): void;
1778
1837
  isEmpty(): boolean;
1838
+ /**
1839
+ * @returns the part of the time of the model, the previous value when the model is not a complete time
1840
+ */
1841
+ private getTimePart;
1779
1842
  private getValidValue;
1780
1843
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnTimeComponent, never>;
1781
1844
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnTimeComponent, "foehn-input-time", never, { "childrenLabelSrOnly": { "alias": "childrenLabelSrOnly"; "required": false; "isSignal": true; }; "clearButton": { "alias": "clearButton"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -1783,9 +1846,9 @@ declare class FoehnTimeComponent extends FoehnInputStringComponent {
1783
1846
 
1784
1847
  declare class FoehnInputNav13Component extends FoehnInputStringComponent implements OnInit {
1785
1848
  PREFIX_NAVS: string;
1786
- part2: string | null;
1787
- part3: string | null;
1788
- part4: string | null;
1849
+ readonly part2: _angular_core.WritableSignal<string | null>;
1850
+ readonly part3: _angular_core.WritableSignal<string | null>;
1851
+ readonly part4: _angular_core.WritableSignal<string | null>;
1789
1852
  readonly label: _angular_core.InputSignalWithTransform<string | undefined, string | undefined>;
1790
1853
  constructor();
1791
1854
  ngOnInit(): void;
@@ -1853,12 +1916,13 @@ declare const GrowlType: {
1853
1916
  DANGER: string;
1854
1917
  };
1855
1918
 
1856
- declare class SdkDictionaryPipe implements PipeTransform {
1919
+ declare class SdkDictionaryPipe implements PipeTransform, OnDestroy {
1857
1920
  private readonly dictionaryService;
1858
1921
  private readonly ref;
1859
1922
  private readonly asyncPipe;
1860
1923
  constructor();
1861
1924
  transform(key: any, placeHolderType?: PlaceholderType): any;
1925
+ ngOnDestroy(): void;
1862
1926
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdkDictionaryPipe, never>;
1863
1927
  static ɵpipe: _angular_core.ɵɵPipeDeclaration<SdkDictionaryPipe, "fromDictionary", true>;
1864
1928
  }
@@ -2141,8 +2205,8 @@ declare class FoehnListComponent implements OnChanges {
2141
2205
  readonly trackByFn: _angular_core.InputSignal<(index: number, _item: unknown) => number | string>;
2142
2206
  readonly templateVariable: _angular_core.Signal<TemplateRef<any> | undefined>;
2143
2207
  readonly pageChange: _angular_core.OutputEmitterRef<PageChangeEvent>;
2144
- currentPage: number;
2145
- filteredList: unknown[];
2208
+ readonly currentPage: _angular_core.WritableSignal<number>;
2209
+ readonly filteredList: _angular_core.WritableSignal<unknown[]>;
2146
2210
  ngOnChanges(changes: SimpleChanges): void;
2147
2211
  previousPage(): void;
2148
2212
  hasPreviousPage(): boolean;
@@ -2198,9 +2262,9 @@ declare class FoehnTableComponent extends FoehnInputComponent<unknown[]> impleme
2198
2262
  readonly trackByFn: _angular_core.InputSignal<TrackByFunction<unknown>>;
2199
2263
  readonly pageChange: _angular_core.OutputEmitterRef<FoehnTablePageChangeEvent>;
2200
2264
  readonly rowClick: _angular_core.OutputEmitterRef<RowElement>;
2201
- currentPage: number;
2202
- filteredList: unknown[];
2203
- private _list;
2265
+ readonly currentPage: _angular_core.WritableSignal<number>;
2266
+ readonly filteredList: _angular_core.WritableSignal<unknown[]>;
2267
+ private readonly _list;
2204
2268
  onModelChange(value: unknown[]): void;
2205
2269
  trackFoehnTableColumnConfiguration: TrackByFunction<FoehnTableColumnConfiguration<any>>;
2206
2270
  ngOnChanges(changes: SimpleChanges): void;
@@ -2303,6 +2367,7 @@ declare class GrecaptchaComponent implements OnInit, OnDestroy {
2303
2367
  private readonly sdkLogsService;
2304
2368
  private readonly destroyRef;
2305
2369
  private widgetId;
2370
+ private scriptElement;
2306
2371
  ngOnInit(): void;
2307
2372
  ngOnDestroy(): void;
2308
2373
  reset(): void;
@@ -2320,21 +2385,17 @@ declare class GrecaptchaComponent implements OnInit, OnDestroy {
2320
2385
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<GrecaptchaComponent, "app-grecaptcha", never, { "siteKey": { "alias": "siteKey"; "required": false; "isSignal": true; }; }, { "loaded": "loaded"; "scriptError": "scriptError"; "tokenOnSuccess": "tokenOnSuccess"; "destroyed": "destroyed"; }, never, never, true, never>;
2321
2386
  }
2322
2387
 
2323
- declare class SdkRecaptchaComponent implements OnInit, OnDestroy {
2388
+ declare class SdkRecaptchaComponent {
2324
2389
  readonly grecaptcha: _angular_core.Signal<GrecaptchaComponent | undefined>;
2325
2390
  shouldDisplay: Observable<boolean>;
2326
- isLoaded: boolean;
2327
- hasLoadingError: boolean;
2391
+ readonly isLoaded: _angular_core.WritableSignal<boolean>;
2392
+ readonly hasLoadingError: _angular_core.WritableSignal<boolean>;
2328
2393
  errors: Observable<FormError[]>;
2329
2394
  publicKey: Observable<string | null>;
2330
2395
  recaptchaUrlForUserError: Observable<string | null>;
2331
2396
  private readonly recaptchaService;
2332
- private readonly cdr;
2333
2397
  private readonly destroyRef;
2334
- private forceDetectChange;
2335
2398
  constructor();
2336
- ngOnInit(): void;
2337
- ngOnDestroy(): void;
2338
2399
  setIsLoaded(isLoaded: boolean): void;
2339
2400
  setScriptError(scriptError: boolean): void;
2340
2401
  tokenOnSuccess(token: string | null): void;
@@ -2354,7 +2415,7 @@ declare const IAM_ACV_OIDC_REDIRECT_LOCATION_REGEX: InjectionToken<RegExp>;
2354
2415
 
2355
2416
  declare class RedirectComponent implements OnDestroy {
2356
2417
  isModalVisible: Observable<boolean>;
2357
- counter: number;
2418
+ readonly counter: _angular_core.WritableSignal<number>;
2358
2419
  redirectUrl: string;
2359
2420
  private readonly DEFAULT_COUNTER;
2360
2421
  private readonly iamInterceptor;
@@ -2400,10 +2461,20 @@ declare class DocumentReferenceWithFile extends DocumentReference {
2400
2461
  file: File | undefined | null;
2401
2462
  }
2402
2463
 
2464
+ declare const getSafeFileNameForErrorMessage: (fileName: string) => string;
2465
+ /**
2466
+ * Limits of an uploader overriding the ones of the application info, displayed in its error messages.
2467
+ */
2468
+ interface UploaderErrorLimits {
2469
+ overrideAcceptedExtensions?: string;
2470
+ overrideMaxFileNameLength?: number;
2471
+ overrideIllegalCharacters?: string;
2472
+ maxFileSizeInMo?: number;
2473
+ }
2403
2474
  declare class UploaderHelper {
2404
2475
  private readonly dictionaryService;
2405
2476
  private readonly applicationInfoService;
2406
- private _accept;
2477
+ private readonly _accept;
2407
2478
  private _fileMaxSizeInBytesByFormKey;
2408
2479
  private _maxFileNameLength;
2409
2480
  private _illegalCharacters;
@@ -2420,16 +2491,32 @@ declare class UploaderHelper {
2420
2491
  get accept(): string;
2421
2492
  set accept(value: string);
2422
2493
  getMaxFileSizeInBytesForFormKey(formKey: string): number | undefined | null;
2423
- isFileTooBig(formKey: string, fileSizeInBytes: number): boolean;
2494
+ /**
2495
+ * The maximum size of a file: the one of its form key (application info) and `maxFileSizeInMo` (a limit of the
2496
+ * component), the smallest of both.
2497
+ */
2498
+ getMaxFileSizeInBytes(formKey: string, maxFileSizeInMo?: number): number | null;
2499
+ isFileTooBig(formKey: string, fileSizeInBytes: number, maxFileSizeInMo?: number): boolean;
2424
2500
  isFileTooSmall(fileSizeInBytes: number): boolean;
2425
2501
  isFileNameLengthValid(filename: string, overrideMaxFileNameLength?: number): boolean;
2426
2502
  isFileNameNameValid(filename: string, overrideIllegalCharacters?: string): boolean;
2427
2503
  getFileExtension(filename: string): string;
2428
2504
  isFileExtensionValid(fileExtension: string, overrideAcceptedExtensions?: string): boolean;
2429
2505
  getUniqueErrorByCode(name: string, errorCode: string, fileName: string, customErrors: Record<string, string>, overrideAcceptedExtensions?: string, overrideMaxFileNameLength?: number, overrideIllegalCharacters?: string): FormError;
2430
- addCustomErrorOrDefault(name: string, destinationErrors: FormError[], errorCode: string, fileName: string, customErrors: Record<string, string>, overrideAcceptedExtensions?: string, overrideMaxFileNameLength?: number, overrideIllegalCharacters?: string): void;
2506
+ addCustomErrorOrDefault(name: string, destinationErrors: FormError[], errorCode: string, fileName: string, customErrors: Record<string, string>, limits?: UploaderErrorLimits): void;
2507
+ /**
2508
+ * The default messages of the upload errors, in the current language.
2509
+ */
2510
+ getDefaultCustomErrors(): Record<string, string>;
2511
+ /**
2512
+ * The messages of the upload errors: the given custom errors, completed with the default messages.
2513
+ */
2514
+ mergeCustomErrors(customErrors: Record<string, string>, defaultCustomErrors?: Record<string, string>): Record<string, string>;
2515
+ /**
2516
+ * @deprecated Overwrites the given custom errors with the default messages: use `mergeCustomErrors()`.
2517
+ */
2431
2518
  createDefaultCustomErrors(customErrors: Record<string, string>): void;
2432
- getLocalErrors(name: string, files: File[], customErrors: Record<string, string>, overrideAcceptedExtensions?: string, overrideMaxFileNameLength?: number, overrideIllegalCharacters?: string): FormError[];
2519
+ getLocalErrors(name: string, files: File[], customErrors: Record<string, string>, overrideAcceptedExtensions?: string, overrideMaxFileNameLength?: number, overrideIllegalCharacters?: string, maxFileSizeInMo?: number): FormError[];
2433
2520
  hasLiveUploadErrors(errors: FormError[]): boolean;
2434
2521
  preventAndStop(event: any): void;
2435
2522
  getAllFilesCount(data: any): string | null;
@@ -2442,6 +2529,7 @@ declare class UploaderHelper {
2442
2529
  mapToFormData(documents: DocumentReferenceWithFile[], formKey: string, language: string): FormData;
2443
2530
  removeCommasInLabel(label: string): string;
2444
2531
  private isTooBig;
2532
+ private getUniqueError;
2445
2533
  private replaceErrorMessageKeys;
2446
2534
  private getDefaultUnknownErrorMessage;
2447
2535
  private normalizeKey;
@@ -2482,11 +2570,13 @@ declare abstract class AbstractFoehnUploaderComponent<T> extends FoehnInputCompo
2482
2570
  protected deleteDocumentSubject: BehaviorSubject<DocumentReference | File | null>;
2483
2571
  protected uploadFilesSubject: BehaviorSubject<File[] | null>;
2484
2572
  protected currentLanguage: string | undefined;
2573
+ protected readonly uploaderCustomErrors: _angular_core.Signal<Record<string, string>>;
2485
2574
  protected readonly resolvedChooseButtonLabel: _angular_core.Signal<string>;
2486
2575
  protected readonly resolvedChooseButtonLabelMultiple: _angular_core.Signal<string>;
2487
2576
  protected readonly resolvedDropZoneLabel: _angular_core.Signal<string>;
2488
2577
  protected readonly resolvedDropZoneLabelMultiple: _angular_core.Signal<string>;
2489
2578
  protected readonly resolvedDeleteConfirmationMessage: _angular_core.Signal<string>;
2579
+ private readonly defaultCustomErrors;
2490
2580
  constructor();
2491
2581
  abstract get addedFiles(): unknown[];
2492
2582
  onDocumentDragOver(event: any): void;
@@ -2503,6 +2593,14 @@ declare abstract class AbstractFoehnUploaderComponent<T> extends FoehnInputCompo
2503
2593
  toMegaOctets(size: number): number;
2504
2594
  hasLiveUploadErrors(): boolean;
2505
2595
  protected removeFileOnConfirmation(document: DocumentReference | File): void;
2596
+ /**
2597
+ * A maximum size of each file, in addition to the one of its form key in the application info.
2598
+ */
2599
+ protected getMaxFileSizeInMo(): number | undefined;
2600
+ /**
2601
+ * The limits of this uploader displayed in its error messages.
2602
+ */
2603
+ protected getErrorLimits(): UploaderErrorLimits;
2506
2604
  protected displayLocalErrors(files: File[]): FormError[];
2507
2605
  protected isMaxSelectionReached(files: File[]): boolean;
2508
2606
  protected isMaxFilesCountReached(files: File[]): boolean;
@@ -2512,6 +2610,17 @@ declare abstract class AbstractFoehnUploaderComponent<T> extends FoehnInputCompo
2512
2610
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AbstractFoehnUploaderComponent<any>, never, never, { "showUploadButton": { "alias": "showUploadButton"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hideGlobalInfos": { "alias": "hideGlobalInfos"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": false; "isSignal": true; }; "overrideAcceptedExtensions": { "alias": "overrideAcceptedExtensions"; "required": false; "isSignal": true; }; "overrideMaxFileNameLength": { "alias": "overrideMaxFileNameLength"; "required": false; "isSignal": true; }; "overrideIllegalCharacters": { "alias": "overrideIllegalCharacters"; "required": false; "isSignal": true; }; "showDeleteConfirmationMessage": { "alias": "showDeleteConfirmationMessage"; "required": false; "isSignal": true; }; "maxSimultaneousSelectedFiles": { "alias": "maxSimultaneousSelectedFiles"; "required": false; "isSignal": true; }; "maxFilesCount": { "alias": "maxFilesCount"; "required": false; "isSignal": true; }; "maxFilesSizeInMo": { "alias": "maxFilesSizeInMo"; "required": false; "isSignal": true; }; "dragAndDrop": { "alias": "dragAndDrop"; "required": false; "isSignal": true; }; "shouldDisplayFileSavedConfirmation": { "alias": "shouldDisplayFileSavedConfirmation"; "required": false; "isSignal": true; }; "chooseButtonLabel": { "alias": "chooseButtonLabel"; "required": false; "isSignal": true; }; "chooseButtonLabelMultiple": { "alias": "chooseButtonLabelMultiple"; "required": false; "isSignal": true; }; "dropZoneLabel": { "alias": "dropZoneLabel"; "required": false; "isSignal": true; }; "dropZoneLabelMultiple": { "alias": "dropZoneLabelMultiple"; "required": false; "isSignal": true; }; "deleteConfirmationMessage": { "alias": "deleteConfirmationMessage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2513
2611
  }
2514
2612
 
2613
+ interface DocumentChanges {
2614
+ filesToAdd: File[];
2615
+ documentsToDelete: DocumentReference[];
2616
+ }
2617
+ /**
2618
+ * Computes what needs to be uploaded/deleted server-side by comparing a document list
2619
+ * currently held in a "local upload" model (mixing already persisted `DocumentReference`
2620
+ * and pending `DocumentReferenceWithFile`) against the list as it was originally loaded.
2621
+ */
2622
+ declare function splitDocumentChanges(current: DocumentReference[] | undefined | null, original: DocumentReference[] | undefined | null): DocumentChanges;
2623
+
2515
2624
  declare class PendingFiles {
2516
2625
  url: string | undefined | null;
2517
2626
  formKey: string | undefined | null;
@@ -2527,7 +2636,7 @@ declare class PageUploadLimitService {
2527
2636
  private readonly growlService;
2528
2637
  private pageMaxFilesCount;
2529
2638
  private pageMaxFilesSizeInMo;
2530
- private registeredUploaders;
2639
+ private readonly registeredUploaders;
2531
2640
  setPageMaxFilesCount(countLimit: number): void;
2532
2641
  setPageMaxFilesSizeInMo(maxSizeInMo: number): void;
2533
2642
  registerUploader(uploader: UploaderRegistration): void;
@@ -2599,7 +2708,7 @@ declare class PendingUploadService {
2599
2708
 
2600
2709
  declare class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent<DocumentReference[]> implements OnInit, OnDestroy {
2601
2710
  readonly url: _angular_core.InputSignal<string>;
2602
- readonly reference: _angular_core.InputSignal<string | undefined>;
2711
+ readonly reference: _angular_core.InputSignal<string | null | undefined>;
2603
2712
  multiUploadService: MultiUploadService;
2604
2713
  pendingUploadService: PendingUploadService;
2605
2714
  protected pageUploadLimitService: PageUploadLimitService;
@@ -2658,23 +2767,36 @@ declare class FoehnBoMultiUploadComponent extends AbstractFoehnUploaderComponent
2658
2767
  readonly deleteUrl: _angular_core.InputSignal<string | undefined>;
2659
2768
  readonly downloadUrl: _angular_core.InputSignal<string | undefined>;
2660
2769
  readonly optionalLabelKey: _angular_core.InputSignal<string>;
2770
+ readonly localUpload: _angular_core.InputSignal<boolean>;
2771
+ readonly maxFileSizeInMo: _angular_core.InputSignal<number | undefined>;
2772
+ readonly chooseButtonStyleModifier: _angular_core.InputSignal<string | undefined>;
2661
2773
  readonly documentDeleted: _angular_core.OutputEmitterRef<DocumentReference>;
2662
2774
  boMultiUploadService: BoMultiUploadService;
2663
2775
  protected pageUploadLimitService: PageUploadLimitService;
2776
+ private readonly blobUrls;
2777
+ private localSequence;
2664
2778
  get addedFiles(): DocumentReference[];
2665
2779
  ngOnInit(): void;
2666
2780
  ngOnDestroy(): void;
2781
+ isPending(document: DocumentReference): boolean;
2782
+ getDocumentDownloadUrl(document: DocumentReference): string;
2667
2783
  getTotalFilesSize(): number;
2668
2784
  canAddMoreFiles(): boolean;
2669
2785
  onFileChange(event: Event): void;
2670
2786
  onDrop(event: any): void;
2787
+ protected getMaxFileSizeInMo(): number | undefined;
2788
+ protected removeFileOnConfirmation(document: DocumentReference | File): void;
2671
2789
  private populateFileItemList;
2790
+ private addFilesLocally;
2791
+ private toPendingDocument;
2792
+ private removeDocumentLocally;
2793
+ private revokeBlobUrl;
2672
2794
  private displayResultFromServer;
2673
2795
  private removeDocumentFromModel;
2674
2796
  private displayErrorsFromServer;
2675
2797
  private manageSingleFile;
2676
2798
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnBoMultiUploadComponent, never>;
2677
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnBoMultiUploadComponent, "foehn-bo-multi-upload", never, { "uploadUrl": { "alias": "uploadUrl"; "required": false; "isSignal": true; }; "deleteUrl": { "alias": "deleteUrl"; "required": false; "isSignal": true; }; "downloadUrl": { "alias": "downloadUrl"; "required": false; "isSignal": true; }; "optionalLabelKey": { "alias": "optionalLabelKey"; "required": false; "isSignal": true; }; }, { "documentDeleted": "documentDeleted"; }, never, ["*"], true, never>;
2799
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnBoMultiUploadComponent, "foehn-bo-multi-upload", never, { "uploadUrl": { "alias": "uploadUrl"; "required": false; "isSignal": true; }; "deleteUrl": { "alias": "deleteUrl"; "required": false; "isSignal": true; }; "downloadUrl": { "alias": "downloadUrl"; "required": false; "isSignal": true; }; "optionalLabelKey": { "alias": "optionalLabelKey"; "required": false; "isSignal": true; }; "localUpload": { "alias": "localUpload"; "required": false; "isSignal": true; }; "maxFileSizeInMo": { "alias": "maxFileSizeInMo"; "required": false; "isSignal": true; }; "chooseButtonStyleModifier": { "alias": "chooseButtonStyleModifier"; "required": false; "isSignal": true; }; }, { "documentDeleted": "documentDeleted"; }, never, ["*"], true, never>;
2678
2800
  }
2679
2801
 
2680
2802
  declare class FoehnPictureUploadComponent extends FoehnInputComponent<DocumentReference[]> implements OnInit {
@@ -2685,9 +2807,9 @@ declare class FoehnPictureUploadComponent extends FoehnInputComponent<DocumentRe
2685
2807
  readonly resizeToHeight: _angular_core.InputSignal<number>;
2686
2808
  readonly shouldDisplayFileSavedConfirmation: _angular_core.InputSignal<boolean>;
2687
2809
  readonly acceptFormats = ".jpeg,.jpg,.png";
2688
- pictureToCrop: Event | null;
2689
- croppedPictureAsBlob: Blob | null;
2690
- loading: boolean;
2810
+ readonly pictureToCrop: _angular_core.WritableSignal<Event | null>;
2811
+ readonly croppedPictureAsBlob: _angular_core.WritableSignal<Blob | null>;
2812
+ readonly loading: _angular_core.WritableSignal<boolean>;
2691
2813
  protected currentLanguage: string | undefined;
2692
2814
  private readonly uploadService;
2693
2815
  private readonly dictionaryService;
@@ -2714,6 +2836,7 @@ declare abstract class AbstractUploadProgressService {
2714
2836
  }
2715
2837
 
2716
2838
  declare class AbstractFoehnGlobalUploadProgressBarComponent {
2839
+ #private;
2717
2840
  readonly progressBarPanel: _angular_core.Signal<ElementRef<any> | undefined>;
2718
2841
  showProgress: Observable<boolean>;
2719
2842
  protected uploadProgressService: AbstractUploadProgressService;
@@ -2795,8 +2918,8 @@ declare class PendingPaymentComponent {
2795
2918
  declare class SdkEpaymentComponent implements OnInit {
2796
2919
  readonly baseUrl: _angular_core.InputSignal<string>;
2797
2920
  platformFailureMessageDicoKey: string;
2798
- failureModalDisplayed: boolean;
2799
- redirectModalDisplayed: boolean;
2921
+ readonly failureModalDisplayed: _angular_core.WritableSignal<boolean>;
2922
+ readonly redirectModalDisplayed: _angular_core.WritableSignal<boolean>;
2800
2923
  private readonly ePaymentService;
2801
2924
  private readonly route;
2802
2925
  private readonly gesDemService;
@@ -2834,11 +2957,11 @@ declare class EPaymentService {
2834
2957
  }
2835
2958
 
2836
2959
  declare class FoehnConfirmModalComponent implements OnInit {
2837
- isVisible: boolean;
2960
+ readonly isVisible: _angular_core.WritableSignal<boolean>;
2961
+ readonly content: Observable<FoehnConfirmModalContent | null>;
2838
2962
  private readonly confirmModalService;
2839
2963
  private readonly destroyRef;
2840
2964
  constructor();
2841
- get content(): Observable<FoehnConfirmModalContent | null>;
2842
2965
  ngOnInit(): void;
2843
2966
  cancel(): void;
2844
2967
  ok(): void;
@@ -2853,7 +2976,7 @@ declare class FoehnHelpModalComponent {
2853
2976
  readonly hideable: _angular_core.InputSignal<boolean>;
2854
2977
  readonly modalTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
2855
2978
  readonly content: _angular_core.Signal<ElementRef<any> | undefined>;
2856
- private isVisible;
2979
+ private readonly isVisible;
2857
2980
  get isModalVisible(): boolean;
2858
2981
  get currentModalTitle(): string;
2859
2982
  open(): void;
@@ -2880,6 +3003,7 @@ declare class FoehnModalComponent {
2880
3003
  readonly modalTitle: _angular_core.Signal<ElementRef<any> | undefined>;
2881
3004
  readonly specificfooter: _angular_core.Signal<ElementRef<any> | undefined>;
2882
3005
  readonly modalDefaultCloseBtn: _angular_core.Signal<ElementRef<any> | undefined>;
3006
+ private readonly injector;
2883
3007
  private previousIsVisible;
2884
3008
  private readonly visibilityEffect;
2885
3009
  handleKeyboardEvent(event: KeyboardEvent): void;
@@ -2890,12 +3014,12 @@ declare class FoehnModalComponent {
2890
3014
  }
2891
3015
 
2892
3016
  declare class FoehnPageModalComponent implements OnInit {
2893
- wrongPublicModalVisible: boolean;
2894
- formattedPublicsCibles: string[];
3017
+ readonly wrongPublicModalVisible: _angular_core.WritableSignal<boolean>;
3018
+ readonly formattedPublicsCibles: _angular_core.WritableSignal<string[]>;
2895
3019
  private readonly sessionInfo;
2896
3020
  private readonly applicationInfoService;
2897
3021
  private readonly foehnPageModalService;
2898
- private userCategories;
3022
+ private readonly userCategories;
2899
3023
  private publicsCibles;
2900
3024
  ngOnInit(): void;
2901
3025
  getFullLoginUrl(): Observable<string>;
@@ -2958,8 +3082,14 @@ declare class CurrencyHelper {
2958
3082
 
2959
3083
  declare class NumberCurrencyFormatterDirective implements OnInit {
2960
3084
  private readonly host;
2961
- private readonly ngZone;
3085
+ private readonly injector;
2962
3086
  private hasFocus;
3087
+ /**
3088
+ * Model value written by the formatting itself: its change must not be
3089
+ * formatted again, the input already displays the formatted value
3090
+ * (e.g. "-.00" for the model ".00").
3091
+ */
3092
+ private modelSetByFormatting;
2963
3093
  private readonly formattingEffect;
2964
3094
  onBlur(event: FocusEvent): void;
2965
3095
  onFocus(event: FocusEvent): void;
@@ -3057,11 +3187,11 @@ declare class GesdemActionRecoveryLoginComponent implements OnInit {
3057
3187
  readonly redirectTarget: _angular_core.InputSignal<string | undefined>;
3058
3188
  readonly loginForm: _angular_core.Signal<FoehnFormComponent>;
3059
3189
  readonly recaptchaComponent: _angular_core.Signal<SdkRecaptchaComponent | undefined>;
3060
- demandeNotFound: boolean;
3061
- rateLimited: boolean;
3062
- rateLimitCounter: number;
3063
- otpRecipient: string | null | undefined;
3064
- otp: string;
3190
+ readonly demandeNotFound: _angular_core.WritableSignal<boolean>;
3191
+ readonly rateLimited: _angular_core.WritableSignal<boolean>;
3192
+ readonly rateLimitCounter: _angular_core.WritableSignal<number>;
3193
+ readonly otpRecipient: _angular_core.WritableSignal<string | null | undefined>;
3194
+ readonly otp: _angular_core.WritableSignal<string>;
3065
3195
  private readonly recoveryService;
3066
3196
  private readonly growlService;
3067
3197
  private readonly confirmModalService;
@@ -3090,8 +3220,8 @@ declare class GesdemActionRecoveryRegistrationComponent implements OnInit {
3090
3220
  readonly triggerOnPageChange: _angular_core.InputSignal<boolean>;
3091
3221
  readonly modalTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
3092
3222
  readonly form: _angular_core.Signal<FoehnFormComponent | undefined>;
3093
- model: InfoReprise | null;
3094
- mailSent: boolean;
3223
+ readonly model: _angular_core.WritableSignal<InfoReprise | null>;
3224
+ readonly mailSent: _angular_core.WritableSignal<boolean>;
3095
3225
  canContinueLater: Observable<boolean> | undefined;
3096
3226
  isConnectedCyber: Observable<boolean> | undefined;
3097
3227
  currentInfoReprise: Observable<InfoReprise | undefined>;
@@ -3110,13 +3240,18 @@ declare class GesdemActionRecoveryRegistrationComponent implements OnInit {
3110
3240
  private readonly eventsLoggerService;
3111
3241
  private readonly dictionaryService;
3112
3242
  private readonly destroyRef;
3113
- private isVisible;
3243
+ private readonly isVisible;
3114
3244
  constructor();
3115
3245
  get isModalVisible(): boolean;
3116
3246
  get reference(): string;
3117
3247
  ngOnInit(): void;
3118
3248
  saveAndOpenModal(): void;
3119
3249
  openModal(isConnectedCyber: boolean): void;
3250
+ /**
3251
+ * Updates the recovery information entered by the user, without mutating the current value.
3252
+ * @param changes values entered by the user
3253
+ */
3254
+ updateModel(changes: Partial<InfoReprise>): void;
3120
3255
  close(): void;
3121
3256
  sendAndClose(): void;
3122
3257
  updateVisibilityStatus(status: boolean): void;
@@ -3154,6 +3289,7 @@ declare class FoehnListItem {
3154
3289
  }
3155
3290
 
3156
3291
  declare abstract class AbstractListDetailPageComponent<FORM_TYPE extends I18nForm, ITEM_TYPE extends FoehnListItem> extends AbstractPageFromMenuComponent<FORM_TYPE> implements OnInit, OnDestroy {
3292
+ #private;
3157
3293
  list: ITEM_TYPE[];
3158
3294
  itemIndex: number | null;
3159
3295
  protected router: Router;
@@ -3178,6 +3314,11 @@ declare abstract class AbstractListDetailPageComponent<FORM_TYPE extends I18nFor
3178
3314
  }
3179
3315
 
3180
3316
  declare abstract class AbstractMenuPageComponent<T extends I18nForm> extends AbstractPageComponent<T> implements AfterViewInit {
3317
+ #private;
3318
+ /**
3319
+ * @deprecated not used anymore by prestations-ng, which does not depend on zone.js.
3320
+ * Inject `NgZone` in your own component if you really need it.
3321
+ */
3181
3322
  protected ngZone: NgZone;
3182
3323
  ngAfterViewInit(): void;
3183
3324
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AbstractMenuPageComponent<any>, never>;
@@ -3195,37 +3336,35 @@ declare class FoehnErrorPillComponent {
3195
3336
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnErrorPillComponent, "foehn-error-pill", never, { "errorPrefix": { "alias": "errorPrefix"; "required": false; "isSignal": true; }; "incompleteIndicatorOnly": { "alias": "incompleteIndicatorOnly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3196
3337
  }
3197
3338
 
3198
- interface FoehnListItemDescription {
3339
+ interface FoehnListItemDescription<T> {
3199
3340
  label: string;
3200
- hideIfEmpty?(item: FoehnListItem): boolean;
3201
- getFormattedValue(item: FoehnListItem): string;
3341
+ hideIfEmpty?(item: T): boolean;
3342
+ getFormattedValue(item: T): string;
3202
3343
  }
3203
3344
 
3204
- declare class FoehnListSummaryComponent extends FoehnInputComponent<FoehnListItem[]> implements AfterViewInit, OnChanges {
3205
- readonly getListItemTitle: _angular_core.InputSignal<((item: FoehnListItem) => string) | undefined>;
3206
- readonly listItemDescriptions: _angular_core.InputSignal<FoehnListItemDescription[]>;
3345
+ declare class FoehnListSummaryComponent<T extends FoehnListItem> extends FoehnInputComponent<T[]> implements OnChanges {
3346
+ readonly getListItemTitle: _angular_core.InputSignal<((item: T) => string | null | undefined) | undefined>;
3347
+ readonly listItemDescriptions: _angular_core.InputSignal<FoehnListItemDescription<T>[]>;
3207
3348
  readonly showAsTable: _angular_core.InputSignal<boolean>;
3208
3349
  readonly tableActionButtons: _angular_core.Signal<TemplateRef<unknown> | undefined>;
3209
3350
  readonly canAddItems: _angular_core.InputSignal<boolean>;
3210
3351
  readonly itemRemoved: _angular_core.OutputEmitterRef<void>;
3211
3352
  readonly itemEdit: _angular_core.OutputEmitterRef<number | null>;
3212
- listCopyForTable: FoehnListItem[] | null | undefined;
3213
- tableConfiguration: FoehnTableColumnConfiguration<FoehnListItem>[];
3353
+ readonly listCopyForTable: _angular_core.WritableSignal<T[] | null | undefined>;
3354
+ readonly tableConfiguration: _angular_core.Signal<FoehnTableColumnConfiguration<T>[]>;
3214
3355
  tableSort: TableSort;
3215
3356
  private readonly confirmModalService;
3216
- private readonly ngZone;
3217
- trackFoehnListItem: TrackByFunction<FoehnListItem>;
3218
- trackFoehnListItemDescription: TrackByFunction<FoehnListItemDescription>;
3357
+ trackFoehnListItem: TrackByFunction<T>;
3358
+ trackFoehnListItemDescription: TrackByFunction<FoehnListItemDescription<T>>;
3219
3359
  ngOnChanges(changes: SimpleChanges): void;
3220
- ngAfterViewInit(): void;
3221
- showLine(item: FoehnListItem, itemParam: FoehnListItemDescription): boolean;
3360
+ showLine(item: T, itemParam: FoehnListItemDescription<T>): boolean;
3222
3361
  editItem(index?: number | null): void;
3223
3362
  removeItem(index: number): void;
3224
3363
  changeSort(sortEvent: TableSort | undefined): void;
3225
3364
  private sortNow;
3226
3365
  private updateListCopyForTable;
3227
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnListSummaryComponent, never>;
3228
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnListSummaryComponent, "foehn-list-summary", never, { "getListItemTitle": { "alias": "getListItemTitle"; "required": false; "isSignal": true; }; "listItemDescriptions": { "alias": "listItemDescriptions"; "required": false; "isSignal": true; }; "showAsTable": { "alias": "showAsTable"; "required": false; "isSignal": true; }; "canAddItems": { "alias": "canAddItems"; "required": false; "isSignal": true; }; }, { "itemRemoved": "itemRemoved"; "itemEdit": "itemEdit"; }, never, never, true, never>;
3366
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoehnListSummaryComponent<any>, never>;
3367
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoehnListSummaryComponent<any>, "foehn-list-summary", never, { "getListItemTitle": { "alias": "getListItemTitle"; "required": false; "isSignal": true; }; "listItemDescriptions": { "alias": "listItemDescriptions"; "required": false; "isSignal": true; }; "showAsTable": { "alias": "showAsTable"; "required": false; "isSignal": true; }; "canAddItems": { "alias": "canAddItems"; "required": false; "isSignal": true; }; }, { "itemRemoved": "itemRemoved"; "itemEdit": "itemEdit"; }, never, never, true, never>;
3229
3368
  }
3230
3369
 
3231
3370
  declare class FoehnMenuItemComponent {
@@ -3338,7 +3477,7 @@ declare class FocusedDay {
3338
3477
  }
3339
3478
 
3340
3479
  declare class FoehnDatePickerComponent implements OnInit {
3341
- hostId: string | null;
3480
+ readonly hostId: _angular_core.WritableSignal<string | null>;
3342
3481
  readonly daysButtonsElemRef: _angular_core.Signal<readonly ElementRef<any>[]>;
3343
3482
  readonly model: _angular_core.ModelSignal<number[] | null>;
3344
3483
  readonly isDatepickerVisible: _angular_core.ModelSignal<boolean>;
@@ -3354,14 +3493,15 @@ declare class FoehnDatePickerComponent implements OnInit {
3354
3493
  readonly minYearComputed: _angular_core.Signal<number>;
3355
3494
  readonly maxYearComputed: _angular_core.Signal<number>;
3356
3495
  readonly yearListItem: _angular_core.Signal<FormSelectOption[]>;
3357
- weekDays: string[];
3358
- weeks: DayMonth[][];
3359
- selectedDate: dayjs.Dayjs | null;
3496
+ readonly weekDays: _angular_core.WritableSignal<string[]>;
3497
+ readonly weeks: _angular_core.WritableSignal<DayMonth[][]>;
3498
+ readonly selectedDate: _angular_core.WritableSignal<dayjs.Dayjs | null>;
3360
3499
  currentMonthYear: Observable<MonthYear | null>;
3361
3500
  model_: number[] | undefined | null;
3362
- monthListItem: FormSelectOption[];
3501
+ readonly monthListItem: _angular_core.WritableSignal<FormSelectOption[]>;
3363
3502
  private readonly dictionary;
3364
- private readonly ngZone;
3503
+ private readonly injector;
3504
+ private readonly pendingTasks;
3365
3505
  private readonly changeDetector;
3366
3506
  private readonly destroyRef;
3367
3507
  private previousIsVisible;
@@ -3423,7 +3563,7 @@ declare class FoehnDatePickerButtonComponent implements OnInit {
3423
3563
  readonly datepickerTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
3424
3564
  readonly userInput: _angular_core.OutputEmitterRef<number[] | null>;
3425
3565
  model_: number[] | null | undefined;
3426
- private isVisible;
3566
+ private readonly isVisible;
3427
3567
  private readonly modelEffect;
3428
3568
  get isDatepickerVisible(): boolean;
3429
3569
  ngOnInit(): void;
@@ -3579,26 +3719,39 @@ declare class SelectedSlot {
3579
3719
  date: number[] | undefined | null;
3580
3720
  }
3581
3721
 
3582
- declare class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent<SelectedSlot> implements OnChanges {
3722
+ declare class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent<SelectedSlot> {
3583
3723
  readonly DEFAULT_NB_VISIBLE_ELEMENTS = 22;
3584
3724
  readonly calendar: _angular_core.InputSignal<Observable<Calendar> | undefined>;
3585
3725
  readonly currentWeek: _angular_core.InputSignal<DaySlots | undefined>;
3586
3726
  readonly nbVisibleElements: _angular_core.InputSignal<number | null | undefined>;
3587
3727
  readonly visibleElementsCount: _angular_core.Signal<number>;
3588
3728
  readonly timeSlotButtonsElemRef: _angular_core.Signal<readonly ElementRef<any>[]>;
3589
- selectedTimeSlot: string | null;
3590
- timeSlots: string[];
3591
- isClosed: boolean;
3592
- timeslotRemaining: number;
3593
- timeInputValue: string | undefined | null;
3594
- canClose: boolean;
3729
+ readonly selectedTimeSlot: _angular_core.WritableSignal<string | null>;
3730
+ readonly timeInputValue: _angular_core.WritableSignal<string | null | undefined>;
3731
+ /**
3732
+ * TRUE when only the first visibleElementsCount() time slots are displayed.
3733
+ * Closed again when the time slots change, unless the selected slot would be hidden.
3734
+ */
3735
+ readonly isClosed: _angular_core.WritableSignal<boolean>;
3736
+ readonly timeSlots: _angular_core.Signal<string[]>;
3737
+ readonly timeslotRemaining: _angular_core.Signal<number>;
3738
+ /**
3739
+ * FALSE when closing the panel would hide the selected slot.
3740
+ */
3741
+ readonly canClose: _angular_core.Signal<boolean>;
3595
3742
  private readonly dictionaryService;
3596
- private dayInputValue;
3743
+ private readonly dayInputValue;
3597
3744
  private keyboardNavigationAllowed;
3598
3745
  private currentActiveElement;
3599
- private hasSelectedSlotInPanel;
3600
- constructor();
3601
- ngOnChanges(changes: SimpleChanges): void;
3746
+ /**
3747
+ * Index of the selected slot in the time slots of the day, -1 when it is not in this panel.
3748
+ */
3749
+ private readonly selectedSlotIndex;
3750
+ private readonly hasSelectedSlotInPanel;
3751
+ /**
3752
+ * TRUE when the selected slot is in this panel but not displayed while it is closed.
3753
+ */
3754
+ private readonly isSelectedSlotHidden;
3602
3755
  handleKeyboardDownEvent(event: KeyboardEvent): void;
3603
3756
  focus(): void;
3604
3757
  capitalCaseFirstLetter(s: string | null | undefined): string;
@@ -3606,6 +3759,9 @@ declare class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent<Sele
3606
3759
  togglePanel(): void;
3607
3760
  onModelChange(value: SelectedSlot | null): void;
3608
3761
  getTimeInputValue(s: string): string;
3762
+ /**
3763
+ * Opens the panel when the selected slot would be hidden.
3764
+ */
3609
3765
  searchTimeValueInTimeSlot(): void;
3610
3766
  onTimeFocusin(): void;
3611
3767
  onTimeFocusout(): void;
@@ -3613,7 +3769,6 @@ declare class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent<Sele
3613
3769
  getButtonTimeSlotAriaLabel(day: string | undefined | null, timeSlot: string): string;
3614
3770
  getTimeSlotTabIndex(timeSlot: string, index: number): number;
3615
3771
  cleanIdForQuerySelector(s: string): string;
3616
- private sliceNbVisibleElements;
3617
3772
  private getValidValue;
3618
3773
  private onKeyDownInner;
3619
3774
  private focusTimeSlot;
@@ -3627,7 +3782,7 @@ declare class FoehnAgendaComponent extends FoehnInputComponent<SelectedSlot> {
3627
3782
  readonly paginationChange: _angular_core.OutputEmitterRef<PaginationWeek>;
3628
3783
  readonly readableSelectedTimeSlot: _angular_core.Signal<string>;
3629
3784
  readonly timeSlotPanelsElemRef: _angular_core.Signal<readonly FoehnAgendaTimeslotPanelComponent[]>;
3630
- srAnnouncements: string;
3785
+ readonly srAnnouncements: _angular_core.WritableSignal<string>;
3631
3786
  private readonly dictionaryService;
3632
3787
  private srAnnouncementClearTimer;
3633
3788
  private readonly SR_ANNOUNCEMENT_CLEAR_TIMEOUT_INTERVAL_MS;
@@ -3672,14 +3827,14 @@ declare class FoehnDropdownMenuComponent implements OnInit {
3672
3827
  readonly selectedFocusList: _angular_core.Signal<readonly ElementRef<any>[]>;
3673
3828
  readonly buttonTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
3674
3829
  readonly entryPoint: _angular_core.Signal<ElementRef<any> | undefined>;
3675
- isDropdownVisible: boolean;
3830
+ readonly isDropdownVisible: _angular_core.WritableSignal<boolean>;
3676
3831
  closeDropdownTimer: ReturnType<typeof setTimeout> | undefined;
3677
- popupPosition: Position;
3832
+ readonly popupPosition: _angular_core.WritableSignal<Position>;
3678
3833
  private readonly router;
3834
+ private readonly injector;
3679
3835
  private currentItemGlobalIndex;
3680
3836
  private shouldFocusEntryPointAfterOpen;
3681
3837
  private readonly selectedFocusListEffect;
3682
- constructor();
3683
3838
  handleKeyboardUpEvent(event: KeyboardEvent): void;
3684
3839
  handleKeyboardDownEvent(event: KeyboardEvent): void;
3685
3840
  ngOnInit(): void;
@@ -3752,6 +3907,7 @@ interface BrowserInfo {
3752
3907
  }
3753
3908
  declare class SdkLogsService {
3754
3909
  private readonly http;
3910
+ private readonly destroyRef;
3755
3911
  private cachedBrowserInfo;
3756
3912
  addLog(message: string, logLevel: SdkLogLevel): void;
3757
3913
  addLogWithError(message: string, logLevel: SdkLogLevel, error: unknown): void;
@@ -3761,5 +3917,5 @@ declare class SdkLogsService {
3761
3917
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<SdkLogsService>;
3762
3918
  }
3763
3919
 
3764
- export { APP_INFO_API_URL, AbstractFoehnUploaderComponent, AbstractListDetailPageComponent, AbstractMenuPageComponent, AbstractPageComponent, AbstractPageFromMenuComponent, ActionStatut, Address, AddressTypeLight, ApplicationInfo, ApplicationInfoService, BAD_PARAMS_HELP_TEXT, BoDocumentError, BoDocumentsWithErrors, BoMultiUploadService, Breadcrumb, BreadcrumbEventService, BreadcrumbItem, CAPTCHA_ERROR_NAME, CURRENCY_REGEXP, Calendar, Canton, Captcha, ChunkLoadErrorHandler, Configuration, Country, CurrencyHelper, CurrentWeek, DECIMALS_SEPARATOR, DEFAULT_INTERNATIONAL_FIX_AND_MOBILE, DEFAULT_INTERNATIONAL_FIX_ONLY, DEFAULT_INTERNATIONAL_MOBILE_ONLY, DEFAULT_PREFIX, DEFAULT_SWISS_FIX_AND_MOBILE, DEFAULT_SWISS_FIX_ONLY, DEFAULT_SWISS_MOBILE_ONLY, DICTIONARY_BASE_URL, DateHelper, DatePickerHelper, DatePickerNavigationHelper, DayMonth, DaySlots, DemandeExpirationService, DemandeHelper, DisplayCurrencyPipe, DisplayDatePipe, District, Document, DocumentError, DocumentReference, DocumentReferenceWithFile, DocumentsWithErrors, DropdownMenuGroup, DropdownMenuItem, EPaymentService, EtapeInfo, FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX, FORM_SUPPORT_CYBER_TITLE_FALLBACK, FocusedDay, FoehnAbbrComponent, FoehnAgendaComponent, FoehnAgendaNavigationComponent, FoehnAgendaTimeslotPanelComponent, FoehnAutocompleteComponent, FoehnBoMultiUploadComponent, FoehnBooleanCheckboxComponent, FoehnBooleanRadioComponent, FoehnBreadcrumbComponent, FoehnCheckableGroupComponent, FoehnCheckboxComponent, FoehnConfirmModalComponent, FoehnConfirmModalContent, FoehnConfirmModalService, FoehnDateComponent, FoehnDatePickerButtonComponent, FoehnDatePickerComponent, FoehnDateTimeComponent, FoehnDecisionElectroniqueComponent, FoehnDisplayAddressComponent, FoehnDropdownMenuComponent, FoehnErrorPillComponent, FoehnFeedbackNotificationComponent, FoehnFormComponent, FoehnGlobalUploadProgressBarComponent, FoehnHeaderComponent, FoehnHelpModalComponent, FoehnIconCalendarComponent, FoehnIconCheckComponent, FoehnIconCheckSquareOComponent, FoehnIconChevronDownComponent, FoehnIconChevronLeftComponent, FoehnIconChevronRightComponent, FoehnIconChevronUpComponent, FoehnIconClockComponent, FoehnIconCommentDotsComponent, FoehnIconEditComponent, FoehnIconExternalLinkAltComponent, FoehnIconFilePdfComponent, FoehnIconInfoCircleComponent, FoehnIconLockComponent, FoehnIconMapMarkerComponent, FoehnIconMinusCircleComponent, FoehnIconPencilComponent, FoehnIconPlusCircleComponent, FoehnIconPlusSquareComponent, FoehnIconSearchComponent, FoehnIconTimesComponent, FoehnIconTrashAltComponent, FoehnIconUnlockAltComponent, FoehnIconUserComponent, FoehnInputAddressComponent, FoehnInputComponent, FoehnInputEmailComponent, FoehnInputForeignLocalityComponent, FoehnInputForeignStreetComponent, FoehnInputHiddenComponent, FoehnInputNav13Component, FoehnInputNumberComponent, FoehnInputPasswordComponent, FoehnInputPhoneComponent, FoehnInputPrefixedTextComponent, FoehnInputStringComponent, FoehnInputTextComponent, FoehnInputTextareaComponent, FoehnListComponent, FoehnListItem, FoehnListSummaryComponent, FoehnMenuItemComponent, FoehnMenuItemTransmitComponent, FoehnModalComponent, FoehnMultiUploadComponent, FoehnMultiselectAutocompleteComponent, FoehnNavigationComponent, FoehnNavigationService, FoehnNotfoundComponent, FoehnPageComponent, FoehnPageCounterComponent, FoehnPageExpirationTimerComponent, FoehnPageModalComponent, FoehnPageService, FoehnPictureUploadComponent, FoehnRadioComponent, FoehnRecapSectionComponent, FoehnRemainingAlertsSummaryComponent, FoehnSelectComponent, FoehnSimpleNavigationComponent, FoehnSkipLinkComponent, FoehnStatusProgressBarComponent, FoehnTableColumnConfiguration, FoehnTableComponent, FoehnTablePageChangeEvent, FoehnTimeComponent, FoehnTransmitWaitingModalComponent, FoehnTransmitWaitingModalService, FoehnUploadProgressBarComponent, FoehnUserConnectedAsComponent, FoehnValidationAlertSummaryComponent, FoehnValidationAlertsComponent, FooterLink, FormMetadata, FormPostResponse, FormSelectOption, FormatAvsPipe, FormatIdePipe, GESDEM_MAX_DATA_LENGTH, GesdemActionRecoveryLoginComponent, GesdemActionRecoveryRegistrationComponent, GesdemConfirmationComponent, GesdemErrorComponent, GesdemEventService, GesdemHandlerService, GesdemStatutUtils, GlobalUploadProgressService, GrowlBrokerService, GrowlMessage, GrowlType, HTTP_LOADER_FILTERED_URL, I18nForm, IAM_ACV_OIDC_REDIRECT_LOCATION_REGEX, IAM_ACV_REDIRECT_LOCATION_REGEX, IbanFormatterDirective, IdeFormatterDirective, IntervalHelper, LineBreakAsHtmlPipe, Locality, MonthYear, MultiUploadService, Municipality, NDCFormatterDirective, NEVER_CONNECTED, NavigationDirection, NumberCurrencyFormatterDirective, OIDC_ENABLED, ObjectHelper, PORTAIL_BASE_URL_INT, PORTAIL_BASE_URL_PROD, PORTAIL_BASE_URL_VAL, PageChangeEvent, PageUploadLimitService, PaginationWeek, PendingFiles, PendingPaymentComponent, PendingUploadService, PlaceOfOrigin, Portail, PostalLocality, Preferences, RECAPTCHA_API_URL, RecaptchaService, RedirectComponent, RegisterNgModelService, RowElement, SESSION_INFO_API_URL, SWISS_ISO_ID, ScrollHelper, SdkDictionaryPipe, SdkDictionaryService, SdkEpaymentComponent, SdkEvent, SdkEventType, SdkEventsLoggerService, SdkLog, SdkLogLevel, SdkLogsService, SdkRecaptchaComponent, SdkStatisticsService, SelectedSlot, Session, SessionInfo, SessionInfoData, SessionInfoWithApplicationService, Street, StreetNumber, StringHelper, THOUSANDS_SEPARATOR, TRANSMIT_WAITING_MODAL_DELAY_IN_MILLISECONDS, TableSort, UploadProgress, UploadProgressService, UploaderHelper, ValidationHandlerService, formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven, gesdemLoaderGuard, providePrestationsNgCore, replaceAll };
3765
- export type { BreadcrumbConfiguration, BrowserInfo, ComponentError, DictionaryType, FoehnListItemDescription, FoehnRecapSection, FoehnRecapSectionElement, FoehnRecapSectionElementValueType, FormError, HasCustomErrors, HelpModal, Image, Language, PlaceholderType };
3920
+ export { APP_INFO_API_URL, AbstractFoehnUploaderComponent, AbstractListDetailPageComponent, AbstractMenuPageComponent, AbstractPageComponent, AbstractPageFromMenuComponent, ActionStatut, Address, AddressTypeLight, ApplicationInfo, ApplicationInfoService, BAD_PARAMS_HELP_TEXT, BoDocumentError, BoDocumentsWithErrors, BoMultiUploadService, Breadcrumb, BreadcrumbEventService, BreadcrumbItem, CAPTCHA_ERROR_NAME, CURRENCY_REGEXP, Calendar, Canton, Captcha, ChunkLoadErrorHandler, Configuration, Country, CurrencyHelper, CurrentWeek, DECIMALS_SEPARATOR, DEFAULT_INTERNATIONAL_FIX_AND_MOBILE, DEFAULT_INTERNATIONAL_FIX_ONLY, DEFAULT_INTERNATIONAL_MOBILE_ONLY, DEFAULT_PREFIX, DEFAULT_SWISS_FIX_AND_MOBILE, DEFAULT_SWISS_FIX_ONLY, DEFAULT_SWISS_MOBILE_ONLY, DICTIONARY_BASE_URL, DateHelper, DatePickerHelper, DatePickerNavigationHelper, DayMonth, DaySlots, DemandeExpirationService, DemandeHelper, DisplayCurrencyPipe, DisplayDatePipe, District, Document, DocumentError, DocumentReference, DocumentReferenceWithFile, DocumentsWithErrors, DropdownMenuGroup, DropdownMenuItem, EPaymentService, EtapeInfo, FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX, FORM_SUPPORT_CYBER_TITLE_FALLBACK, FocusedDay, FoehnAbbrComponent, FoehnAgendaComponent, FoehnAgendaNavigationComponent, FoehnAgendaTimeslotPanelComponent, FoehnAutocompleteComponent, FoehnBoMultiUploadComponent, FoehnBooleanCheckboxComponent, FoehnBooleanRadioComponent, FoehnBreadcrumbComponent, FoehnCheckableGroupComponent, FoehnCheckboxComponent, FoehnConfirmModalComponent, FoehnConfirmModalContent, FoehnConfirmModalService, FoehnDateComponent, FoehnDatePickerButtonComponent, FoehnDatePickerComponent, FoehnDateTimeComponent, FoehnDecisionElectroniqueComponent, FoehnDisplayAddressComponent, FoehnDropdownMenuComponent, FoehnErrorPillComponent, FoehnFeedbackNotificationComponent, FoehnFormComponent, FoehnGlobalUploadProgressBarComponent, FoehnHeaderComponent, FoehnHelpModalComponent, FoehnIconCalendarComponent, FoehnIconCheckComponent, FoehnIconCheckSquareOComponent, FoehnIconChevronDownComponent, FoehnIconChevronLeftComponent, FoehnIconChevronRightComponent, FoehnIconChevronUpComponent, FoehnIconClockComponent, FoehnIconCommentDotsComponent, FoehnIconEditComponent, FoehnIconExternalLinkAltComponent, FoehnIconFilePdfComponent, FoehnIconInfoCircleComponent, FoehnIconLockComponent, FoehnIconMapMarkerComponent, FoehnIconMinusCircleComponent, FoehnIconPencilComponent, FoehnIconPlusCircleComponent, FoehnIconPlusSquareComponent, FoehnIconSearchComponent, FoehnIconTimesComponent, FoehnIconTrashAltComponent, FoehnIconUnlockAltComponent, FoehnIconUserComponent, FoehnInputAddressComponent, FoehnInputComponent, FoehnInputEmailComponent, FoehnInputForeignLocalityComponent, FoehnInputForeignStreetComponent, FoehnInputHiddenComponent, FoehnInputNav13Component, FoehnInputNumberComponent, FoehnInputPasswordComponent, FoehnInputPhoneComponent, FoehnInputPrefixedTextComponent, FoehnInputStringComponent, FoehnInputTextComponent, FoehnInputTextareaComponent, FoehnListComponent, FoehnListItem, FoehnListSummaryComponent, FoehnMenuItemComponent, FoehnMenuItemTransmitComponent, FoehnModalComponent, FoehnMultiUploadComponent, FoehnMultiselectAutocompleteComponent, FoehnNavigationComponent, FoehnNavigationService, FoehnNotfoundComponent, FoehnPageComponent, FoehnPageCounterComponent, FoehnPageExpirationTimerComponent, FoehnPageModalComponent, FoehnPageService, FoehnPictureUploadComponent, FoehnRadioComponent, FoehnRecapSectionComponent, FoehnRemainingAlertsSummaryComponent, FoehnSelectComponent, FoehnSimpleNavigationComponent, FoehnSkipLinkComponent, FoehnStatusProgressBarComponent, FoehnTableColumnConfiguration, FoehnTableComponent, FoehnTablePageChangeEvent, FoehnTimeComponent, FoehnTransmitWaitingModalComponent, FoehnTransmitWaitingModalService, FoehnUploadProgressBarComponent, FoehnUserConnectedAsComponent, FoehnValidationAlertSummaryComponent, FoehnValidationAlertsComponent, FooterLink, FormMetadata, FormPostResponse, FormSelectOption, FormatAvsPipe, FormatIdePipe, GESDEM_MAX_DATA_LENGTH, GesdemActionRecoveryLoginComponent, GesdemActionRecoveryRegistrationComponent, GesdemConfirmationComponent, GesdemErrorComponent, GesdemEventService, GesdemHandlerService, GesdemStatutUtils, GlobalUploadProgressService, GrowlBrokerService, GrowlMessage, GrowlType, HTTP_LOADER_FILTERED_URL, I18nForm, IAM_ACV_OIDC_REDIRECT_LOCATION_REGEX, IAM_ACV_REDIRECT_LOCATION_REGEX, IbanFormatterDirective, IdeFormatterDirective, IntervalHelper, LineBreakAsHtmlPipe, Locality, MonthYear, MultiUploadService, Municipality, NDCFormatterDirective, NEVER_CONNECTED, NavigationDirection, NumberCurrencyFormatterDirective, OIDC_ENABLED, ObjectHelper, PORTAIL_BASE_URL_INT, PORTAIL_BASE_URL_PROD, PORTAIL_BASE_URL_VAL, PageChangeEvent, PageUploadLimitService, PaginationWeek, PendingFiles, PendingPaymentComponent, PendingUploadService, PlaceOfOrigin, Portail, PostalLocality, Preferences, RECAPTCHA_API_URL, RecaptchaService, RedirectComponent, RegisterNgModelService, RowElement, SESSION_INFO_API_URL, SWISS_ISO_ID, ScrollHelper, SdkDictionaryPipe, SdkDictionaryService, SdkEpaymentComponent, SdkEvent, SdkEventType, SdkEventsLoggerService, SdkLog, SdkLogLevel, SdkLogsService, SdkRecaptchaComponent, SdkStatisticsService, SelectedSlot, Session, SessionInfo, SessionInfoData, SessionInfoWithApplicationService, Street, StreetNumber, StringHelper, THOUSANDS_SEPARATOR, TRANSMIT_WAITING_MODAL_DELAY_IN_MILLISECONDS, TableSort, UploadProgress, UploadProgressService, UploaderHelper, ValidationHandlerService, formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven, gesdemLoaderGuard, getSafeFileNameForErrorMessage, providePrestationsNgCore, replaceAll, splitDocumentChanges };
3921
+ export type { BreadcrumbConfiguration, BrowserInfo, ComponentError, DictionaryType, DocumentChanges, FoehnListItemDescription, FoehnRecapSection, FoehnRecapSectionElement, FoehnRecapSectionElementValueType, FormError, HasCustomErrors, HelpModal, Image, Language, PlaceholderType, UploaderErrorLimits };