@dsivd/prestations-ng 18.3.9 → 18.3.11-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,29 @@
5
5
  - **You can follow how these changes are used in a real project. See: [Skeleton repo](https://portail.etat-de-vaud.ch/outils/git/projects/CYBSDK/repos/skeleton/browse)**
6
6
 
7
7
  ---
8
+
9
+ ## [18.3.11]
10
+
11
+ ### Updated
12
+
13
+ - [foehn-error-pill.component.ts](projects/prestations-ng/src/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.ts)
14
+ - `errorPrefix` input now accepts both `string` and `RegExp` for more flexible error matching
15
+ - supports regex patterns like `maListe\\[\\d+\\]\\.objetB` to match dynamic array indices
16
+ - backward compatible: string values continue to work with `startsWith()` matching
17
+
18
+ ### Fixed
19
+
20
+ - [gesdem-action-recovery-registration.component.ts](projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.ts)
21
+ - fix labels (action recovery is not limited in time when action is > 1)
22
+
23
+ ## [18.3.10]
24
+
25
+ ### Fixed
26
+
27
+ - [IamExpiredInterceptorService](projects/prestations-ng/src/sdk-redirect/iam-expired-interceptor.service.ts)
28
+ - [gesdem-error-handler.service.ts](projects/prestations-ng/src/gesdem/gesdem-error-handler.service.ts)
29
+ - fix action recovery not showing OTP for since v18.3.5
30
+
8
31
  ## [18.3.9]
9
32
 
10
33
  ### Fixed
@@ -1271,11 +1271,12 @@ const DEFAULT_DICTIONARY = {
1271
1271
  'gesdem-action-recovery-registration.current-info.preview': 'Un lien de reprise a été envoyé à <i>{recoveryMail}</i> ({lastRegistration})',
1272
1272
  'gesdem-action-recovery-registration.deletion.info': '<i>Votre demande non transmise sera conservée {draftDemRetentionDays} jour{plural}. ' +
1273
1273
  'Elle sera supprimée le {draftDemandeDeletionDate}</i>',
1274
- 'gesdem-action-recovery-registration.not-connected.current-info': '<p>Un lien de reprise vous a été envoyé à la date suivante : <strong>{lastRegistration}</strong></p>' +
1275
- // eslint-disable-next-line max-len
1276
- "<p>La demande pourra être reprise pendant <strong>{draftDemRetentionDaysPublic} jour{plural}</strong> après votre dernière modification, mais vous devez quand même respecter la date limite pour son dépôt, s'il y en a une. Ensuite elle sera supprimée définitivement du portail et vous devrez faire une nouvelle demande.</p>" +
1274
+ 'gesdem-action-recovery-registration.not-connected.current-info-recovery-link': '<p>Un lien de reprise vous a été envoyé à la date suivante : <strong>{lastRegistration}</strong></p>' +
1277
1275
  '<p>Voulez-vous renvoyer un lien ? <br/>' +
1278
1276
  "Vous pouvez aussi changer l'adresse de destination et le numéro de mobile pour la reprise</p>",
1277
+ 'gesdem-action-recovery-registration.not-connected.current-info-recovery-delay':
1278
+ // eslint-disable-next-line max-len
1279
+ "<p>La demande pourra être reprise pendant <strong>{draftDemRetentionDaysPublic} jour{plural}</strong> après votre dernière modification, mais vous devez quand même respecter la date limite pour son dépôt, s'il y en a une. Ensuite elle sera supprimée définitivement du portail et vous devrez faire une nouvelle demande.</p>",
1279
1280
  'gesdem-action-recovery-registration.modalHeaderText': 'Informations pour la reprise de la demande',
1280
1281
  'gesdem-action-recovery-registration.connected.info': '<p>Vos données ont été sauvegardées, vous pouvez accéder à cette demande dans la liste :',
1281
1282
  'gesdem-action-recovery-registration.connected.info.draft-link-text': 'demandes en cours de saisie',
@@ -1283,12 +1284,13 @@ const DEFAULT_DICTIONARY = {
1283
1284
  "Si elle n'est pas transmise ou supprimée avant, cette demande sera automatiquement supprimée le : <br/>" +
1284
1285
  '<center><strong>{connectedDeletionDate}</strong></center>' +
1285
1286
  '</div>',
1286
- 'gesdem-action-recovery-registration.not-connected.not-registered.info': '<p>Vous avez la possibilité de reprendre votre demande plus tard en complétant ce formulaire.</p>' +
1287
- // eslint-disable-next-line max-len
1288
- "<p>La demande pourra être reprise pendant <strong>{draftDemRetentionDaysPublic} jour{plural}</strong> après votre dernière modification, mais vous devez quand même respecter la date limite pour son dépôt, s'il y en a une. Ensuite elle sera supprimée définitivement du portail et vous devrez faire une nouvelle demande.</p>" +
1287
+ 'gesdem-action-recovery-registration.not-connected.not-registered.info-recovery-link': '<p>Vous avez la possibilité de reprendre votre demande plus tard en complétant ce formulaire.</p>' +
1289
1288
  '<p class="small mb-0">' +
1290
1289
  "<i>Les informations demandées sont uniquement utilisées pour vous permettre d'effectuer la reprise de demande.</i>" +
1291
1290
  '</p>',
1291
+ 'gesdem-action-recovery-registration.not-connected.not-registered.info-recovery-delay':
1292
+ // eslint-disable-next-line max-len
1293
+ "<p>La demande pourra être reprise pendant <strong>{draftDemRetentionDaysPublic} jour{plural}</strong> après votre dernière modification, mais vous devez quand même respecter la date limite pour son dépôt, s'il y en a une. Ensuite elle sera supprimée définitivement du portail et vous devrez faire une nouvelle demande.</p>",
1292
1294
  'gesdem-action-recovery-registration.not-connected.info.sent': "<p>Un message contenant le lien de reprise de la demande a été envoyé à l'adresse <strong>{recoveryMail}</strong>.</p>" +
1293
1295
  '<p>' +
1294
1296
  'Vous pouvez cliquer sur ce lien pour reprendre la demande en saisissant le code qui sera envoyé au ' +
@@ -1964,9 +1966,11 @@ class IamExpiredInterceptorService {
1964
1966
  const errorUrl = err.url ?? '';
1965
1967
  const isUrlAcvLogin = this.iamAcvRedirectLocationRegex.test(errorUrl);
1966
1968
  const isUrlAcvOidcLogin = this.iamAcvOidcRedirectLocationRegex.test(errorUrl);
1967
- if (err.status === HttpStatusCode.Unauthorized ||
1968
- isUrlAcvLogin ||
1969
- isUrlAcvOidcLogin) {
1969
+ const isIamSessionExpired = err.status === HttpStatusCode.Unauthorized &&
1970
+ // ensure this is not a session token error to let GesdemErrorHandlerService do its job
1971
+ (!err.error?.message ||
1972
+ err.error?.message !== 'Session expired');
1973
+ if (isIamSessionExpired || isUrlAcvLogin || isUrlAcvOidcLogin) {
1970
1974
  this.setIamSessionExpiredManually();
1971
1975
  }
1972
1976
  }
@@ -2007,10 +2011,10 @@ class GesdemErrorHandlerService {
2007
2011
  if (isPdfGenerationError) {
2008
2012
  return this.onPdfGenerationError(response.error.message);
2009
2013
  }
2010
- const isSessionExpired = response.status === 401 &&
2014
+ const isSessionTokenExpired = response.status === 401 &&
2011
2015
  response.error &&
2012
- response.error.code === 'Unauthorized';
2013
- const errorCode = isSessionExpired
2016
+ response.error.message === 'Session expired';
2017
+ const errorCode = isSessionTokenExpired
2014
2018
  ? SESSION_EXPIRED
2015
2019
  : response.error
2016
2020
  ? response.error.code
@@ -13550,11 +13554,11 @@ class GesdemActionRecoveryRegistrationComponent {
13550
13554
  }
13551
13555
  }
13552
13556
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GesdemActionRecoveryRegistrationComponent, deps: [{ token: GesdemActionRecoveryService }, { token: ValidationHandlerService }, { token: FoehnPageService }, { token: GesdemEventService }, { token: GesdemHandlerService }, { token: ApplicationInfoService }, { token: SessionInfo }, { token: i1$1.Router }, { token: SdkEventsLoggerService }, { token: SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
13553
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: GesdemActionRecoveryRegistrationComponent, isStandalone: false, selector: "gesdem-action-recovery-registration", inputs: { dispatchFormErrors: "dispatchFormErrors", continueLaterLabel: "continueLaterLabel", continueLaterAlreadyRegisteredLabel: "continueLaterAlreadyRegisteredLabel", continueLaterConnectedLabel: "continueLaterConnectedLabel", triggerOnPageChange: "triggerOnPageChange" }, viewQueries: [{ propertyName: "modalTrigger", first: true, predicate: ["modalTrigger"], descendants: true }, { propertyName: "form", first: true, predicate: FoehnFormComponent, descendants: true }], ngImport: i0, template: "<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pe-0 ps-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n [innerHTML]=\"modalTriggerLabel | async\"\n (click)=\"saveAndOpenModal()\"\n #modalTrigger\n></button>\n\n<ng-container *ngIf=\"currentInfoReprise | async as currentInfo\">\n <div\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.current-info.preview'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></div>\n</ng-container>\n\n<!--connect\u00E9 ou si a demand\u00E9 un lien de reprise, sinon ca sert \u00E0 rien de montrer la date si le demandeur n'a pas le lien-->\n<ng-container\n *ngIf=\"!!(isConnectedCyber | async) || !!(currentInfoReprise | async)\"\n>\n <div\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.deletion.info'\n | fromDictionary\n : {\n draftDemRetentionDays: retentionDays.toString(),\n draftDemandeDeletionDate:\n draftDemandeDeletionDate\n | async\n | displayDate: false,\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></div>\n</ng-container>\n\n<foehn-modal\n id=\"action-recovery-registration-modal\"\n [modalSize]=\"!(isConnectedCyber | async) ? 'modal-lg' : 'modal-md'\"\n [modalHeaderText]=\"\n 'gesdem-action-recovery-registration.modalHeaderText' | fromDictionary\n \"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"!!(isConnectedCyber | async)\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info'\n | fromDictionary\n \"\n ></span>\n\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n <foehn-icon-pencil\n class=\"h3\"\n aria-hidden=\"true\"\n [title]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></foehn-icon-pencil>\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></span>\n </a>\n\n <div\n class=\"mt-3\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info-deletion'\n | fromDictionary\n : {\n connectedDeletionDate:\n draftDemandeDeletionDate\n | async\n | displayDate: false\n }\n \"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isConnectedCyber | async)\">\n <ng-container\n *ngIf=\"\n currentInfoReprise | async as currentInfo;\n else noCurrentInfo\n \"\n >\n <div\n class=\"alert alert-info\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info'\n | fromDictionary\n : {\n lastRegistration:\n (currentInfo.lastUpdate | displayDate),\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(\n draftDemRetentionDays | async\n )\n }\n \"\n ></div>\n\n <div\n class=\"alert alert-info\"\n *ngIf=\"mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.info.sent'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n recoveryMobile: currentInfo.mobile,\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(\n draftDemRetentionDays | async\n )\n }\n \"\n ></div>\n </ng-container>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-email\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.email.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.email.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.email\"\n name=\"email\"\n [required]=\"true\"\n ></foehn-input-email>\n\n <foehn-input-phone\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.mobile.label'\n | fromDictionary\n \"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n [required]=\"true\"\n ></foehn-input-phone>\n\n <foehn-input-text\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.referenceInterne\"\n name=\"referenceInterne\"\n [required]=\"false\"\n ></foehn-input-text>\n </foehn-form>\n </ng-container>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ms-md-auto me-md-2 mb-2 mt-2\">\n <button\n id=\"continueLaterModalCancelButton\"\n type=\"button\"\n (click)=\"close()\"\n class=\"btn btn-secondary w-100\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.cancel.button'\n | fromDictionary\n \"\n ></button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ms-md-0 me-md-2 mb-2 mt-2\"\n >\n <button\n id=\"continueLaterModalSaveButton\"\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.save.button'\n | fromDictionary\n \"\n ></button>\n </div>\n </div>\n </div>\n</foehn-modal>\n\n<ng-template #noCurrentInfo>\n <div\n class=\"alert alert-info\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(draftDemRetentionDays | async)\n }\n \"\n ></div>\n</ng-template>\n", styles: [".no-text-transform{text-transform:none;cursor:pointer}:host ::ng-deep foehn-icon-pencil .svg-inline--fa{color:#4a4a4b!important;margin-right:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: FoehnInputEmailComponent, selector: "foehn-input-email" }, { kind: "component", type: FoehnInputPhoneComponent, selector: "foehn-input-phone", inputs: ["acceptInternational", "acceptMobilePhone", "acceptPhone"] }, { kind: "component", type: FoehnIconPencilComponent, selector: "foehn-icon-pencil" }, { kind: "component", type: FoehnFormComponent, selector: "foehn-form", inputs: ["shouldDisplayAlertSummary"] }, { kind: "component", type: FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "draggable", "hideable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }, { kind: "pipe", type: DisplayDatePipe, name: "displayDate" }] }); }
13557
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: GesdemActionRecoveryRegistrationComponent, isStandalone: false, selector: "gesdem-action-recovery-registration", inputs: { dispatchFormErrors: "dispatchFormErrors", continueLaterLabel: "continueLaterLabel", continueLaterAlreadyRegisteredLabel: "continueLaterAlreadyRegisteredLabel", continueLaterConnectedLabel: "continueLaterConnectedLabel", triggerOnPageChange: "triggerOnPageChange" }, viewQueries: [{ propertyName: "modalTrigger", first: true, predicate: ["modalTrigger"], descendants: true }, { propertyName: "form", first: true, predicate: FoehnFormComponent, descendants: true }], ngImport: i0, template: "<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pe-0 ps-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n [innerHTML]=\"modalTriggerLabel | async\"\n (click)=\"saveAndOpenModal()\"\n #modalTrigger\n></button>\n\n<ng-container *ngIf=\"currentInfoReprise | async as currentInfo\">\n <div\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.current-info.preview'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></div>\n</ng-container>\n\n<!--connect\u00E9 ou si a demand\u00E9 un lien de reprise, sinon ca sert \u00E0 rien de montrer la date si le demandeur n'a pas le lien-->\n<ng-container\n *ngIf=\"!!(isConnectedCyber | async) || !!(currentInfoReprise | async)\"\n>\n <div\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.deletion.info'\n | fromDictionary\n : {\n draftDemRetentionDays: retentionDays.toString(),\n draftDemandeDeletionDate:\n draftDemandeDeletionDate\n | async\n | displayDate: false,\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></div>\n</ng-container>\n\n<foehn-modal\n id=\"action-recovery-registration-modal\"\n [modalSize]=\"!(isConnectedCyber | async) ? 'modal-lg' : 'modal-md'\"\n [modalHeaderText]=\"\n 'gesdem-action-recovery-registration.modalHeaderText' | fromDictionary\n \"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"!!(isConnectedCyber | async)\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info'\n | fromDictionary\n \"\n ></span>\n\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n <foehn-icon-pencil\n class=\"h3\"\n aria-hidden=\"true\"\n [title]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></foehn-icon-pencil>\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></span>\n </a>\n\n <div\n class=\"mt-3\"\n *ngIf=\"draftDemandeDeletionDate | async as deletionDate\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info-deletion'\n | fromDictionary\n : {\n connectedDeletionDate:\n deletionDate | displayDate: false\n }\n \"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isConnectedCyber | async)\">\n <ng-container\n *ngIf=\"\n currentInfoReprise | async as currentInfo;\n else noCurrentInfo\n \"\n >\n <div class=\"alert alert-info\" *ngIf=\"!mailSent\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info-recovery-link'\n | fromDictionary\n : {\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></span>\n\n <span\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info-recovery-delay'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic:\n (retentionDays | number),\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></span>\n </div>\n\n <div\n class=\"alert alert-info\"\n *ngIf=\"mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.info.sent'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n recoveryMobile: currentInfo.mobile,\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(\n draftDemRetentionDays | async\n )\n }\n \"\n ></div>\n </ng-container>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-email\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.email.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.email.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.email\"\n name=\"email\"\n [required]=\"true\"\n ></foehn-input-email>\n\n <foehn-input-phone\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.mobile.label'\n | fromDictionary\n \"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n [required]=\"true\"\n ></foehn-input-phone>\n\n <foehn-input-text\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.referenceInterne\"\n name=\"referenceInterne\"\n [required]=\"false\"\n ></foehn-input-text>\n </foehn-form>\n </ng-container>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ms-md-auto me-md-2 mb-2 mt-2\">\n <button\n id=\"continueLaterModalCancelButton\"\n type=\"button\"\n (click)=\"close()\"\n class=\"btn btn-secondary w-100\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.cancel.button'\n | fromDictionary\n \"\n ></button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ms-md-0 me-md-2 mb-2 mt-2\"\n >\n <button\n id=\"continueLaterModalSaveButton\"\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.save.button'\n | fromDictionary\n \"\n ></button>\n </div>\n </div>\n </div>\n</foehn-modal>\n\n<ng-template #noCurrentInfo>\n <div class=\"alert alert-info\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info-recovery-link'\n | fromDictionary\n \"\n ></span>\n\n <span\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info-recovery-delay'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic:\n (retentionDays | number),\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></span>\n </div>\n</ng-template>\n", styles: [".no-text-transform{text-transform:none;cursor:pointer}:host ::ng-deep foehn-icon-pencil .svg-inline--fa{color:#4a4a4b!important;margin-right:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: FoehnInputEmailComponent, selector: "foehn-input-email" }, { kind: "component", type: FoehnInputPhoneComponent, selector: "foehn-input-phone", inputs: ["acceptInternational", "acceptMobilePhone", "acceptPhone"] }, { kind: "component", type: FoehnIconPencilComponent, selector: "foehn-icon-pencil" }, { kind: "component", type: FoehnFormComponent, selector: "foehn-form", inputs: ["shouldDisplayAlertSummary"] }, { kind: "component", type: FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "draggable", "hideable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }, { kind: "pipe", type: DisplayDatePipe, name: "displayDate" }] }); }
13554
13558
  }
