@dsivd/prestations-ng 19.0.8 → 19.1.0
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 +27 -0
- package/GOOD_PRACTICES.md +1223 -0
- package/UPGRADING_V19.md +17 -1
- package/dsivd-prestations-ng-19.1.0.tgz +0 -0
- package/fesm2022/dsivd-prestations-ng.mjs +95 -12
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/package.json +1 -1
- package/types/dsivd-prestations-ng.d.ts +29 -1
- package/dsivd-prestations-ng-19.0.8.tgz +0 -0
package/UPGRADING_V19.md
CHANGED
|
@@ -67,6 +67,17 @@ And replace the old `AutoConfigureMockMvc` import, which is not recognized anymo
|
|
|
67
67
|
If you use Spring/Hibernate dependencies in `pom.xml` (like `hibernate-jpamodelgen`), check the Spring Boot 4 migration
|
|
68
68
|
guide to see if it has been replaced by another library: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide
|
|
69
69
|
|
|
70
|
+
### LDAP
|
|
71
|
+
|
|
72
|
+
if you use ldap, you should replace `spring-ldap-core` by `spring-boot-starter-ldap` in your `pom.xml` to maintain the LDAP health indicator.
|
|
73
|
+
|
|
74
|
+
```xml
|
|
75
|
+
<dependency>
|
|
76
|
+
<groupId>org.springframework.boot</groupId>
|
|
77
|
+
<artifactId>spring-boot-starter-ldap</artifactId>
|
|
78
|
+
</dependency>
|
|
79
|
+
```
|
|
80
|
+
|
|
70
81
|
### Jackson migration
|
|
71
82
|
|
|
72
83
|
With Spring Boot 4, Jackson 3 is now used instead of Jackson 2, so we need to replace the previous Jackson 2 classes.
|
|
@@ -917,7 +928,7 @@ rm karma.conf.js
|
|
|
917
928
|
Then run the following command to migrate from jasmine to vitest:
|
|
918
929
|
|
|
919
930
|
```bash
|
|
920
|
-
ng g @schematics/angular:refactor-jasmine-vitest
|
|
931
|
+
ng g @schematics/angular:refactor-jasmine-vitest --no-report
|
|
921
932
|
```
|
|
922
933
|
|
|
923
934
|
Now you can run your tests with `npm test` and check that everything is up and running.
|
|
@@ -1449,3 +1460,8 @@ See [getImtPortailApplications](https://dsigit.etat-de-vaud.ch/outils/git/projec
|
|
|
1449
1460
|
+ 'node' : '22'
|
|
1450
1461
|
],
|
|
1451
1462
|
```
|
|
1463
|
+
|
|
1464
|
+
## RENOVATE BOT
|
|
1465
|
+
|
|
1466
|
+
Enroll your project in Renovate bot to automatically update your dependencies.
|
|
1467
|
+
See [Mend Renovate CE](https://dgnsiwiki.etat-de-vaud.ch/outils/dgnsiwiki/x/7QFDgg) for more information.
|
|
Binary file
|
|
@@ -1336,6 +1336,7 @@ const DEFAULT_DICTIONARY = {
|
|
|
1336
1336
|
'foehn-picture-upload.selection-not-validated-label': 'Merci de valider votre sélection',
|
|
1337
1337
|
'foehn-picture-upload.delete-picture-label': 'Supprimer',
|
|
1338
1338
|
'foehn-select.no-selection.label': '-',
|
|
1339
|
+
'foehn-checkable-group.missing-value.warning': 'La valeur enregistrée « {value} » n’existe plus dans la liste des choix possibles.',
|
|
1339
1340
|
'foehn-table.totalElements': '{total} éléments trouvés',
|
|
1340
1341
|
'foehn-table.totalElements.1': '1 élément trouvé',
|
|
1341
1342
|
'foehn-table.totalElements.0': 'Aucun résultat',
|
|
@@ -3951,17 +3952,18 @@ class GesdemConfirmationComponent {
|
|
|
3951
3952
|
if (lastResponse) {
|
|
3952
3953
|
this.reference.set(lastResponse.meta.reference);
|
|
3953
3954
|
this.actionStatut.set(ActionStatut[lastResponse.meta.statut]);
|
|
3954
|
-
this.urlPdf = this.baseUrlPdf() + this.reference();
|
|
3955
3955
|
const currentAction = lastResponse.meta.currentAction;
|
|
3956
|
+
let fullReference = this.reference();
|
|
3956
3957
|
if (!!currentAction) {
|
|
3957
|
-
|
|
3958
|
+
fullReference = `${this.reference()}-${currentAction}`;
|
|
3958
3959
|
if (this.location.path().includes(`/${this.reference()}/`)) {
|
|
3959
3960
|
const fullReferenceUrl = this.location
|
|
3960
3961
|
.path()
|
|
3961
|
-
.replace(this.reference(),
|
|
3962
|
+
.replace(this.reference(), fullReference);
|
|
3962
3963
|
this.location.replaceState(fullReferenceUrl);
|
|
3963
3964
|
}
|
|
3964
3965
|
}
|
|
3966
|
+
this.urlPdf = this.buildPdfRecapUrl(fullReference);
|
|
3965
3967
|
const languageCode = lastResponse.form.language;
|
|
3966
3968
|
this.dictionaryService.changeLanguage(languageCode);
|
|
3967
3969
|
}
|
|
@@ -3998,6 +4000,13 @@ class GesdemConfirmationComponent {
|
|
|
3998
4000
|
gotToTop() {
|
|
3999
4001
|
window.scrollTo(0, 0);
|
|
4000
4002
|
}
|
|
4003
|
+
buildPdfRecapUrl(fullReference) {
|
|
4004
|
+
const applicationKey = this.gesdemService.prefix;
|
|
4005
|
+
if (applicationKey) {
|
|
4006
|
+
return `api/document/${applicationKey}/pdf/${fullReference}`;
|
|
4007
|
+
}
|
|
4008
|
+
return this.baseUrlPdf() + fullReference;
|
|
4009
|
+
}
|
|
4001
4010
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: GesdemConfirmationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4002
4011
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.21", type: GesdemConfirmationComponent, isStandalone: true, selector: "gesdem-confirmation", inputs: { reference: { classPropertyName: "reference", publicName: "reference", isSignal: true, isRequired: false, transformFunction: null }, hasEmailSent: { classPropertyName: "hasEmailSent", publicName: "hasEmailSent", isSignal: true, isRequired: false, transformFunction: null }, showDownloadPdfRecapButton: { classPropertyName: "showDownloadPdfRecapButton", publicName: "showDownloadPdfRecapButton", isSignal: true, isRequired: false, transformFunction: null }, showLinkToMyDemandes: { classPropertyName: "showLinkToMyDemandes", publicName: "showLinkToMyDemandes", isSignal: true, isRequired: false, transformFunction: null }, demandeIsClosedOnTransmit: { classPropertyName: "demandeIsClosedOnTransmit", publicName: "demandeIsClosedOnTransmit", isSignal: true, isRequired: false, transformFunction: null }, actionStatut: { classPropertyName: "actionStatut", publicName: "actionStatut", isSignal: true, isRequired: false, transformFunction: null }, connectedConfirmationMessage: { classPropertyName: "connectedConfirmationMessage", publicName: "connectedConfirmationMessage", isSignal: true, isRequired: false, transformFunction: null }, connectedConfirmationMessageIfAbandoned: { classPropertyName: "connectedConfirmationMessageIfAbandoned", publicName: "connectedConfirmationMessageIfAbandoned", isSignal: true, isRequired: false, transformFunction: null }, downloadPdfRecapButtonText: { classPropertyName: "downloadPdfRecapButtonText", publicName: "downloadPdfRecapButtonText", isSignal: true, isRequired: false, transformFunction: null }, closeButtonText: { classPropertyName: "closeButtonText", publicName: "closeButtonText", isSignal: true, isRequired: false, transformFunction: null }, closeButtonConnectedText: { classPropertyName: "closeButtonConnectedText", publicName: "closeButtonConnectedText", isSignal: true, isRequired: false, transformFunction: null }, baseUrlPdf: { classPropertyName: "baseUrlPdf", publicName: "baseUrlPdf", isSignal: true, isRequired: false, transformFunction: null }, hideReference: { classPropertyName: "hideReference", publicName: "hideReference", isSignal: true, isRequired: false, transformFunction: null }, hideFeedbackNotificationOverride: { classPropertyName: "hideFeedbackNotificationOverride", publicName: "hideFeedbackNotificationOverride", isSignal: true, isRequired: false, transformFunction: null }, successLabelDicoKeyFirstStep: { classPropertyName: "successLabelDicoKeyFirstStep", publicName: "successLabelDicoKeyFirstStep", isSignal: true, isRequired: false, transformFunction: null }, successLabelDicoAdditionalSteps: { classPropertyName: "successLabelDicoAdditionalSteps", publicName: "successLabelDicoAdditionalSteps", isSignal: true, isRequired: false, transformFunction: null }, closeHref: { classPropertyName: "closeHref", publicName: "closeHref", isSignal: true, isRequired: false, transformFunction: null }, closeHrefConnected: { classPropertyName: "closeHrefConnected", publicName: "closeHrefConnected", isSignal: true, isRequired: false, transformFunction: null }, setPageTitle: { classPropertyName: "setPageTitle", publicName: "setPageTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { reference: "referenceChange", hasEmailSent: "hasEmailSentChange", showDownloadPdfRecapButton: "showDownloadPdfRecapButtonChange", showLinkToMyDemandes: "showLinkToMyDemandesChange", demandeIsClosedOnTransmit: "demandeIsClosedOnTransmitChange", actionStatut: "actionStatutChange", connectedConfirmationMessage: "connectedConfirmationMessageChange", connectedConfirmationMessageIfAbandoned: "connectedConfirmationMessageIfAbandonedChange", downloadPdfRecapButtonText: "downloadPdfRecapButtonTextChange", closeButtonText: "closeButtonTextChange", closeButtonConnectedText: "closeButtonConnectedTextChange", baseUrlPdf: "baseUrlPdfChange", hideReference: "hideReferenceChange", hideFeedbackNotificationOverride: "hideFeedbackNotificationOverrideChange", successLabelDicoKeyFirstStep: "successLabelDicoKeyFirstStepChange", successLabelDicoAdditionalSteps: "successLabelDicoAdditionalStepsChange" }, usesOnChanges: true, ngImport: i0, template: "@if (reference() && !isInProgress) {\n <div class=\"container mt-5\">\n <div\n [id]=\"'main-summary'\"\n class=\"alert text-center mb-2\"\n [class.alert-success]=\"isTransferred\"\n [class.alert-danger]=\"!isTransferred\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n @if (!hideReference()) {\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label'\n | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">\n {{ reference() }}\n </dd>\n </dl>\n }\n @if (hasEmailSent() && !(isConnectedCyber | async)) {\n <p>\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n }\n </div>\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n <ng-content />\n @if ((isConnectedCyber | async) && hasConnectedContent()) {\n <div class=\"col-md-12 vd-highlight highlight-dark\">\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\" />\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n (isTransferred\n ? connectedConfirmationMessage()\n : connectedConfirmationMessageIfAbandoned()\n ) | fromDictionary\n \"\n ></p>\n @if (\n showLinkToMyDemandes() &&\n (demandeIsClosedOnTransmit() || isAbandoned)\n ) {\n <p id=\"linkToTreatedDemandes\">\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\n : { reference: reference() }\n \"\n [innerHTML]=\"reference()\"\n ></a>\n .\n </p>\n }\n @if (\n showLinkToMyDemandes() &&\n !demandeIsClosedOnTransmit() &&\n !isAbandoned\n ) {\n <p id=\"linkToInProgressDemandes\">\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\n : { reference: reference() }\n \"\n [innerHTML]=\"reference()\"\n ></a>\n .\n </p>\n }\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 @if (showDownloadPdfRecapButton()) {\n <a\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 }\n </div>\n @if (\n !(isConnectedCyber | async) && closeLinkNotConnected | async;\n as link\n ) {\n <div class=\"me-0 ms-md-auto mb-2 mt-2\">\n <a\n [href]=\"link\"\n id=\"terminerBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonText() | fromDictionary }}\n </a>\n </div>\n }\n @if (\n !!(isConnectedCyber | async) && closeLinkConnected | async;\n as link\n ) {\n <div class=\"me-0 ms-md-auto mb-2 mt-2\">\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText() | fromDictionary }}\n </a>\n </div>\n }\n </div>\n </div>\n}\n\n@if (!hideReference() && reference() && isInProgress) {\n <div class=\"container mt-5\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title'\n | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label'\n | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference() }}\n </dd>\n </dl>\n </div>\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\" />\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\n@if (!hideFeedbackNotificationOverride()) {\n <foehn-feedback-notification [id]=\"'feedbackNotification'\" />\n}\n", dependencies: [{ kind: "component", type: FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }, { kind: "directive", type: 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: AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
4003
4012
|
}
|
|
@@ -5855,6 +5864,28 @@ class FoehnCheckableGroupComponent extends FoehnInputComponent {
|
|
|
5855
5864
|
this.autocomplete = input('off', { ...(ngDevMode ? { debugName: "autocomplete" } : /* istanbul ignore next */ {}), transform: () => 'off' });
|
|
5856
5865
|
this.defaultElementValue = input(...(ngDevMode ? [undefined, { debugName: "defaultElementValue" }] : /* istanbul ignore next */ []));
|
|
5857
5866
|
this.elementsLoaded = output();
|
|
5867
|
+
/**
|
|
5868
|
+
* Values stored in the model that are no longer present in the list of
|
|
5869
|
+
* elements (e.g. a locality that has been removed from the reference data).
|
|
5870
|
+
* Used to warn the user that a previously saved value no longer exists.
|
|
5871
|
+
*/
|
|
5872
|
+
this.missingModelValues = computed(() => {
|
|
5873
|
+
const elements = this.elements();
|
|
5874
|
+
const modelValue = this.model();
|
|
5875
|
+
// Elements not loaded yet, empty model, or detection disabled by a
|
|
5876
|
+
// subclass (e.g. autocomplete accepting custom / dynamic values):
|
|
5877
|
+
// nothing can be considered missing.
|
|
5878
|
+
if (!elements ||
|
|
5879
|
+
this.isEmpty(modelValue) ||
|
|
5880
|
+
!this.detectMissingModelValues()) {
|
|
5881
|
+
return [];
|
|
5882
|
+
}
|
|
5883
|
+
const modelValues = this.multiple()
|
|
5884
|
+
? (modelValue ?? [])
|
|
5885
|
+
: [modelValue];
|
|
5886
|
+
return modelValues.filter((value) => !this.isEmpty(value) && !this.isValueInElements(value));
|
|
5887
|
+
}, ...(ngDevMode ? [{ debugName: "missingModelValues" }] : /* istanbul ignore next */ []));
|
|
5888
|
+
this.hasMissingModelValue = computed(() => this.missingModelValues().length > 0, ...(ngDevMode ? [{ debugName: "hasMissingModelValue" }] : /* istanbul ignore next */ []));
|
|
5858
5889
|
this.httpClient = inject(HttpClient);
|
|
5859
5890
|
this.multiple = signal(false, ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
5860
5891
|
this.ngZone = inject(NgZone);
|
|
@@ -5963,6 +5994,27 @@ class FoehnCheckableGroupComponent extends FoehnInputComponent {
|
|
|
5963
5994
|
this.model.set(null);
|
|
5964
5995
|
}
|
|
5965
5996
|
}
|
|
5997
|
+
/**
|
|
5998
|
+
* Builds a human readable representation of a model value that is no longer
|
|
5999
|
+
* present in the list of elements.
|
|
6000
|
+
*/
|
|
6001
|
+
getMissingValueLabel(value) {
|
|
6002
|
+
if (this.isEmpty(value)) {
|
|
6003
|
+
return '';
|
|
6004
|
+
}
|
|
6005
|
+
if (typeof value === 'object') {
|
|
6006
|
+
const label = this.getLabel(value);
|
|
6007
|
+
if (!this.isEmpty(label)) {
|
|
6008
|
+
return label;
|
|
6009
|
+
}
|
|
6010
|
+
const nestedValue = this.getValue(value);
|
|
6011
|
+
if (!this.isEmpty(nestedValue)) {
|
|
6012
|
+
return `${nestedValue}`;
|
|
6013
|
+
}
|
|
6014
|
+
return JSON.stringify(value);
|
|
6015
|
+
}
|
|
6016
|
+
return `${value}`;
|
|
6017
|
+
}
|
|
5966
6018
|
isElementSelected(element) {
|
|
5967
6019
|
const value = this.getValue(element);
|
|
5968
6020
|
if (this.multiple()) {
|
|
@@ -5991,6 +6043,19 @@ class FoehnCheckableGroupComponent extends FoehnInputComponent {
|
|
|
5991
6043
|
}
|
|
5992
6044
|
throw new Error('findIndexInModel cannot be used when this.multiple() is false !');
|
|
5993
6045
|
}
|
|
6046
|
+
isValueInElements(value) {
|
|
6047
|
+
const elements = this.elements() ?? [];
|
|
6048
|
+
return elements.some((element) => this.areValuesEquals(this.getValue(element), value));
|
|
6049
|
+
}
|
|
6050
|
+
/**
|
|
6051
|
+
* Whether values absent from the list of elements should be reported as
|
|
6052
|
+
* "missing". `true` by default (select, radio, checkbox). Overridden by
|
|
6053
|
+
* components where an absent value can be legitimate — e.g. an autocomplete
|
|
6054
|
+
* accepting custom values or fed by a dynamic suggestion list.
|
|
6055
|
+
*/
|
|
6056
|
+
detectMissingModelValues() {
|
|
6057
|
+
return true;
|
|
6058
|
+
}
|
|
5994
6059
|
areValuesEquals(value1, value2) {
|
|
5995
6060
|
// Get an option way to compare the value from the model.
|
|
5996
6061
|
// This allows us to properly use an object as the model rather
|
|
@@ -6158,7 +6223,7 @@ class FoehnSelectComponent extends FoehnCheckableGroupComponent {
|
|
|
6158
6223
|
provide: FoehnInputComponent,
|
|
6159
6224
|
useExisting: forwardRef(() => FoehnSelectComponent),
|
|
6160
6225
|
},
|
|
6161
|
-
], 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 @if (!!label()) {\n <label\n [class]=\"\n 'form-label ' +\n (isLabelSrOnly()\n ? 'visually-hidden'\n : (labelStyleModifier() ?? ''))\n \"\n [attr.for]=\"buildChildId()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </label>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @if (!multiple()) {\n <select\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @if (showEmptyOption()) {\n <option [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 }\n @if (!required()) {\n <option [ngValue]=\"null\">\n {{ noSelectionLabel() | fromDictionary }}\n </option>\n }\n @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n @if (multiple()) {\n <select\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [attr.aria-selected]=\"isElementSelected(element)\"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n</div>\n", styles: [".form-group select{appearance:none}\n"], dependencies: [{ kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent", "draggable", "hideable"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
6226
|
+
], 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 @if (!!label()) {\n <label\n [class]=\"\n 'form-label ' +\n (isLabelSrOnly()\n ? 'visually-hidden'\n : (labelStyleModifier() ?? ''))\n \"\n [attr.for]=\"buildChildId()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </label>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @if (!multiple()) {\n <select\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @if (showEmptyOption()) {\n <option [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 }\n @if (!required()) {\n <option [ngValue]=\"null\">\n {{ noSelectionLabel() | fromDictionary }}\n </option>\n }\n @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n @if (multiple()) {\n <select\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [attr.aria-selected]=\"isElementSelected(element)\"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n</div>\n", styles: [".form-group select{appearance:none}\n"], dependencies: [{ kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent", "draggable", "hideable"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
6162
6227
|
}
|
|
6163
6228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: FoehnSelectComponent, decorators: [{
|
|
6164
6229
|
type: Component,
|
|
@@ -6172,7 +6237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
|
|
|
6172
6237
|
FoehnValidationAlertsComponent,
|
|
6173
6238
|
FormsModule,
|
|
6174
6239
|
SdkDictionaryPipe,
|
|
6175
|
-
], 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 @if (!!label()) {\n <label\n [class]=\"\n 'form-label ' +\n (isLabelSrOnly()\n ? 'visually-hidden'\n : (labelStyleModifier() ?? ''))\n \"\n [attr.for]=\"buildChildId()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </label>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @if (!multiple()) {\n <select\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @if (showEmptyOption()) {\n <option [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 }\n @if (!required()) {\n <option [ngValue]=\"null\">\n {{ noSelectionLabel() | fromDictionary }}\n </option>\n }\n @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n @if (multiple()) {\n <select\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [attr.aria-selected]=\"isElementSelected(element)\"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n</div>\n", styles: [".form-group select{appearance:none}\n"] }]
|
|
6240
|
+
], 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 @if (!!label()) {\n <label\n [class]=\"\n 'form-label ' +\n (isLabelSrOnly()\n ? 'visually-hidden'\n : (labelStyleModifier() ?? ''))\n \"\n [attr.for]=\"buildChildId()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </label>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @if (!multiple()) {\n <select\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @if (showEmptyOption()) {\n <option [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 }\n @if (!required()) {\n <option [ngValue]=\"null\">\n {{ noSelectionLabel() | fromDictionary }}\n </option>\n }\n @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n @if (multiple()) {\n <select\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"\n hasErrorsToDisplay() || hasInheritErrorFromParent()\n \"\n class=\"form-select\"\n [name]=\"name() || label()\"\n [attr.id]=\"buildChildId()\"\n [disabled]=\"disabled()\"\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 @for (element of elements(); track getValue(element)) {\n <option\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"\n isElementSelected(element) ? 'selected' : null\n \"\n [attr.aria-selected]=\"isElementSelected(element)\"\n [disabled]=\"getDisabled(element)\"\n >\n {{ getLabel(element) }}\n </option>\n }\n </select>\n }\n</div>\n", styles: [".form-group select{appearance:none}\n"] }]
|
|
6176
6241
|
}], propDecorators: { multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], noSelectionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noSelectionLabel", required: false }] }] } });
|
|
6177
6242
|
|
|
6178
6243
|
class FoehnDropdownMenuComponent {
|
|
@@ -8119,6 +8184,9 @@ class FoehnAutocompleteComponent extends FoehnCheckableGroupComponent {
|
|
|
8119
8184
|
});
|
|
8120
8185
|
}
|
|
8121
8186
|
}
|
|
8187
|
+
detectMissingModelValues() {
|
|
8188
|
+
return !this.allowCustomValue() && !this.isSuggestionListDynamic();
|
|
8189
|
+
}
|
|
8122
8190
|
clearOnBlurTimeout() {
|
|
8123
8191
|
if (this.currentBlurTimer) {
|
|
8124
8192
|
clearTimeout(this.currentBlurTimer);
|
|
@@ -9013,7 +9081,7 @@ class FoehnCheckboxComponent extends FoehnCheckableGroupComponent {
|
|
|
9013
9081
|
provide: FoehnInputComponent,
|
|
9014
9082
|
useExisting: forwardRef(() => FoehnCheckboxComponent),
|
|
9015
9083
|
},
|
|
9016
|
-
], usesInheritance: true, ngImport: i0, template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValue(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [value]=\"getValue(element)\"\n [ngModel]=\"isElementSelected(element)\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"\n buildChildName('' + groupIndex + '_' + i)\n \"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [disabled]=\"getDisabled(element)\"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(model())\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n", dependencies: [{ kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent", "draggable", "hideable"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
9084
|
+
], usesInheritance: true, ngImport: i0, template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValue(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [value]=\"getValue(element)\"\n [ngModel]=\"isElementSelected(element)\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"\n buildChildName('' + groupIndex + '_' + i)\n \"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [disabled]=\"getDisabled(element)\"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(model())\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n", dependencies: [{ kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent", "draggable", "hideable"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
9017
9085
|
}
|
|
9018
9086
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: FoehnCheckboxComponent, decorators: [{
|
|
9019
9087
|
type: Component,
|
|
@@ -9027,7 +9095,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
|
|
|
9027
9095
|
FoehnValidationAlertsComponent,
|
|
9028
9096
|
FormsModule,
|
|
9029
9097
|
SdkDictionaryPipe,
|
|
9030
|
-
], template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValue(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [value]=\"getValue(element)\"\n [ngModel]=\"isElementSelected(element)\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"\n buildChildName('' + groupIndex + '_' + i)\n \"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [disabled]=\"getDisabled(element)\"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(model())\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n" }]
|
|
9098
|
+
], template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValue(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [value]=\"getValue(element)\"\n [ngModel]=\"isElementSelected(element)\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"\n buildChildName('' + groupIndex + '_' + i)\n \"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [disabled]=\"getDisabled(element)\"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(model())\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n" }]
|
|
9031
9099
|
}] });
|
|
9032
9100
|
|
|
9033
9101
|
class FoehnRadioComponent extends FoehnCheckableGroupComponent {
|
|
@@ -9097,7 +9165,7 @@ class FoehnRadioComponent extends FoehnCheckableGroupComponent {
|
|
|
9097
9165
|
provide: FoehnInputComponent,
|
|
9098
9166
|
useExisting: forwardRef(() => FoehnRadioComponent),
|
|
9099
9167
|
},
|
|
9100
|
-
], usesInheritance: true, ngImport: i0, template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValueOrObject(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [value]=\"getValueOrObject(element)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName()\"\n [attr.name]=\"buildChildName()\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"\n getDisabled(element) ? 'disabled' : null\n \"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(getValue(element))\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n", dependencies: [{ kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent", "draggable", "hideable"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
9168
|
+
], usesInheritance: true, ngImport: i0, template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValueOrObject(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [value]=\"getValueOrObject(element)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName()\"\n [attr.name]=\"buildChildName()\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"\n getDisabled(element) ? 'disabled' : null\n \"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(getValue(element))\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n", dependencies: [{ kind: "component", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent", "draggable", "hideable"] }, { kind: "component", type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
9101
9169
|
}
|
|
9102
9170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: FoehnRadioComponent, decorators: [{
|
|
9103
9171
|
type: Component,
|
|
@@ -9111,7 +9179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
|
|
|
9111
9179
|
FoehnValidationAlertsComponent,
|
|
9112
9180
|
FormsModule,
|
|
9113
9181
|
SdkDictionaryPipe,
|
|
9114
|
-
], template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValueOrObject(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [value]=\"getValueOrObject(element)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName()\"\n [attr.name]=\"buildChildName()\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"\n getDisabled(element) ? 'disabled' : null\n \"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(getValue(element))\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n" }]
|
|
9182
|
+
], template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n @if (!!label()) {\n <legend\n [class.visually-hidden]=\"isLabelSrOnly()\"\n [class.vd-p]=\"!isLabelSrOnly()\"\n >\n <span [innerHTML]=\"label()\"></span>\n @if (!required() && !hideNotRequiredExtraLabel()) {\n <span aria-hidden=\"true\">\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n }\n </legend>\n }\n @if (!!helpModal()) {\n <foehn-help-modal\n class=\"removePaddingButton\"\n [modalContent]=\"helpModal()\"\n />\n }\n </div>\n\n <foehn-validation-alerts [component]=\"this\" />\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n\n @if (!elements()) {\n <div>Chargement...</div>\n }\n\n @if (helpText()) {\n <small\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText()\"\n ></small>\n }\n\n <ng-content />\n @for (\n elementsGroup of groupedElements;\n track $index;\n let groupIndex = $index\n ) {\n <div>\n <!-- TODO remove aria-hidden and make this accessible -->\n @if (!!elementsGroup.groupTitle) {\n <div\n class=\"pt-2 fw-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n }\n @for (\n element of elementsGroup.elements;\n track getValueOrObject(element);\n let i = $index\n ) {\n <div\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [value]=\"getValueOrObject(element)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName()\"\n [attr.name]=\"buildChildName()\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"\n getDisabled(element) ? 'disabled' : null\n \"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(getValue(element))\"\n />\n <label\n class=\"form-check-label mb-0\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n }\n </div>\n }\n </fieldset>\n</div>\n" }]
|
|
9115
9183
|
}] });
|
|
9116
9184
|
|
|
9117
9185
|
class FormSelectOption {
|
|
@@ -9373,7 +9441,7 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
|
|
|
9373
9441
|
provide: FoehnAutocompleteComponent,
|
|
9374
9442
|
useExisting: forwardRef(() => FoehnMultiselectAutocompleteComponent),
|
|
9375
9443
|
},
|
|
9376
|
-
], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true, isSignal: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true, isSignal: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true, isSignal: true }, { propertyName: "defaultElemRef", predicate: ["defaultElemRef"], descendants: true, isSignal: true }, { propertyName: "defaultDeleteFocusArea", first: true, predicate: ["defaultDeleteFocusArea"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name()\"\n [label]=\"label()\"\n [elements]=\"elements()\"\n [elementsUrl]=\"elementsUrl()\"\n [elementValue]=\"elementValue()\"\n [elementLabel]=\"elementLabel()\"\n [elementSuggestionLabel]=\"elementSuggestionLabel()\"\n [elementValueIdentity]=\"elementValueIdentity()\"\n [elementDisabled]=\"elementDisabled()\"\n [elementGroup]=\"elementGroup()\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount()\"\n [customValueModelGenerator]=\"customValueModelGenerator()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled()\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel()\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx()\"\n [caseSensitiveSearch]=\"caseSensitiveSearch()\"\n [isLabelSrOnly]=\"isLabelSrOnly()\"\n [isSuggestionListDynamic]=\"isSuggestionListDynamic()\"\n >\n @if (!showEmptyListMessage) {\n <small\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText()\n ? helpText()\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n }\n\n <ng-content />\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n @if (showEmptyListMessage) {\n <p class=\"alert alert-info mb-0\" tabindex=\"0\">\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n }\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n @if (hasDefaultDeleteFocusArea()) {\n <small\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel() | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n }\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n @if (!!model()?.length) {\n <fieldset\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend() | fromDictionary\"\n ></legend>\n <div\n class=\"selected-list d-flex align-content-stretch flex-wrap\"\n >\n @for (\n element of model();\n track trackByFn(index);\n let index = $index\n ) {\n @if (!canBeDeleted(index)) {\n <span\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n }\n @if (canBeDeleted(index)) {\n <button\n type=\"button\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"\n getDeleteButtonAriaLabel(element)\n \"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n />\n </button>\n }\n }\n </div>\n </fieldset>\n }\n </div>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa,:host ::ng-deep .btn a{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"], dependencies: [{ kind: "component", type: FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "isSuggestionListDynamic", "customValueModelGenerator", "itemHeightInSuggestionListInPx", "elementSuggestionLabel", "caseSensitiveSearch"], outputs: ["userSearchInput"] }, { kind: "component", type: FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
9444
|
+
], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true, isSignal: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true, isSignal: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true, isSignal: true }, { propertyName: "defaultElemRef", predicate: ["defaultElemRef"], descendants: true, isSignal: true }, { propertyName: "defaultDeleteFocusArea", first: true, predicate: ["defaultDeleteFocusArea"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name()\"\n [label]=\"label()\"\n [elements]=\"elements()\"\n [elementsUrl]=\"elementsUrl()\"\n [elementValue]=\"elementValue()\"\n [elementLabel]=\"elementLabel()\"\n [elementSuggestionLabel]=\"elementSuggestionLabel()\"\n [elementValueIdentity]=\"elementValueIdentity()\"\n [elementDisabled]=\"elementDisabled()\"\n [elementGroup]=\"elementGroup()\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount()\"\n [customValueModelGenerator]=\"customValueModelGenerator()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled()\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel()\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx()\"\n [caseSensitiveSearch]=\"caseSensitiveSearch()\"\n [isLabelSrOnly]=\"isLabelSrOnly()\"\n [isSuggestionListDynamic]=\"isSuggestionListDynamic()\"\n >\n @if (!showEmptyListMessage) {\n <small\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText()\n ? helpText()\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n }\n\n <ng-content />\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n @if (showEmptyListMessage) {\n <p class=\"alert alert-info mb-0\" tabindex=\"0\">\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n }\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n @if (hasDefaultDeleteFocusArea()) {\n <small\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel() | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n }\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n @if (!!model()?.length) {\n <fieldset\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend() | fromDictionary\"\n ></legend>\n <div\n class=\"selected-list d-flex align-content-stretch flex-wrap\"\n >\n @for (\n element of model();\n track trackByFn(index);\n let index = $index\n ) {\n @if (!canBeDeleted(index)) {\n <span\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n }\n @if (canBeDeleted(index)) {\n <button\n type=\"button\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"\n getDeleteButtonAriaLabel(element)\n \"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n />\n </button>\n }\n }\n </div>\n </fieldset>\n }\n </div>\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa,:host ::ng-deep .btn a{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"], dependencies: [{ kind: "component", type: FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "isSuggestionListDynamic", "customValueModelGenerator", "itemHeightInSuggestionListInPx", "elementSuggestionLabel", "caseSensitiveSearch"], outputs: ["userSearchInput"] }, { kind: "component", type: FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
9377
9445
|
}
|
|
9378
9446
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: FoehnMultiselectAutocompleteComponent, decorators: [{
|
|
9379
9447
|
type: Component,
|
|
@@ -9392,7 +9460,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
|
|
|
9392
9460
|
SdkDictionaryPipe,
|
|
9393
9461
|
], host: {
|
|
9394
9462
|
'[attr.name]': 'hostName',
|
|
9395
|
-
}, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name()\"\n [label]=\"label()\"\n [elements]=\"elements()\"\n [elementsUrl]=\"elementsUrl()\"\n [elementValue]=\"elementValue()\"\n [elementLabel]=\"elementLabel()\"\n [elementSuggestionLabel]=\"elementSuggestionLabel()\"\n [elementValueIdentity]=\"elementValueIdentity()\"\n [elementDisabled]=\"elementDisabled()\"\n [elementGroup]=\"elementGroup()\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount()\"\n [customValueModelGenerator]=\"customValueModelGenerator()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled()\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel()\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx()\"\n [caseSensitiveSearch]=\"caseSensitiveSearch()\"\n [isLabelSrOnly]=\"isLabelSrOnly()\"\n [isSuggestionListDynamic]=\"isSuggestionListDynamic()\"\n >\n @if (!showEmptyListMessage) {\n <small\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText()\n ? helpText()\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n }\n\n <ng-content />\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n @if (showEmptyListMessage) {\n <p class=\"alert alert-info mb-0\" tabindex=\"0\">\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n }\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n @if (hasDefaultDeleteFocusArea()) {\n <small\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel() | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n }\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n @if (!!model()?.length) {\n <fieldset\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend() | fromDictionary\"\n ></legend>\n <div\n class=\"selected-list d-flex align-content-stretch flex-wrap\"\n >\n @for (\n element of model();\n track trackByFn(index);\n let index = $index\n ) {\n @if (!canBeDeleted(index)) {\n <span\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n }\n @if (canBeDeleted(index)) {\n <button\n type=\"button\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"\n getDeleteButtonAriaLabel(element)\n \"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n />\n </button>\n }\n }\n </div>\n </fieldset>\n }\n </div>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa,:host ::ng-deep .btn a{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"] }]
|
|
9463
|
+
}, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name()\"\n [label]=\"label()\"\n [elements]=\"elements()\"\n [elementsUrl]=\"elementsUrl()\"\n [elementValue]=\"elementValue()\"\n [elementLabel]=\"elementLabel()\"\n [elementSuggestionLabel]=\"elementSuggestionLabel()\"\n [elementValueIdentity]=\"elementValueIdentity()\"\n [elementDisabled]=\"elementDisabled()\"\n [elementGroup]=\"elementGroup()\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount()\"\n [customValueModelGenerator]=\"customValueModelGenerator()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled()\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel()\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx()\"\n [caseSensitiveSearch]=\"caseSensitiveSearch()\"\n [isLabelSrOnly]=\"isLabelSrOnly()\"\n [isSuggestionListDynamic]=\"isSuggestionListDynamic()\"\n >\n @if (!showEmptyListMessage) {\n <small\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText()\n ? helpText()\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n }\n\n <ng-content />\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n @if (showEmptyListMessage) {\n <p class=\"alert alert-info mb-0\" tabindex=\"0\">\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n }\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n @if (hasDefaultDeleteFocusArea()) {\n <small\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel() | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n }\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n @if (!!model()?.length) {\n <fieldset\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend() | fromDictionary\"\n ></legend>\n <div\n class=\"selected-list d-flex align-content-stretch flex-wrap\"\n >\n @for (\n element of model();\n track trackByFn(index);\n let index = $index\n ) {\n @if (!canBeDeleted(index)) {\n <span\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n }\n @if (canBeDeleted(index)) {\n <button\n type=\"button\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"\n getDeleteButtonAriaLabel(element)\n \"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n <span\n [innerHTML]=\"getBadgeLabel(element)\"\n ></span>\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n />\n </button>\n }\n }\n </div>\n </fieldset>\n }\n </div>\n\n @if (hasMissingModelValue()) {\n @for (missingValue of missingModelValues(); track $index) {\n <p\n class=\"alert alert-warning\"\n role=\"alert\"\n [attr.id]=\"buildId('MissingValue') + $index\"\n >\n {{\n 'foehn-checkable-group.missing-value.warning'\n | fromDictionary\n : { value: getMissingValueLabel(missingValue) }\n }}\n </p>\n }\n }\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa,:host ::ng-deep .btn a{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"] }]
|
|
9396
9464
|
}], propDecorators: { elementBadgeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "elementBadgeLabel", required: false }] }], selectedItemsListLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItemsListLegend", required: false }] }], noElementsSelectedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noElementsSelectedLabel", required: false }] }], excludeFromErrorSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "excludeFromErrorSummary", required: false }] }], defaultElementValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultElementValues", required: false }] }], autocompleteComponent: [{ type: i0.ViewChild, args: ['autocompleteComponent', { isSignal: true }] }], alertMessageContainer: [{ type: i0.ViewChild, args: ['alertMessageContainer', { isSignal: true }] }], selectedElemRef: [{ type: i0.ViewChildren, args: ['selectedElemRef', { isSignal: true }] }], defaultElemRef: [{ type: i0.ViewChildren, args: ['defaultElemRef', { isSignal: true }] }], defaultDeleteFocusArea: [{ type: i0.ViewChild, args: ['defaultDeleteFocusArea', { isSignal: true }] }] } });
|
|
9397
9465
|
|
|
9398
9466
|
class FoehnInputEmailComponent extends FoehnInputStringComponent {
|
|
@@ -11583,6 +11651,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
|
|
|
11583
11651
|
args: [{ name: 'formatIde' }]
|
|
11584
11652
|
}] });
|
|
11585
11653
|
|
|
11654
|
+
class LineBreakAsHtmlPipe {
|
|
11655
|
+
transform(text) {
|
|
11656
|
+
if (!text?.length) {
|
|
11657
|
+
return '';
|
|
11658
|
+
}
|
|
11659
|
+
return text.replaceAll('\n', '<br/>');
|
|
11660
|
+
}
|
|
11661
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: LineBreakAsHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
11662
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.21", ngImport: i0, type: LineBreakAsHtmlPipe, isStandalone: true, name: "lineBreakAsHtml" }); }
|
|
11663
|
+
}
|
|
11664
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: LineBreakAsHtmlPipe, decorators: [{
|
|
11665
|
+
type: Pipe,
|
|
11666
|
+
args: [{ name: 'lineBreakAsHtml' }]
|
|
11667
|
+
}] });
|
|
11668
|
+
|
|
11586
11669
|
// TODO PRESTAKIT 17 : this class is called InfoReprise in prestations-be
|
|
11587
11670
|
class RepriseInfo {
|
|
11588
11671
|
}
|
|
@@ -15108,5 +15191,5 @@ class SdkLog {
|
|
|
15108
15191
|
* Generated bundle index. Do not edit.
|
|
15109
15192
|
*/
|
|
15110
15193
|
|
|
15111
|
-
export { APP_INFO_API_URL, AbstractFoehnUploaderComponent, AbstractListDetailPageComponent, AbstractMenuPageComponent, AbstractPageComponent, AbstractPageFromMenuComponent, ActionStatut, Address, AddressTypeLight, ApplicationInfo, ApplicationInfoService, BAD_PARAMS_HELP_TEXT, BoDocumentError, BoDocumentsWithErrors, BoMultiUploadService, Breadcrumb, BreadcrumbEventService, BreadcrumbItem, CAPTCHA_ERROR_NAME, CURRENCY_REGEXP, Calendar, Canton, Captcha, ChunkLoadErrorHandler, ComponentError, Configuration, Country, CurrencyHelper, CurrentWeek, DECIMALS_SEPARATOR, DEFAULT_INTERNATIONAL_AND_NO_SWISS, DEFAULT_INTERNATIONAL_AND_NO_SWISS_MOBILE, DEFAULT_INTERNATIONAL_AND_NO_SWISS_PHONE, DEFAULT_INTERNATIONAL_HELP_TEXT, DEFAULT_PREFIX, DEFAULT_SWISS_HELP_TEXT, DEFAULT_SWISS_MOBILE_PHONE_HELP_TEXT, DEFAULT_SWISS_PHONE_HELP_TEXT, DICTIONARY_BASE_URL, DateHelper, DatePickerHelper, DatePickerNavigationHelper, DayMonth, DaySlots, DemandeExpirationService, DemandeHelper, DisplayCurrencyPipe, DisplayDatePipe, District, Document, DocumentError, DocumentReference, DocumentReferenceWithFile, DocumentsWithErrors, DropdownMenuGroup, DropdownMenuItem, EPaymentService, EtapeInfo, FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX, FORM_SUPPORT_CYBER_TITLE_FALLBACK, FocusedDay, FoehnAbbrComponent, FoehnAgendaComponent, FoehnAgendaNavigationComponent, FoehnAgendaTimeslotPanelComponent, FoehnAutocompleteComponent, FoehnBoMultiUploadComponent, FoehnBooleanCheckboxComponent, FoehnBooleanRadioComponent, FoehnBreadcrumbComponent, FoehnCheckableGroupComponent, FoehnCheckboxComponent, FoehnConfirmModalComponent, FoehnConfirmModalContent, FoehnConfirmModalService, FoehnDateComponent, FoehnDatePickerButtonComponent, FoehnDatePickerComponent, FoehnDateTimeComponent, FoehnDecisionElectroniqueComponent, FoehnDisplayAddressComponent, FoehnDropdownMenuComponent, FoehnErrorPillComponent, FoehnFeedbackNotificationComponent, FoehnFormComponent, FoehnGlobalUploadProgressBarComponent, FoehnHeaderComponent, FoehnHelpModalComponent, FoehnIconCalendarComponent, FoehnIconCheckComponent, FoehnIconCheckSquareOComponent, FoehnIconChevronDownComponent, FoehnIconChevronLeftComponent, FoehnIconChevronRightComponent, FoehnIconChevronUpComponent, FoehnIconClockComponent, FoehnIconCommentDotsComponent, FoehnIconEditComponent, FoehnIconExternalLinkAltComponent, FoehnIconFilePdfComponent, FoehnIconInfoCircleComponent, FoehnIconLockComponent, FoehnIconMapMarkerComponent, FoehnIconMinusCircleComponent, FoehnIconPencilComponent, FoehnIconPlusCircleComponent, FoehnIconPlusSquareComponent, FoehnIconSearchComponent, FoehnIconTimesComponent, FoehnIconTrashAltComponent, FoehnIconUnlockAltComponent, FoehnIconUserComponent, FoehnInputAddressComponent, FoehnInputComponent, FoehnInputEmailComponent, FoehnInputForeignLocalityComponent, FoehnInputForeignStreetComponent, FoehnInputHiddenComponent, FoehnInputNav13Component, FoehnInputNumberComponent, FoehnInputPasswordComponent, FoehnInputPhoneComponent, FoehnInputPrefixedTextComponent, FoehnInputStringComponent, FoehnInputTextComponent, FoehnInputTextareaComponent, FoehnListComponent, FoehnListItem, FoehnListSummaryComponent, FoehnMenuItemComponent, FoehnMenuItemTransmitComponent, FoehnModalComponent, FoehnMultiUploadComponent, FoehnMultiselectAutocompleteComponent, FoehnNavigationComponent, FoehnNavigationService, FoehnNotfoundComponent, FoehnPageComponent, FoehnPageCounterComponent, FoehnPageExpirationTimerComponent, FoehnPageModalComponent, FoehnPageService, FoehnPictureUploadComponent, FoehnRadioComponent, FoehnRecapSectionComponent, FoehnRemainingAlertsSummaryComponent, FoehnSelectComponent, FoehnSimpleNavigationComponent, FoehnSkipLinkComponent, FoehnStatusProgressBarComponent, FoehnTableColumnConfiguration, FoehnTableComponent, FoehnTablePageChangeEvent, FoehnTimeComponent, FoehnTransmitWaitingModalComponent, FoehnTransmitWaitingModalService, FoehnUploadProgressBarComponent, FoehnUserConnectedAsComponent, FoehnValidationAlertSummaryComponent, FoehnValidationAlertsComponent, FooterLink, FormMetadata, FormPostResponse, FormSelectOption, FormatAvsPipe, FormatIdePipe, GESDEM_MAX_DATA_LENGTH, GesdemActionRecoveryLoginComponent, GesdemActionRecoveryRegistrationComponent, GesdemConfirmationComponent, GesdemErrorComponent, GesdemEventService, GesdemHandlerService, GesdemStatutUtils, GlobalUploadProgressService, GrowlBrokerService, GrowlMessage, GrowlType, HTTP_LOADER_FILTERED_URL, I18nForm, IAM_ACV_OIDC_REDIRECT_LOCATION_REGEX, IAM_ACV_REDIRECT_LOCATION_REGEX, IbanFormatterDirective, IdeFormatterDirective, IntervalHelper, Locality, MonthYear, MultiUploadService, Municipality, NDCFormatterDirective, NavigationDirection, NumberCurrencyFormatterDirective, OIDC_ENABLED, ObjectHelper, PORTAIL_BASE_URL_INT, PORTAIL_BASE_URL_PROD, PORTAIL_BASE_URL_VAL, PageChangeEvent, PageUploadLimitService, PaginationWeek, PendingFiles, PendingPaymentComponent, PendingUploadService, PlaceOfOrigin, Portail, PostalLocality, Preferences, RECAPTCHA_API_URL, RecaptchaService, RedirectComponent, RegisterNgModelService, RowElement, SESSION_INFO_API_URL, SWISS_ISO_ID, ScrollHelper, SdkDictionaryPipe, SdkDictionaryService, SdkEpaymentComponent, SdkEvent, SdkEventType, SdkEventsLoggerService, SdkLog, SdkLogLevel, SdkLogsService, SdkRecaptchaComponent, SdkStatisticsService, SelectedSlot, Session, SessionInfo, SessionInfoData, SessionInfoWithApplicationService, Street, StreetNumber, StringHelper, THOUSANDS_SEPARATOR, TRANSMIT_WAITING_MODAL_DELAY_IN_MILLISECONDS, TableSort, UploadProgress, UploadProgressService, UploaderHelper, ValidationHandlerService, formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven, gesdemLoaderGuard, providePrestationsNgCore, replaceAll };
|
|
15194
|
+
export { APP_INFO_API_URL, AbstractFoehnUploaderComponent, AbstractListDetailPageComponent, AbstractMenuPageComponent, AbstractPageComponent, AbstractPageFromMenuComponent, ActionStatut, Address, AddressTypeLight, ApplicationInfo, ApplicationInfoService, BAD_PARAMS_HELP_TEXT, BoDocumentError, BoDocumentsWithErrors, BoMultiUploadService, Breadcrumb, BreadcrumbEventService, BreadcrumbItem, CAPTCHA_ERROR_NAME, CURRENCY_REGEXP, Calendar, Canton, Captcha, ChunkLoadErrorHandler, ComponentError, Configuration, Country, CurrencyHelper, CurrentWeek, DECIMALS_SEPARATOR, DEFAULT_INTERNATIONAL_AND_NO_SWISS, DEFAULT_INTERNATIONAL_AND_NO_SWISS_MOBILE, DEFAULT_INTERNATIONAL_AND_NO_SWISS_PHONE, DEFAULT_INTERNATIONAL_HELP_TEXT, DEFAULT_PREFIX, DEFAULT_SWISS_HELP_TEXT, DEFAULT_SWISS_MOBILE_PHONE_HELP_TEXT, DEFAULT_SWISS_PHONE_HELP_TEXT, DICTIONARY_BASE_URL, DateHelper, DatePickerHelper, DatePickerNavigationHelper, DayMonth, DaySlots, DemandeExpirationService, DemandeHelper, DisplayCurrencyPipe, DisplayDatePipe, District, Document, DocumentError, DocumentReference, DocumentReferenceWithFile, DocumentsWithErrors, DropdownMenuGroup, DropdownMenuItem, EPaymentService, EtapeInfo, FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX, FORM_SUPPORT_CYBER_TITLE_FALLBACK, FocusedDay, FoehnAbbrComponent, FoehnAgendaComponent, FoehnAgendaNavigationComponent, FoehnAgendaTimeslotPanelComponent, FoehnAutocompleteComponent, FoehnBoMultiUploadComponent, FoehnBooleanCheckboxComponent, FoehnBooleanRadioComponent, FoehnBreadcrumbComponent, FoehnCheckableGroupComponent, FoehnCheckboxComponent, FoehnConfirmModalComponent, FoehnConfirmModalContent, FoehnConfirmModalService, FoehnDateComponent, FoehnDatePickerButtonComponent, FoehnDatePickerComponent, FoehnDateTimeComponent, FoehnDecisionElectroniqueComponent, FoehnDisplayAddressComponent, FoehnDropdownMenuComponent, FoehnErrorPillComponent, FoehnFeedbackNotificationComponent, FoehnFormComponent, FoehnGlobalUploadProgressBarComponent, FoehnHeaderComponent, FoehnHelpModalComponent, FoehnIconCalendarComponent, FoehnIconCheckComponent, FoehnIconCheckSquareOComponent, FoehnIconChevronDownComponent, FoehnIconChevronLeftComponent, FoehnIconChevronRightComponent, FoehnIconChevronUpComponent, FoehnIconClockComponent, FoehnIconCommentDotsComponent, FoehnIconEditComponent, FoehnIconExternalLinkAltComponent, FoehnIconFilePdfComponent, FoehnIconInfoCircleComponent, FoehnIconLockComponent, FoehnIconMapMarkerComponent, FoehnIconMinusCircleComponent, FoehnIconPencilComponent, FoehnIconPlusCircleComponent, FoehnIconPlusSquareComponent, FoehnIconSearchComponent, FoehnIconTimesComponent, FoehnIconTrashAltComponent, FoehnIconUnlockAltComponent, FoehnIconUserComponent, FoehnInputAddressComponent, FoehnInputComponent, FoehnInputEmailComponent, FoehnInputForeignLocalityComponent, FoehnInputForeignStreetComponent, FoehnInputHiddenComponent, FoehnInputNav13Component, FoehnInputNumberComponent, FoehnInputPasswordComponent, FoehnInputPhoneComponent, FoehnInputPrefixedTextComponent, FoehnInputStringComponent, FoehnInputTextComponent, FoehnInputTextareaComponent, FoehnListComponent, FoehnListItem, FoehnListSummaryComponent, FoehnMenuItemComponent, FoehnMenuItemTransmitComponent, FoehnModalComponent, FoehnMultiUploadComponent, FoehnMultiselectAutocompleteComponent, FoehnNavigationComponent, FoehnNavigationService, FoehnNotfoundComponent, FoehnPageComponent, FoehnPageCounterComponent, FoehnPageExpirationTimerComponent, FoehnPageModalComponent, FoehnPageService, FoehnPictureUploadComponent, FoehnRadioComponent, FoehnRecapSectionComponent, FoehnRemainingAlertsSummaryComponent, FoehnSelectComponent, FoehnSimpleNavigationComponent, FoehnSkipLinkComponent, FoehnStatusProgressBarComponent, FoehnTableColumnConfiguration, FoehnTableComponent, FoehnTablePageChangeEvent, FoehnTimeComponent, FoehnTransmitWaitingModalComponent, FoehnTransmitWaitingModalService, FoehnUploadProgressBarComponent, FoehnUserConnectedAsComponent, FoehnValidationAlertSummaryComponent, FoehnValidationAlertsComponent, FooterLink, FormMetadata, FormPostResponse, FormSelectOption, FormatAvsPipe, FormatIdePipe, GESDEM_MAX_DATA_LENGTH, GesdemActionRecoveryLoginComponent, GesdemActionRecoveryRegistrationComponent, GesdemConfirmationComponent, GesdemErrorComponent, GesdemEventService, GesdemHandlerService, GesdemStatutUtils, GlobalUploadProgressService, GrowlBrokerService, GrowlMessage, GrowlType, HTTP_LOADER_FILTERED_URL, I18nForm, IAM_ACV_OIDC_REDIRECT_LOCATION_REGEX, IAM_ACV_REDIRECT_LOCATION_REGEX, IbanFormatterDirective, IdeFormatterDirective, IntervalHelper, LineBreakAsHtmlPipe, Locality, MonthYear, MultiUploadService, Municipality, NDCFormatterDirective, NavigationDirection, NumberCurrencyFormatterDirective, OIDC_ENABLED, ObjectHelper, PORTAIL_BASE_URL_INT, PORTAIL_BASE_URL_PROD, PORTAIL_BASE_URL_VAL, PageChangeEvent, PageUploadLimitService, PaginationWeek, PendingFiles, PendingPaymentComponent, PendingUploadService, PlaceOfOrigin, Portail, PostalLocality, Preferences, RECAPTCHA_API_URL, RecaptchaService, RedirectComponent, RegisterNgModelService, RowElement, SESSION_INFO_API_URL, SWISS_ISO_ID, ScrollHelper, SdkDictionaryPipe, SdkDictionaryService, SdkEpaymentComponent, SdkEvent, SdkEventType, SdkEventsLoggerService, SdkLog, SdkLogLevel, SdkLogsService, SdkRecaptchaComponent, SdkStatisticsService, SelectedSlot, Session, SessionInfo, SessionInfoData, SessionInfoWithApplicationService, Street, StreetNumber, StringHelper, THOUSANDS_SEPARATOR, TRANSMIT_WAITING_MODAL_DELAY_IN_MILLISECONDS, TableSort, UploadProgress, UploadProgressService, UploaderHelper, ValidationHandlerService, formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven, gesdemLoaderGuard, providePrestationsNgCore, replaceAll };
|
|
15112
15195
|
//# sourceMappingURL=dsivd-prestations-ng.mjs.map
|