@dsivd/prestations-ng 18.0.2 → 18.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,42 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## [18.0.3]
10
+
11
+ ### Added
12
+
13
+ - [default-dictionary.ts](projects/prestations-ng/src/sdk-dictionary/default-dictionary.ts)
14
+ - added key `foehn-uploader.unknown-error-message` (default value: `Impossible de transmettre le fichier`)
15
+
16
+ ### Updated
17
+
18
+ - [uploader.helper.ts](projects/prestations-ng/src/foehn-upload/uploader.helper.ts)
19
+
20
+ - `getDefaultUnknownErrorMessage` now uses new dictionary key `foehn-uploader.unknown-error-message`
21
+
22
+ - [gesdem-confirmation.component.ts](projects/prestations-ng/src/gesdem-confirmation/gesdem-confirmation.component.ts)
23
+ - allow to override connected success label for first step
24
+ - via `@Input() successLabelDicoKeyFirstStep`
25
+ - via route data : `successLabelDicoKeyFirstStep`
26
+ - default value for label is `gesdem-confirmation.success-label` from dictionary
27
+ - allow to override connected success label for additional steps
28
+ - via `@Input() successLabelDicoAdditionalSteps`
29
+ - via route data : `successLabelDicoAdditionalSteps`
30
+ - default value for label is `gesdem-confirmation.next-step.success-label` from dictionary
31
+
32
+ ### Fixed
33
+
34
+ - [foehn-select.component.ts](projects/prestations-ng/src/foehn-checkables/foehn-select.component.ts)
35
+ - [foehn-radio.component.ts](projects/prestations-ng/src/foehn-checkables/foehn-radio.component.ts)
36
+ - [foehn-checkbox.component.ts](projects/prestations-ng/src/foehn-checkables/foehn-checkbox.component.ts)
37
+ - [foehn-input-date.component.ts](projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.ts)
38
+
39
+ - fixed `disabled`: now checks if all elements are disabled
40
+
41
+ - [foehn-form.component.ts](projects/prestations-ng/src/foehn-form/foehn-form.component.ts)
42
+ - fixed `focusFirst()`: now checks if focusable element is not `disabled` or `hidden`
43
+ - fixed `focusFirst()`: now only takes lowest level components (no parents having subComponents)
44
+
9
45
  ## [18.0.2]
10
46
 
11
47
  ### Fixed
package/UPGRADING_V18.md CHANGED
@@ -419,6 +419,17 @@ You can use this openrewrite recipe to simplify the migration (run with java 11)
419
419
  mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-spring:RELEASE -Drewrite.activeRecipes=org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_4 -Drewrite.exportDatatables=true -Pnof,noft