13555
13559
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GesdemActionRecoveryRegistrationComponent, decorators: [{
13556
13560
  type: Component,
13557
- args: [{ selector: 'gesdem-action-recovery-registration', standalone: false, template: "<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pe-0 ps-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n [innerHTML]=\"modalTriggerLabel | async\"\n (click)=\"saveAndOpenModal()\"\n #modalTrigger\n></button>\n\n<ng-container *ngIf=\"currentInfoReprise | async as currentInfo\">\n <div\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.current-info.preview'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></div>\n</ng-container>\n\n<!--connect\u00E9 ou si a demand\u00E9 un lien de reprise, sinon ca sert \u00E0 rien de montrer la date si le demandeur n'a pas le lien-->\n<ng-container\n *ngIf=\"!!(isConnectedCyber | async) || !!(currentInfoReprise | async)\"\n>\n <div\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.deletion.info'\n | fromDictionary\n : {\n draftDemRetentionDays: retentionDays.toString(),\n draftDemandeDeletionDate:\n draftDemandeDeletionDate\n | async\n | displayDate: false,\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></div>\n</ng-container>\n\n<foehn-modal\n id=\"action-recovery-registration-modal\"\n [modalSize]=\"!(isConnectedCyber | async) ? 'modal-lg' : 'modal-md'\"\n [modalHeaderText]=\"\n 'gesdem-action-recovery-registration.modalHeaderText' | fromDictionary\n \"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"!!(isConnectedCyber | async)\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info'\n | fromDictionary\n \"\n ></span>\n\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n <foehn-icon-pencil\n class=\"h3\"\n aria-hidden=\"true\"\n [title]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></foehn-icon-pencil>\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></span>\n </a>\n\n <div\n class=\"mt-3\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info-deletion'\n | fromDictionary\n : {\n connectedDeletionDate:\n draftDemandeDeletionDate\n | async\n | displayDate: false\n }\n \"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isConnectedCyber | async)\">\n <ng-container\n *ngIf=\"\n currentInfoReprise | async as currentInfo;\n else noCurrentInfo\n \"\n >\n <div\n class=\"alert alert-info\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info'\n | fromDictionary\n : {\n lastRegistration:\n (currentInfo.lastUpdate | displayDate),\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(\n draftDemRetentionDays | async\n )\n }\n \"\n ></div>\n\n <div\n class=\"alert alert-info\"\n *ngIf=\"mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.info.sent'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n recoveryMobile: currentInfo.mobile,\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(\n draftDemRetentionDays | async\n )\n }\n \"\n ></div>\n </ng-container>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-email\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.email.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.email.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.email\"\n name=\"email\"\n [required]=\"true\"\n ></foehn-input-email>\n\n <foehn-input-phone\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.mobile.label'\n | fromDictionary\n \"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n [required]=\"true\"\n ></foehn-input-phone>\n\n <foehn-input-text\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.referenceInterne\"\n name=\"referenceInterne\"\n [required]=\"false\"\n ></foehn-input-text>\n </foehn-form>\n </ng-container>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ms-md-auto me-md-2 mb-2 mt-2\">\n <button\n id=\"continueLaterModalCancelButton\"\n type=\"button\"\n (click)=\"close()\"\n class=\"btn btn-secondary w-100\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.cancel.button'\n | fromDictionary\n \"\n ></button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ms-md-0 me-md-2 mb-2 mt-2\"\n >\n <button\n id=\"continueLaterModalSaveButton\"\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.save.button'\n | fromDictionary\n \"\n ></button>\n </div>\n </div>\n </div>\n</foehn-modal>\n\n<ng-template #noCurrentInfo>\n <div\n class=\"alert alert-info\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(draftDemRetentionDays | async)\n }\n \"\n ></div>\n</ng-template>\n", styles: [".no-text-transform{text-transform:none;cursor:pointer}:host ::ng-deep foehn-icon-pencil .svg-inline--fa{color:#4a4a4b!important;margin-right:10px}\n"] }]
13561
+ args: [{ selector: 'gesdem-action-recovery-registration', standalone: false, template: "<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pe-0 ps-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n [innerHTML]=\"modalTriggerLabel | async\"\n (click)=\"saveAndOpenModal()\"\n #modalTrigger\n></button>\n\n<ng-container *ngIf=\"currentInfoReprise | async as currentInfo\">\n <div\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.current-info.preview'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></div>\n</ng-container>\n\n<!--connect\u00E9 ou si a demand\u00E9 un lien de reprise, sinon ca sert \u00E0 rien de montrer la date si le demandeur n'a pas le lien-->\n<ng-container\n *ngIf=\"!!(isConnectedCyber | async) || !!(currentInfoReprise | async)\"\n>\n <div\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n class=\"small\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.deletion.info'\n | fromDictionary\n : {\n draftDemRetentionDays: retentionDays.toString(),\n draftDemandeDeletionDate:\n draftDemandeDeletionDate\n | async\n | displayDate: false,\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></div>\n</ng-container>\n\n<foehn-modal\n id=\"action-recovery-registration-modal\"\n [modalSize]=\"!(isConnectedCyber | async) ? 'modal-lg' : 'modal-md'\"\n [modalHeaderText]=\"\n 'gesdem-action-recovery-registration.modalHeaderText' | fromDictionary\n \"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"!!(isConnectedCyber | async)\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info'\n | fromDictionary\n \"\n ></span>\n\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n <foehn-icon-pencil\n class=\"h3\"\n aria-hidden=\"true\"\n [title]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></foehn-icon-pencil>\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info.draft-link-text'\n | fromDictionary\n \"\n ></span>\n </a>\n\n <div\n class=\"mt-3\"\n *ngIf=\"draftDemandeDeletionDate | async as deletionDate\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.connected.info-deletion'\n | fromDictionary\n : {\n connectedDeletionDate:\n deletionDate | displayDate: false\n }\n \"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isConnectedCyber | async)\">\n <ng-container\n *ngIf=\"\n currentInfoReprise | async as currentInfo;\n else noCurrentInfo\n \"\n >\n <div class=\"alert alert-info\" *ngIf=\"!mailSent\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info-recovery-link'\n | fromDictionary\n : {\n lastRegistration:\n (currentInfo.lastUpdate | displayDate)\n }\n \"\n ></span>\n\n <span\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.current-info-recovery-delay'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic:\n (retentionDays | number),\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></span>\n </div>\n\n <div\n class=\"alert alert-info\"\n *ngIf=\"mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.info.sent'\n | fromDictionary\n : {\n recoveryMail: currentInfo.email,\n recoveryMobile: currentInfo.mobile,\n draftDemRetentionDaysPublic:\n (draftDemRetentionDays | async | number),\n plural: getPluralMarker(\n draftDemRetentionDays | async\n )\n }\n \"\n ></div>\n </ng-container>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-email\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.email.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.email.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.email\"\n name=\"email\"\n [required]=\"true\"\n ></foehn-input-email>\n\n <foehn-input-phone\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.mobile.label'\n | fromDictionary\n \"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n [required]=\"true\"\n ></foehn-input-phone>\n\n <foehn-input-text\n [label]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.label'\n | fromDictionary\n \"\n [helpText]=\"\n 'gesdem-action-recovery-registration.not-connected.reference-interne.help-text'\n | fromDictionary\n \"\n [(model)]=\"model.referenceInterne\"\n name=\"referenceInterne\"\n [required]=\"false\"\n ></foehn-input-text>\n </foehn-form>\n </ng-container>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ms-md-auto me-md-2 mb-2 mt-2\">\n <button\n id=\"continueLaterModalCancelButton\"\n type=\"button\"\n (click)=\"close()\"\n class=\"btn btn-secondary w-100\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.cancel.button'\n | fromDictionary\n \"\n ></button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ms-md-0 me-md-2 mb-2 mt-2\"\n >\n <button\n id=\"continueLaterModalSaveButton\"\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.save.button'\n | fromDictionary\n \"\n ></button>\n </div>\n </div>\n </div>\n</foehn-modal>\n\n<ng-template #noCurrentInfo>\n <div class=\"alert alert-info\">\n <span\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info-recovery-link'\n | fromDictionary\n \"\n ></span>\n\n <span\n *ngIf=\"draftDemRetentionDays | async as retentionDays\"\n [innerHTML]=\"\n 'gesdem-action-recovery-registration.not-connected.not-registered.info-recovery-delay'\n | fromDictionary\n : {\n draftDemRetentionDaysPublic:\n (retentionDays | number),\n plural: getPluralMarker(retentionDays)\n }\n \"\n ></span>\n </div>\n</ng-template>\n", styles: [".no-text-transform{text-transform:none;cursor:pointer}:host ::ng-deep foehn-icon-pencil .svg-inline--fa{color:#4a4a4b!important;margin-right:10px}\n"] }]
13558
13562
  }], ctorParameters: () => [{ type: GesdemActionRecoveryService }, { type: ValidationHandlerService }, { type: FoehnPageService }, { type: GesdemEventService }, { type: GesdemHandlerService }, { type: ApplicationInfoService }, { type: SessionInfo }, { type: i1$1.Router }, { type: SdkEventsLoggerService }, { type: SdkDictionaryService }], propDecorators: { dispatchFormErrors: [{
13559
13563
  type: Input
13560
13564
  }], continueLaterLabel: [{
@@ -16293,7 +16297,16 @@ class FoehnErrorPillComponent {
16293
16297
  this.validationHandlerService = validationHandlerService;
16294
16298
  this.incompleteIndicatorOnly = false;
16295
16299
  this.hasErrors =
16296
- this.validationHandlerService.validationErrorsSubject.pipe(map((errors) => errors.some(e => e.name.startsWith(this.errorPrefix))));
16300
+ this.validationHandlerService.validationErrorsSubject.pipe(map((errors) => errors.some(e => this.matchesErrorPrefix(e.name))));
16301
+ }
16302
+ matchesErrorPrefix(errorName) {
16303
+ if (!this.errorPrefix) {
16304
+ return false;
16305
+ }
16306
+ if (this.errorPrefix instanceof RegExp) {
16307
+ return this.errorPrefix.test(errorName);
16308
+ }
16309
+ return errorName.startsWith(this.errorPrefix);
16297
16310
  }
16298
16311
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: FoehnErrorPillComponent, deps: [{ token: ValidationHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
16299
16312
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: FoehnErrorPillComponent, isStandalone: false, selector: "foehn-error-pill", inputs: { errorPrefix: "errorPrefix", incompleteIndicatorOnly: "incompleteIndicatorOnly" }, ngImport: i0, template: "<strong\n *ngIf=\"hasErrors | async\"\n class=\"align-self-baseline badge mt-2 bg-danger\"\n>\n {{ 'foehn-error-pill.incomplete' | fromDictionary }}\n</strong>\n\n<strong\n *ngIf=\"!(hasErrors | async) && !incompleteIndicatorOnly\"\n class=\"align-self-baseline badge mt-2 bg-secondary\"\n>\n {{ 'foehn-error-pill.complete' | fromDictionary }}\n</strong>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }