@dsivd/prestations-ng 15.1.1 → 15.1.4-beta1

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.
@@ -1477,7 +1477,15 @@ const DEFAULT_DICTIONARY = {
1477
1477
  'foehn-agenda-navigation.next-week': 'Semaine suivante',
1478
1478
  'foehn-agenda-navigation.next-week-sr-only': 'Semaine suivante : {nextWeek}',
1479
1479
  'foehn-agenda-navigation.nav.aria-label': 'Changer de semaine',
1480
- 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date': 'Semaine du {selectedDate} sélectionnée'
1480
+ 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date': 'Semaine du {selectedDate} sélectionnée',
1481
+ 'gesdem-error.text.has-reference': 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous',
1482
+ 'gesdem-error.link.has-reference': 'Reprendre ma demande',
1483
+ 'gesdem-error.text.has-no-reference': 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous',
1484
+ 'gesdem-error.link.has-no-reference': 'Recommencer',
1485
+ 'gesdem-error.text.pending-payment': '<p>Un problème est survenu lors de la transmission de votre demande.</p>' +
1486
+ '<p><strong>Merci de ne pas refaire une nouvelle demande tout de suite.</strong></p>' +
1487
+ "<p>Sans confirmation de la transmission de votre demande dans un délai d'un jour, nous vous prions de contacter le support " +
1488
+ 'en mentionnant la référence <strong>{reference}.</strong></p>'
1481
1489
  };
1482
1490
 
1483
1491
  const DICTIONARY_BASE_URL = 'api/dictionary';
@@ -3322,10 +3330,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
3322
3330
  }] } });
3323
3331
 
3324
3332
  class GesdemErrorComponent {
3325
- constructor(activatedRoute, navigation, gesdemService, foehnPageService, supportAlertService) {
3333
+ constructor(activatedRoute, navigation, gesdemService, gesdemEventService, foehnPageService, supportAlertService) {
3326
3334
  this.activatedRoute = activatedRoute;
3327
3335
  this.navigation = navigation;
3328
3336
  this.gesdemService = gesdemService;
3337
+ this.gesdemEventService = gesdemEventService;
3329
3338
  this.foehnPageService = foehnPageService;
3330
3339
  this.supportAlertService = supportAlertService;
3331
3340
  this.setPageTitle = true;
@@ -3333,9 +3342,22 @@ class GesdemErrorComponent {
3333
3342
  const route = FoehnNavigationService.getRootRouteRecursive(activatedRoute.snapshot);
3334
3343
  navigation.initRoute(route);
3335
3344
  this.link = this.getBasePath();
3345
+ this.reference = this.activatedRoute.snapshot.params.reference;
3346
+ if (!this.reference?.length) {
3347
+ this.isPendingPayment = of(false);
3348
+ }
3349
+ else {
3350
+ this.isPendingPayment = this.gesdemService
3351
+ .retrieve(this.reference)
3352
+ .pipe(map(() => ActionStatut[this.gesdemService.lastResponse.meta
3353
+ .statut]), tap(statut => {
3354
+ if (GesdemStatutUtils.isFinal(statut)) {
3355
+ this.navigation.last();
3356
+ }
3357
+ }), map(statut => statut === ActionStatut.PENDING_PAYMENT), catchError(() => of(false)));
3358
+ }
3336
3359
  }
3337
3360
  ngOnInit() {
3338
- this.reference = this.activatedRoute.snapshot.params.reference;
3339
3361
  if (this.reference) {
3340
3362
  const firstPage = this.getFirstPage();
3341
3363
  if (this.gesdemService.prefix) {
@@ -3366,12 +3388,12 @@ class GesdemErrorComponent {
3366
3388
  return '/';
3367
3389
  }
3368
3390
  }
3369
- GesdemErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: FoehnNavigationService }, { token: GesdemHandlerService }, { token: FoehnPageService }, { token: SupportAlertService }], target: i0.ɵɵFactoryTarget.Component });
3370
- GesdemErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: GesdemErrorComponent, selector: "gesdem-error", inputs: { setPageTitle: "setPageTitle" }, ngImport: i0, template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <p class=\"card-text vd-card-text\">\n {{\n !!reference\n ? 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous'\n : 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous'\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n !!reference\n ? 'Reprendre ma demande'\n : 'Recommencer'\n }}\n </a>\n </li>\n </ul>\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n", components: [{ type: FoehnDebugSummaryComponent, selector: "foehn-debug-summary" }, { type: GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: ["reference", "redirectTarget"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3391
+ GesdemErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: FoehnNavigationService }, { token: GesdemHandlerService }, { token: GesdemEventService }, { token: FoehnPageService }, { token: SupportAlertService }], target: i0.ɵɵFactoryTarget.Component });
3392
+ GesdemErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: GesdemErrorComponent, selector: "gesdem-error", inputs: { setPageTitle: "setPageTitle" }, ngImport: i0, template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary: { reference: reference }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n", components: [{ type: FoehnDebugSummaryComponent, selector: "foehn-debug-summary" }, { type: GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: ["reference", "redirectTarget"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe, "fromDictionary": SdkDictionaryPipe } });
3371
3393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorComponent, decorators: [{
3372
3394
  type: Component,
3373
- args: [{ selector: 'gesdem-error', template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <p class=\"card-text vd-card-text\">\n {{\n !!reference\n ? 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous'\n : 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous'\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n !!reference\n ? 'Reprendre ma demande'\n : 'Recommencer'\n }}\n </a>\n </li>\n </ul>\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n" }]
3374
- }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: FoehnNavigationService }, { type: GesdemHandlerService }, { type: FoehnPageService }, { type: SupportAlertService }]; }, propDecorators: { setPageTitle: [{
3395
+ args: [{ selector: 'gesdem-error', template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary: { reference: reference }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n" }]
3396
+ }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: FoehnNavigationService }, { type: GesdemHandlerService }, { type: GesdemEventService }, { type: FoehnPageService }, { type: SupportAlertService }]; }, propDecorators: { setPageTitle: [{
3375
3397
  type: Input
3376
3398
  }] } });