420
420
  ```
421
421
 
422
+ Fix application.properties :
423
+
424
+ ```diff
425
+ logging.config=${ch.vd.configDir}/logback-spring.xml
426
+ + # Restore sleuth traces at the same position as in spring boot 2
427
+ + logging.pattern.level=%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]
428
+ + # remove sleuth traces added by spring boot 3
429
+ + logging.pattern.correlation=
430
+ + logging.include-application-name=false
431
+ ```
432
+
422
433
  After that, you should continue based on your current parent :
423
434
 
424
435
  ### SPRING-BOOT-STARTER-PARENT
Binary file
@@ -737,6 +737,13 @@ class FoehnInputComponent {
737
737
  set disabled(value) {
738
738
  this._disabled = value;
739
739
  }
740
+ // eslint-disable-next-line @typescript-eslint/member-ordering
741
+ get hidden() {
742
+ return !!this.hostHidden;
743
+ }
744
+ set hidden(value) {
745
+ this.hostHidden = value ? 'hidden' : null;
746
+ }
740
747
  ngOnInit() {
741
748
  // Ensures that the host has an Id for instrumentalization of the DOM by automated tests.
742
749
  this.hostId = this.buildId();
@@ -1000,7 +1007,7 @@ class FoehnInputComponent {
1000
1007
  }
1001
1008
  }
1002
1009
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FoehnInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1003
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: FoehnInputComponent, isStandalone: true, inputs: { id: "id", required: "required", label: "label", isLabelSrOnly: "isLabelSrOnly", standardHelpText: "standardHelpText", helpText: "helpText", name: "name", pattern: "pattern", labelStyleModifier: "labelStyleModifier", customErrors: "customErrors", maxlength: "maxlength", overrideGesdemMaxlength: "overrideGesdemMaxlength", min: "min", max: "max", autocomplete: "autocomplete", preventPaste: "preventPaste", clearButton: "clearButton", excludeFromErrorSummary: "excludeFromErrorSummary", hideNotRequiredExtraLabel: "hideNotRequiredExtraLabel", isErrorInherited: "isErrorInherited", showErrorWhenDisabled: "showErrorWhenDisabled", autocapitalize: "autocapitalize", updateModelWhenDisabled: "updateModelWhenDisabled", helpModal: "helpModal", model: "model", disabled: "disabled" }, outputs: { modelChange: "modelChange", userInput: "userInput", blurHandler: "blur", focusHandler: "focus" }, host: { properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["entryComponent"], descendants: true }, { propertyName: "inputModelList", predicate: NgModel, descendants: true }, { propertyName: "subComponents", predicate: i0.forwardRef(() => FoehnInputComponent), descendants: true }], ngImport: i0 }); }
1010
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: FoehnInputComponent, isStandalone: true, inputs: { id: "id", required: "required", label: "label", isLabelSrOnly: "isLabelSrOnly", standardHelpText: "standardHelpText", helpText: "helpText", name: "name", pattern: "pattern", labelStyleModifier: "labelStyleModifier", customErrors: "customErrors", maxlength: "maxlength", overrideGesdemMaxlength: "overrideGesdemMaxlength", min: "min", max: "max", autocomplete: "autocomplete", preventPaste: "preventPaste", clearButton: "clearButton", excludeFromErrorSummary: "excludeFromErrorSummary", hideNotRequiredExtraLabel: "hideNotRequiredExtraLabel", isErrorInherited: "isErrorInherited", showErrorWhenDisabled: "showErrorWhenDisabled", autocapitalize: "autocapitalize", updateModelWhenDisabled: "updateModelWhenDisabled", helpModal: "helpModal", model: "model", disabled: "disabled", hidden: "hidden" }, outputs: { modelChange: "modelChange", userInput: "userInput", blurHandler: "blur", focusHandler: "focus" }, host: { properties: { "attr.id": "this.hostId", "attr.hidden": "this.hostHidden" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["entryComponent"], descendants: true }, { propertyName: "inputModelList", predicate: NgModel, descendants: true }, { propertyName: "subComponents", predicate: i0.forwardRef(() => FoehnInputComponent), descendants: true }], ngImport: i0 }); }
1004
1011
  }
1005
1012
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FoehnInputComponent, decorators: [{
1006
1013
  type: Directive
@@ -1076,10 +1083,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
1076
1083
  }], hostId: [{
1077
1084
  type: HostBinding,
1078
1085
  args: ['attr.id']
1086
+ }], hostHidden: [{
1087
+ type: HostBinding,
1088
+ args: ['attr.hidden']
1079
1089
  }], model: [{
1080
1090
  type: Input
1081
1091
  }], disabled: [{
1082
1092
  type: Input
1093
+ }], hidden: [{
1094
+ type: Input
1083
1095
  }] } });
1084
1096
 
1085
1097
  const GrowlType = {
@@ -1296,6 +1308,7 @@ const DEFAULT_DICTIONARY = {
1296
1308
  'foehn-uploader.files-deleted-success-message': 'Suppression du fichier {filename} réussie',
1297
1309
  'foehn-uploader.delete-error-message': 'Une erreur est survenue lors de la suppression de votre document',
1298
1310
  'foehn-uploader.delete-readonly-error-message': 'Un document en lecture seule ne peut pas être supprimé',
1311
+ 'foehn-uploader.unknown-error-message': 'Impossible de transmettre le fichier',
1299
1312
  'foehn-picture-upload.choose-button-label': 'Choisissez une photo',
1300
1313
  'foehn-picture-upload.loading-label': 'Chargement...',
1301
1314
  'foehn-picture-upload.invalid-file-type': 'Le type de votre pièce jointe {filename} ne figure pas parmi ceux qui sont autorisés : "{acceptFormats}"',
@@ -1764,7 +1777,10 @@ class FoehnFormComponent {
1764
1777
  }
1765
1778
  focusFirst() {
1766
1779
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1767
- const allComponents = this.getAllComponents();
1780
+ const allComponents = this.getAllComponents().filter(value => !value.disabled &&
1781
+ value.type !== 'hidden' &&
1782
+ !value.hidden &&
1783
+ !value.subComponents?.length);
1768
1784
  if (allComponents && allComponents.length > 0) {
1769
1785
  allComponents[0].focus();
1770
1786
  }
@@ -2133,7 +2149,7 @@ class GesdemHandlerService {
2133
2149
  /**
2134
2150
  *
2135
2151
  * @param reference de la demande
2136
- * @param reCaptchaByPassUUID
2152
+ * @param reCaptchaByPassUUID unique identifier
2137
2153
  * @param forceRefreshIfNew allows to force the cleaning if reference is null
2138
2154
  * @param byPassEmitResponse boolean used to emit or not gesdem last response (default is false)
2139
2155
  * @returns Observable
@@ -3124,7 +3140,7 @@ class UploaderHelper {
3124
3140
  return formattedErrorMsg;
3125
3141
  }
3126
3142
  getDefaultUnknownErrorMessage(fileName) {
3127
- const msg = 'Impossible de transmettre le fichier';
3143
+ const msg = this.dictionaryService.getKeySync('foehn-uploader.unknown-error-message');
3128
3144
  if (!!fileName && !!fileName.length) {
3129
3145
  return `${msg} ${getSafeFileNameForErrorMessage(fileName)}.`;
3130
3146
  }
@@ -4193,6 +4209,8 @@ class GesdemConfirmationComponent {
4193
4209
  this.baseUrlPdf = 'api/document/pdf/';
4194
4210
  this.hideReference = false;
4195
4211
  this.hideFeedbackNotificationOverride = false;
4212
+ this.successLabelDicoKeyFirstStep = 'gesdem-confirmation.success-label';
4213
+ this.successLabelDicoAdditionalSteps = 'gesdem-confirmation.next-step.success-label';
4196
4214
  this.firstPageLink = '/';
4197
4215
  this.closeLinkNotConnected = new BehaviorSubject(null);
4198
4216
  this.closeLinkConnected = new BehaviorSubject(null);
@@ -4247,6 +4265,12 @@ class GesdemConfirmationComponent {
4247
4265
  this.hideFeedbackNotificationOverride =
4248
4266
  routeData.hideFeedbackNotificationOverride ||
4249
4267
  this.hideFeedbackNotificationOverride;
4268
+ this.successLabelDicoKeyFirstStep =
4269
+ routeData.successLabelDicoKeyFirstStep ||
4270
+ this.successLabelDicoKeyFirstStep;
4271
+ this.successLabelDicoAdditionalSteps =
4272
+ routeData.successLabelDicoAdditionalSteps ||
4273
+ this.successLabelDicoAdditionalSteps;
4250
4274
  // default closeLink if not by @Input and not by route data
4251
4275
  combineLatest([
4252
4276
  this.foehnPageService.onEtapeIdChange().pipe(first()),
@@ -4276,8 +4300,8 @@ class GesdemConfirmationComponent {
4276
4300
  get successLabelDicoKey() {
4277
4301
  const isFirstAction = this.gesdemService.lastResponse?.meta?.currentAction === 1;
4278
4302
  return isFirstAction
4279
- ? 'gesdem-confirmation.success-label'
4280
- : 'gesdem-confirmation.next-step.success-label';
4303
+ ? this.successLabelDicoKeyFirstStep
4304
+ : this.successLabelDicoAdditionalSteps;
4281
4305
  }
4282
4306
  ngOnChanges(changes) {
4283
4307
  const changeNotConnected = changes.closeHref;
@@ -4353,11 +4377,11 @@ class GesdemConfirmationComponent {
4353
4377
  window.scrollTo(0, 0);
4354
4378
  }
4355
4379
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: GesdemConfirmationComponent, deps: [{ token: GesdemHandlerService }, { token: FoehnPageService }, { token: i1$1.ActivatedRoute }, { token: SdkDictionaryService }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Component }); }
4356
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: GesdemConfirmationComponent, isStandalone: false, selector: "gesdem-confirmation", inputs: { reference: "reference", setPageTitle: "setPageTitle", hasEmailSent: "hasEmailSent", closeHref: "closeHref", closeHrefConnected: "closeHrefConnected", showDownloadPdfRecapButton: "showDownloadPdfRecapButton", showLinkToMyDemandes: "showLinkToMyDemandes", demandeIsClosedOnTransmit: "demandeIsClosedOnTransmit", actionStatut: "actionStatut", connectedConfirmationMessage: "connectedConfirmationMessage", connectedConfirmationMessageIfAbandoned: "connectedConfirmationMessageIfAbandoned", downloadPdfRecapButtonText: "downloadPdfRecapButtonText", closeButtonText: "closeButtonText", closeButtonConnectedText: "closeButtonConnectedText", baseUrlPdf: "baseUrlPdf", hideReference: "hideReference", hideFeedbackNotificationOverride: "hideFeedbackNotificationOverride" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n (isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n ) | fromDictionary\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<foehn-feedback-notification\n *ngIf=\"!hideFeedbackNotificationOverride\"\n [id]=\"'feedbackNotification'\"\n></foehn-feedback-notification>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FoehnFeedbackNotificationComponent, selector: "foehn-feedback-notification" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
4380
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: GesdemConfirmationComponent, isStandalone: false, selector: "gesdem-confirmation", inputs: { reference: "reference", setPageTitle: "setPageTitle", hasEmailSent: "hasEmailSent", closeHref: "closeHref", closeHrefConnected: "closeHrefConnected", showDownloadPdfRecapButton: "showDownloadPdfRecapButton", showLinkToMyDemandes: "showLinkToMyDemandes", demandeIsClosedOnTransmit: "demandeIsClosedOnTransmit", actionStatut: "actionStatut", connectedConfirmationMessage: "connectedConfirmationMessage", connectedConfirmationMessageIfAbandoned: "connectedConfirmationMessageIfAbandoned", downloadPdfRecapButtonText: "downloadPdfRecapButtonText", closeButtonText: "closeButtonText", closeButtonConnectedText: "closeButtonConnectedText", baseUrlPdf: "baseUrlPdf", hideReference: "hideReference", hideFeedbackNotificationOverride: "hideFeedbackNotificationOverride", successLabelDicoKeyFirstStep: "successLabelDicoKeyFirstStep", successLabelDicoAdditionalSteps: "successLabelDicoAdditionalSteps" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n [id]=\"'main-summary'\"\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n (isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n ) | fromDictionary\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<foehn-feedback-notification\n *ngIf=\"!hideFeedbackNotificationOverride\"\n [id]=\"'feedbackNotification'\"\n></foehn-feedback-notification>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FoehnFeedbackNotificationComponent, selector: "foehn-feedback-notification" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
4357
4381
  }
4358
4382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: GesdemConfirmationComponent, decorators: [{
4359
4383
  type: Component,
4360
- args: [{ selector: 'gesdem-confirmation', standalone: false, template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n (isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n ) | fromDictionary\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<foehn-feedback-notification\n *ngIf=\"!hideFeedbackNotificationOverride\"\n [id]=\"'feedbackNotification'\"\n></foehn-feedback-notification>\n" }]
4384
+ args: [{ selector: 'gesdem-confirmation', standalone: false, template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n [id]=\"'main-summary'\"\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n (isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n ) | fromDictionary\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<foehn-feedback-notification\n *ngIf=\"!hideFeedbackNotificationOverride\"\n [id]=\"'feedbackNotification'\"\n></foehn-feedback-notification>\n" }]
4361
4385
  }], ctorParameters: () => [{ type: GesdemHandlerService }, { type: FoehnPageService }, { type: i1$1.ActivatedRoute }, { type: SdkDictionaryService }, { type: i2.Location }], propDecorators: { reference: [{
4362
4386
  type: Input
4363
4387
  }], setPageTitle: [{
@@ -4392,6 +4416,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
4392
4416
  type: Input
4393
4417
  }], hideFeedbackNotificationOverride: [{
4394
4418
  type: Input
4419
+ }], successLabelDicoKeyFirstStep: [{
4420
+ type: Input
4421
+ }], successLabelDicoAdditionalSteps: [{
4422
+ type: Input
4395
4423
  }] } });
4396
4424
 
4397
4425
  // Shared between prestations.
@@ -5499,7 +5527,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
5499
5527
  }]
5500
5528
  }], ctorParameters: () => [{ type: SessionInfo }, { type: GesdemEventService }, { type: GesdemHandlerService }] });
5501
5529
 
5502
- const supportedBrowsers = /Edge?\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(18\.([4-9]|\d{2,})|(19|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(1{2}[6-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(16[._]([6-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Opera Mini|Android:?[ /-](13[7-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(139|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[7-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[7-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(2\.([5-9]|\d{2,})|([3-9]|\d{2,})\.\d+)(\.\d+|)/;
5530
+ const supportedBrowsers = /Edge?\/(13[89]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(18\.([4-9]|\d{2,})|(19|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(12\d|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(18[._]([4-9]|\d{2,})|(19|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Opera Mini|Android:?[ /-](139|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(14[2-9]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(139|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[7-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(2\.([5-9]|\d{2,})|([3-9]|\d{2,})\.\d+)(\.\d+|)/;
5503
5531
 
5504
5532
  class FoehnPageModalService {
5505
5533
  constructor(applicationInfoService) {
@@ -6348,6 +6376,10 @@ class FoehnCheckableGroupComponent extends FoehnInputComponent {
6348
6376
  this.updateNgModel(this.model_);
6349
6377
  });
6350
6378
  }
6379
+ // Check if we need to disable component because all it's elements are disabled
6380
+ if (this.elements?.length && !this.disabled) {
6381
+ this.disabled = this.elements.every((elem) => !!this.getDisabled(elem));
6382
+ }
6351
6383
  this.groupedElements = this.getGroupedElements();
6352
6384
  }
6353
6385
  getGroupedElements() {
@@ -6494,7 +6526,7 @@ class FoehnSelectComponent extends FoehnCheckableGroupComponent {
6494
6526
  useExisting: forwardRef(() => FoehnSelectComponent),
6495
6527
  multi: true
6496
6528
  }
6497
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\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 </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", styles: [".form-group select{appearance:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
6529
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\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 </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", styles: [".form-group select{appearance:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
6498
6530
  }
6499
6531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FoehnSelectComponent, decorators: [{
6500
6532
  type: Component,
@@ -6504,7 +6536,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
6504
6536
  useExisting: forwardRef(() => FoehnSelectComponent),
6505
6537
  multi: true
6506
6538
  }
6507
- ], standalone: false, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\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 </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", styles: [".form-group select{appearance:none}\n"] }]
6539
+ ], standalone: false, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : labelStyleModifier\"\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 </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-select\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", styles: [".form-group select{appearance:none}\n"] }]
6508
6540
  }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { multiple: [{
6509
6541
  type: Input
6510
6542
  }], noSelectionLabel: [{
@@ -10685,6 +10717,13 @@ class FoehnDateComponent extends FoehnInputComponent {
10685
10717
  this.childrenLabelSrOnly = false;
10686
10718
  this.clearButton = true;
10687
10719
  }
10720
+ get disabled() {
10721
+ return (super.disabled ||
10722
+ (this.disableDay && this.disableMonth && this.disableYear));
10723
+ }
10724
+ set disabled(value) {
10725
+ super.disabled = value;
10726
+ }
10688
10727
  updateDate() {
10689
10728
  const validValue = this.getValidValue();
10690
10729
  if (typeof validValue !== 'undefined') {
@@ -10724,7 +10763,7 @@ class FoehnDateComponent extends FoehnInputComponent {
10724
10763
  }
10725
10764
  displayClearButton() {
10726
10765
  // Override the clear button fonction not worry about the model at this stage.
10727
- const visible = this.clearButton && !this.isDisabled();
10766
+ const visible = this.clearButton && !this.disabled;
10728
10767
  return of(visible);
10729
10768
  }
10730
10769
  getValidValue() {
@@ -10742,13 +10781,13 @@ class FoehnDateComponent extends FoehnInputComponent {
10742
10781
  }
10743
10782
  shouldDisplayDatePicker() {
10744
10783
  return (!this.hideDatePickerButton &&
10745
- !this.disabled &&
10784
+ !super.disabled &&
10746
10785
  !this.disableYear &&
10747
10786
  !this.disableMonth &&
10748
10787
  !this.disableDay);
10749
10788
  }
10750
10789
  resetModel() {
10751
- if (this.isDisabled()) {
10790
+ if (this.disabled) {
10752
10791
  return;
10753
10792
  }
10754
10793
  if (!this.disableYear) {
@@ -10784,10 +10823,6 @@ class FoehnDateComponent extends FoehnInputComponent {
10784
10823
  const yearEmptyOrDisabled = this.disableYear || super.isEmpty(this.year);
10785
10824
  return (dayEmptyOrDisabled && monthEmptyOrDisabled && yearEmptyOrDisabled);
10786
10825
  }
10787
- isDisabled() {
10788
- return (this.disabled ||
10789
- (this.disableDay && this.disableMonth && this.disableYear));
10790
- }
10791
10826
  toNumber(str) {
10792
10827
  return str ? Number(str) : null;
10793
10828
  }
@@ -10795,7 +10830,7 @@ class FoehnDateComponent extends FoehnInputComponent {
10795
10830
  return num ? num.toString() : null;
10796
10831
  }
10797
10832
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FoehnDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10798
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FoehnDateComponent, isStandalone: false, selector: "foehn-input-date", inputs: { disableDay: "disableDay", disableMonth: "disableMonth", disableYear: "disableYear", minDate: "minDate", maxDate: "maxDate", hideDatePickerButton: "hideDatePickerButton", childrenLabelSrOnly: "childrenLabelSrOnly" }, providers: [
10833
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FoehnDateComponent, isStandalone: false, selector: "foehn-input-date", inputs: { disableDay: "disableDay", disableMonth: "disableMonth", disableYear: "disableYear", minDate: "minDate", maxDate: "maxDate", hideDatePickerButton: "hideDatePickerButton", childrenLabelSrOnly: "childrenLabelSrOnly", disabled: "disabled" }, providers: [
10799
10834
  {
10800
10835
  provide: FoehnInputComponent,
10801
10836
  useExisting: forwardRef(() => FoehnDateComponent),
@@ -10826,6 +10861,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
10826
10861
  type: Input
10827
10862
  }], childrenLabelSrOnly: [{
10828
10863
  type: Input
10864
+ }], disabled: [{
10865
+ type: Input
10829
10866
  }] } });
10830
10867
 
10831
10868
  class FoehnTimeComponent extends FoehnInputStringComponent {
@@ -11068,7 +11105,7 @@ class FoehnDateTimeComponent extends FoehnInputComponent {
11068
11105
  useExisting: forwardRef(() => FoehnDateTimeComponent),
11069
11106
  multi: true
11070
11107
  }
11071
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : '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 </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"row\">\n <div\n [attr.id]=\"buildId() + 'MainColumn'\"\n [ngClass]=\"\n shouldDisplayDatePicker()\n ? 'col-lg-9 col-md-11'\n : 'col-lg-8 col-md-10'\n \"\n >\n <div class=\"row\">\n <div\n [attr.id]=\"buildId() + 'DateColumn'\"\n class=\"col-md-7 pe-0\"\n >\n <foehn-input-date\n [id]=\"buildId() + '_date'\"\n [name]=\"name + '_date'\"\n [(model)]=\"date\"\n [disableDay]=\"disableDay\"\n [disableMonth]=\"disableMonth\"\n [disableYear]=\"disableYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [hideDatePickerButton]=\"hideDatePickerButton\"\n (userInput)=\"handleUserInputDate()\"\n [disabled]=\"disabled\"\n [hideNotRequiredExtraLabel]=\"true\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [childrenLabelSrOnly]=\"childrenLabelSrOnly\"\n [clearButton]=\"false\"\n #entryComponent\n ></foehn-input-date>\n </div>\n <div\n [attr.id]=\"buildId() + 'TimeColumn'\"\n class=\"col-md-5 px-md-0 mt-md-0 mt-xs-2 d-flex\"\n >\n <foehn-input-time\n [id]=\"buildId() + '_time'\"\n [name]=\"name + '_time'\"\n [(model)]=\"time\"\n (modelChange)=\"timeModelChange($event)\"\n (userInput)=\"handleUserInputTime($event)\"\n [disabled]=\"disabled\"\n [hideNotRequiredExtraLabel]=\"true\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [childrenLabelSrOnly]=\"childrenLabelSrOnly\"\n [clearButton]=\"false\"\n ></foehn-input-time>\n <div\n class=\"align-self-center position-relative w-100\"\n *ngIf=\"\n !isEmptyDependingOnDisabled() &&\n (displayClearButton() | async)\n \"\n >\n <button\n [id]=\"buildId() + '_clearButton'\"\n type=\"button\"\n class=\"clear-button btn btn-link d-flex\"\n (click)=\"resetModel()\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-input.clear-button.label'\n | fromDictionary\n \"\n ></foehn-icon-times>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep .clear-button.btn .svg-inline--fa{font-size:1.5rem;color:#000!important}:host ::ng-deep foehn-input-date>div.form-group,:host ::ng-deep foehn-input-time>div.form-group{margin-bottom:0!important}\n"], dependencies: [{ kind: "component", type: FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: FoehnDateComponent, selector: "foehn-input-date", inputs: ["disableDay", "disableMonth", "disableYear", "minDate", "maxDate", "hideDatePickerButton", "childrenLabelSrOnly"] }, { kind: "component", type: FoehnTimeComponent, selector: "foehn-input-time", inputs: ["childrenLabelSrOnly"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
11108
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : '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 </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"row\">\n <div\n [attr.id]=\"buildId() + 'MainColumn'\"\n [ngClass]=\"\n shouldDisplayDatePicker()\n ? 'col-lg-9 col-md-11'\n : 'col-lg-8 col-md-10'\n \"\n >\n <div class=\"row\">\n <div\n [attr.id]=\"buildId() + 'DateColumn'\"\n class=\"col-md-7 pe-0\"\n >\n <foehn-input-date\n [id]=\"buildId() + '_date'\"\n [name]=\"name + '_date'\"\n [(model)]=\"date\"\n [disableDay]=\"disableDay\"\n [disableMonth]=\"disableMonth\"\n [disableYear]=\"disableYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [hideDatePickerButton]=\"hideDatePickerButton\"\n (userInput)=\"handleUserInputDate()\"\n [disabled]=\"disabled\"\n [hideNotRequiredExtraLabel]=\"true\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [childrenLabelSrOnly]=\"childrenLabelSrOnly\"\n [clearButton]=\"false\"\n #entryComponent\n ></foehn-input-date>\n </div>\n <div\n [attr.id]=\"buildId() + 'TimeColumn'\"\n class=\"col-md-5 px-md-0 mt-md-0 mt-xs-2 d-flex\"\n >\n <foehn-input-time\n [id]=\"buildId() + '_time'\"\n [name]=\"name + '_time'\"\n [(model)]=\"time\"\n (modelChange)=\"timeModelChange($event)\"\n (userInput)=\"handleUserInputTime($event)\"\n [disabled]=\"disabled\"\n [hideNotRequiredExtraLabel]=\"true\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [childrenLabelSrOnly]=\"childrenLabelSrOnly\"\n [clearButton]=\"false\"\n ></foehn-input-time>\n <div\n class=\"align-self-center position-relative w-100\"\n *ngIf=\"\n !isEmptyDependingOnDisabled() &&\n (displayClearButton() | async)\n \"\n >\n <button\n [id]=\"buildId() + '_clearButton'\"\n type=\"button\"\n class=\"clear-button btn btn-link d-flex\"\n (click)=\"resetModel()\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-input.clear-button.label'\n | fromDictionary\n \"\n ></foehn-icon-times>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep .clear-button.btn .svg-inline--fa{font-size:1.5rem;color:#000!important}:host ::ng-deep foehn-input-date>div.form-group,:host ::ng-deep foehn-input-time>div.form-group{margin-bottom:0!important}\n"], dependencies: [{ kind: "component", type: FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: FoehnDateComponent, selector: "foehn-input-date", inputs: ["disableDay", "disableMonth", "disableYear", "minDate", "maxDate", "hideDatePickerButton", "childrenLabelSrOnly", "disabled"] }, { kind: "component", type: FoehnTimeComponent, selector: "foehn-input-time", inputs: ["childrenLabelSrOnly"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
11072
11109
  }
11073
11110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FoehnDateTimeComponent, decorators: [{
11074
11111
  type: Component,