3377
3399
 
@@ -3446,7 +3468,8 @@ class GesdemLoaderGuard {
3446
3468
  */
3447
3469
  if (next.firstChild &&
3448
3470
  next.firstChild.routeConfig &&
3449
- next.firstChild.routeConfig.path === 'erreur') {
3471
+ (next.firstChild.routeConfig.path === 'erreur' ||
3472
+ next.firstChild.routeConfig.path === '404')) {
3450
3473
  return of(true);
3451
3474
  }
3452
3475
  return this.gesdemService
@@ -7518,10 +7541,10 @@ class FoehnDatePickerComponent {
7518
7541
  }
7519
7542
  }
7520
7543
  FoehnDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnDatePickerComponent, deps: [{ token: SdkDictionaryService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
7521
- FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { id: "id", name: "name", minYear: "minYear", maxYear: "maxYear", minDate: "minDate", maxDate: "maxDate", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"], components: [{ type: FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { type: FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple"] }, { type: FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { type: FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": SdkDictionaryPipe, "async": i3.AsyncPipe } });
7544
+ FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { id: "id", name: "name", minYear: "minYear", maxYear: "maxYear", minDate: "minDate", maxDate: "maxDate", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"], components: [{ type: FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { type: FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple"] }, { type: FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { type: FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": SdkDictionaryPipe, "async": i3.AsyncPipe } });
7522
7545
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnDatePickerComponent, decorators: [{
7523
7546
  type: Component,
7524
- args: [{ selector: 'foehn-date-picker', template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"] }]
7547
+ args: [{ selector: 'foehn-date-picker', template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"] }]
7525
7548
  }], ctorParameters: function () { return [{ type: SdkDictionaryService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
7526
7549
  type: Input
7527
7550
  }], name: [{
@@ -9088,7 +9111,13 @@ class FoehnInputNav13Component extends FoehnInputStringComponent {
9088
9111
  ?.replace(/ /g, '');
9089
9112
  const isPastedValueMoreThanOneAvsBlock = pastedValue?.length > 4;
9090
9113
  if (isPastedValueMoreThanOneAvsBlock) {
9091
- this.onModelChange(pastedValue);
9114
+ let valueToPaste = pastedValue;
9115
+ if (!pastedValue.startsWith(this.PREFIX_NAVS)) {
9116
+ valueToPaste = pastedValue.includes('.')
9117
+ ? `${this.PREFIX_NAVS}.${pastedValue}`
9118
+ : this.PREFIX_NAVS + pastedValue;
9119
+ }
9120
+ this.onModelChange(valueToPaste);
9092
9121
  this.handleUserInput();
9093
9122
  event.preventDefault();
9094
9123
  }
@@ -10300,12 +10329,14 @@ GesdemErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versio
10300
10329
  GesdemErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorModule, declarations: [GesdemErrorComponent], imports: [CommonModule,
10301
10330
  RouterModule,
10302
10331
  GesdemActionRecoveryModule,
10303
- FoehnDebugSummaryComponentModule], exports: [GesdemErrorComponent] });
10332
+ FoehnDebugSummaryComponentModule,
10333
+ SdkDictionaryModule], exports: [GesdemErrorComponent] });
10304
10334
  GesdemErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorModule, imports: [[
10305
10335
  CommonModule,
10306
10336
  RouterModule,
10307
10337
  GesdemActionRecoveryModule,
10308
- FoehnDebugSummaryComponentModule
10338
+ FoehnDebugSummaryComponentModule,
10339
+ SdkDictionaryModule
10309
10340
  ]] });
10310
10341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorModule, decorators: [{
10311
10342
  type: NgModule,
@@ -10314,7 +10345,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
10314
10345
  CommonModule,
10315
10346
  RouterModule,
10316
10347
  GesdemActionRecoveryModule,
10317
- FoehnDebugSummaryComponentModule
10348
+ FoehnDebugSummaryComponentModule,
10349
+ SdkDictionaryModule
10318
10350
  ],
10319
10351
  declarations: [GesdemErrorComponent],
10320
10352
  exports: [GesdemErrorComponent]
@@ -12225,6 +12257,7 @@ class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
12225
12257
  super();
12226
12258
  this.dictionaryService = dictionaryService;
12227
12259
  this.isClosed = true;
12260
+ this.canClose = true;
12228
12261
  this.DEFAULT_NB_VISISBLE_ELEMENTS = 22;
12229
12262
  this.keyboardNavigationAllowed = false;
12230
12263
  this.hasSelectedSlotInPanel = false;
@@ -12315,6 +12348,7 @@ class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
12315
12348
  else {
12316
12349
  this.hasSelectedSlotInPanel = false;
12317
12350
  }
12351
+ this.canClose = positionValue < this.nbVisibleElements;
12318
12352
  }
12319
12353
  onTimeFocusin() {
12320
12354
  this.keyboardNavigationAllowed = true;
@@ -12430,7 +12464,7 @@ FoehnAgendaTimeslotPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
12430
12464
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
12431
12465
  multi: true
12432
12466
  }
12433
- ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe, "fromDictionary": SdkDictionaryPipe } });
12467
+ ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe, "fromDictionary": SdkDictionaryPipe } });
12434
12468
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaTimeslotPanelComponent, decorators: [{
12435
12469
  type: Component,
12436
12470
  args: [{ selector: 'foehn-agenda-timeslot-panel', providers: [
@@ -12439,7 +12473,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
12439
12473
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
12440
12474
  multi: true
12441
12475
  }
12442
- ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
12476
+ ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
12443
12477
  }], ctorParameters: function () { return [{ type: SdkDictionaryService }]; }, propDecorators: { timeSlotButtonsElemRef: [{
12444
12478
  type: ViewChildren,
12445
12479
  args: ['timeSlotButtonsElemRef']
@@ -12512,13 +12546,13 @@ class FoehnAgendaComponent extends FoehnInputComponent {
12512
12546
  }
12513
12547
  }
12514
12548
  FoehnAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaComponent, deps: [{ token: SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component });
12515
- FoehnAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: FoehnAgendaComponent, selector: "foehn-agenda", inputs: { calendar: "calendar", nbVisibleElements: "nbVisibleElements", minDate: "minDate", maxDate: "maxDate" }, outputs: { paginationChange: "paginationChange" }, providers: [
12549
+ FoehnAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: FoehnAgendaComponent, selector: "foehn-agenda", inputs: { calendar: "calendar", nbVisibleElements: "nbVisibleElements" }, outputs: { paginationChange: "paginationChange" }, providers: [
12516
12550
  {
12517
12551
  provide: FoehnInputComponent,
12518
12552
  useExisting: forwardRef(() => FoehnAgendaComponent),
12519
12553
  multi: true
12520
12554
  }
12521
- ], viewQueries: [{ propertyName: "timeSlotPanelsElemRef", predicate: ["timeSlotPanelElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n", components: [{ type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: ["id", "calendar", "isSrOnly", "minDate", "maxDate"], outputs: ["paginationChange"] }, { type: FoehnAgendaTimeslotPanelComponent, selector: "foehn-agenda-timeslot-panel", inputs: ["calendar", "nbVisibleElements", "currentWeek"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": SdkDictionaryPipe, "async": i3.AsyncPipe } });
12555
+ ], viewQueries: [{ propertyName: "timeSlotPanelsElemRef", predicate: ["timeSlotPanelElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n", components: [{ type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: ["id", "calendar", "isSrOnly", "minDate", "maxDate"], outputs: ["paginationChange"] }, { type: FoehnAgendaTimeslotPanelComponent, selector: "foehn-agenda-timeslot-panel", inputs: ["calendar", "nbVisibleElements", "currentWeek"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": SdkDictionaryPipe, "async": i3.AsyncPipe } });
12522
12556
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaComponent, decorators: [{
12523
12557
  type: Component,
12524
12558
  args: [{ selector: 'foehn-agenda', providers: [
@@ -12527,15 +12561,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
12527
12561
  useExisting: forwardRef(() => FoehnAgendaComponent),
12528
12562
  multi: true
12529
12563
  }
12530
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n" }]
12564
+ ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n" }]
12531
12565
  }], ctorParameters: function () { return [{ type: SdkDictionaryService }]; }, propDecorators: { calendar: [{
12532
12566
  type: Input
12533
12567
  }], nbVisibleElements: [{
12534
12568
  type: Input
12535
- }], minDate: [{
12536
- type: Input
12537
- }], maxDate: [{
12538
- type: Input
12539
12569
  }], paginationChange: [{
12540
12570
  type: Output
12541
12571
  }], timeSlotPanelsElemRef: [{