@starterlib/ui 0.10.14 → 0.11.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.
Files changed (56) hide show
  1. package/README.md +137 -32
  2. package/assets/icones/catalogue.json +199 -4
  3. package/assets/icones/sprite.svg +14 -0
  4. package/fesm2022/starterlib-ui-arbre.mjs +25 -25
  5. package/fesm2022/starterlib-ui-arbre.mjs.map +1 -1
  6. package/fesm2022/starterlib-ui-donnees.mjs +760 -274
  7. package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
  8. package/fesm2022/starterlib-ui-etats.mjs +82 -82
  9. package/fesm2022/starterlib-ui-etats.mjs.map +1 -1
  10. package/fesm2022/starterlib-ui-force.mjs +18 -0
  11. package/fesm2022/starterlib-ui-force.mjs.map +1 -0
  12. package/fesm2022/starterlib-ui-formulaires.mjs +218 -218
  13. package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
  14. package/fesm2022/starterlib-ui-graphiques.mjs +934 -0
  15. package/fesm2022/starterlib-ui-graphiques.mjs.map +1 -0
  16. package/fesm2022/starterlib-ui-indicateurs.mjs +59 -59
  17. package/fesm2022/starterlib-ui-indicateurs.mjs.map +1 -1
  18. package/fesm2022/starterlib-ui-libelles-en.mjs +11 -0
  19. package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -1
  20. package/fesm2022/starterlib-ui-listes.mjs +727 -315
  21. package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
  22. package/fesm2022/starterlib-ui-messagerie.mjs +45 -45
  23. package/fesm2022/starterlib-ui-messagerie.mjs.map +1 -1
  24. package/fesm2022/starterlib-ui-mise-en-page.mjs +46 -46
  25. package/fesm2022/starterlib-ui-mise-en-page.mjs.map +1 -1
  26. package/fesm2022/starterlib-ui-navigation.mjs +200 -42
  27. package/fesm2022/starterlib-ui-navigation.mjs.map +1 -1
  28. package/fesm2022/starterlib-ui-onglets.mjs +20 -20
  29. package/fesm2022/starterlib-ui-onglets.mjs.map +1 -1
  30. package/fesm2022/starterlib-ui-parcours.mjs +631 -168
  31. package/fesm2022/starterlib-ui-parcours.mjs.map +1 -1
  32. package/fesm2022/starterlib-ui-qr.mjs +11 -11
  33. package/fesm2022/starterlib-ui-qr.mjs.map +1 -1
  34. package/fesm2022/starterlib-ui-saisie.mjs +609 -510
  35. package/fesm2022/starterlib-ui-saisie.mjs.map +1 -1
  36. package/fesm2022/starterlib-ui-selection.mjs +64 -64
  37. package/fesm2022/starterlib-ui-selection.mjs.map +1 -1
  38. package/fesm2022/starterlib-ui-sens.mjs +3 -3
  39. package/fesm2022/starterlib-ui-surfaces.mjs +246 -242
  40. package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -1
  41. package/fesm2022/starterlib-ui-virtuel.mjs +17 -17
  42. package/fesm2022/starterlib-ui-virtuel.mjs.map +1 -1
  43. package/fesm2022/starterlib-ui.mjs +1136 -892
  44. package/fesm2022/starterlib-ui.mjs.map +1 -1
  45. package/package.json +27 -3
  46. package/types/starterlib-ui-donnees.d.ts +231 -5
  47. package/types/starterlib-ui-force.d.ts +19 -0
  48. package/types/starterlib-ui-graphiques.d.ts +421 -0
  49. package/types/starterlib-ui-indicateurs.d.ts +11 -4
  50. package/types/starterlib-ui-listes.d.ts +230 -13
  51. package/types/starterlib-ui-navigation.d.ts +82 -1
  52. package/types/starterlib-ui-parcours.d.ts +265 -5
  53. package/types/starterlib-ui-saisie.d.ts +89 -10
  54. package/types/starterlib-ui-selection.d.ts +1 -1
  55. package/types/starterlib-ui-surfaces.d.ts +10 -9
  56. package/types/starterlib-ui.d.ts +175 -24
@@ -1,57 +1,57 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, InjectionToken, Injector, afterNextRender, booleanAttribute, computed, effect, inject, input, isDevMode, linkedSignal, model, numberAttribute, output, signal, untracked, viewChild } from "@angular/core";
3
- import { AnnonceLocale, ICONES_DE_TON, REGION_VIVANTE_PARENTE, ST_LIBELLES, ST_LOCALE, StBanner, StButton, StCopyButton, StHeading, StIcon, StIdentifiants, StInlineMessage, StLink, StPageTitle, StSpinner, StTimer } from "@starterlib/ui";
4
- import { StCode, StDate } from "@starterlib/ui/donnees";
3
+ import { AnnonceLocale, ICONES_DE_TON, REGION_VIVANTE_PARENTE, ST_LIBELLES, ST_LOCALE, StBanner, StButton, StCopyButton, StHeading, StIcon, StIdentifiants, StInlineMessage, StLink, StPageTitle, StSpinner, StTimer, catalogueDuPointDEntree } from "@starterlib/ui";
4
+ import { StCode, StDate, StDeadline } from "@starterlib/ui/donnees";
5
5
  import { estUneErreurRejouable, sansCommandesDeDirection, varianteDErreur } from "@starterlib/util";
6
6
  import { DOCUMENT, NgTemplateOutlet } from "@angular/common";
7
7
  import { RouterLink } from "@angular/router";
8
8
  import { StStatusPill } from "@starterlib/ui/indicateurs";
9
- import { StCheckbox, StFormActions, StInput, StOtpField, erreurCode } from "@starterlib/ui/saisie";
9
+ import { ST_ETAT_D_ENVOI, StCheckbox, StErrorSummary, StFieldset, StFormActions, StInput, StOtpField, erreurCode } from "@starterlib/ui/saisie";
10
10
  var StRefusal = class StRefusal {
11
11
  injecteur = inject(Injector);
12
12
  libelles = inject(ST_LIBELLES);
13
- erreur = input.required(...ngDevMode ? [{ debugName: "erreur" }] : /* istanbul ignore next */ []);
14
- message = input.required(...ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []);
15
- titre = input(null, ...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
13
+ erreur = input.required(...ngDevMode ? [{ debugName: "erreur" }] : /* istanbul ignore next */ []);
14
+ message = input.required(...ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []);
15
+ titre = input(null, ...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
16
16
  codeInconnu = input(false, {
17
- ...ngDevMode ? { debugName: "codeInconnu" } : /* istanbul ignore next */ {},
17
+ ...ngDevMode ? { debugName: "codeInconnu" } : /* istanbul ignore next */ {},
18
18
  transform: booleanAttribute
19
19
  });
20
20
  rejeuEnCours = input(false, {
21
- ...ngDevMode ? { debugName: "rejeuEnCours" } : /* istanbul ignore next */ {},
21
+ ...ngDevMode ? { debugName: "rejeuEnCours" } : /* istanbul ignore next */ {},
22
22
  transform: booleanAttribute
23
23
  });
24
24
  rechargementEnCours = input(false, {
25
- ...ngDevMode ? { debugName: "rechargementEnCours" } : /* istanbul ignore next */ {},
25
+ ...ngDevMode ? { debugName: "rechargementEnCours" } : /* istanbul ignore next */ {},
26
26
  transform: booleanAttribute
27
27
  });
28
28
  rejeu = output();
29
29
  rechargement = output();
30
30
  attenteTerminee = output();
31
31
  banniere = viewChild.required(StBanner, {
32
- ...ngDevMode ? { debugName: "banniere" } : /* istanbul ignore next */ {},
32
+ ...ngDevMode ? { debugName: "banniere" } : /* istanbul ignore next */ {},
33
33
  read: ElementRef
34
34
  });
35
- decompte = viewChild(StTimer, ...ngDevMode ? [{ debugName: "decompte" }] : /* istanbul ignore next */ []);
35
+ decompte = viewChild(StTimer, ...ngDevMode ? [{ debugName: "decompte" }] : /* istanbul ignore next */ []);
36
36
  variante = computed(() => {
37
37
  const erreur = this.erreur();
38
38
  return varianteDErreur(erreur.status, erreur.code, erreur.horsLigne);
39
- }, ...ngDevMode ? [{ debugName: "variante" }] : /* istanbul ignore next */ []);
40
- rejouableSelonLaTable = computed(() => estUneErreurRejouable(this.variante(), this.erreur().status), ...ngDevMode ? [{ debugName: "rejouableSelonLaTable" }] : /* istanbul ignore next */ []);
41
- ton = computed(() => this.rejouableSelonLaTable() || this.variante() === "conflit" ? "avertissement" : "danger", ...ngDevMode ? [{ debugName: "ton" }] : /* istanbul ignore next */ []);
42
- titreLu = computed(() => this.titre() ?? (this.variante() === "hors-ligne" ? this.libelles().horsConnexion : null), ...ngDevMode ? [{ debugName: "titreLu" }] : /* istanbul ignore next */ []);
39
+ }, ...ngDevMode ? [{ debugName: "variante" }] : /* istanbul ignore next */ []);
40
+ rejouableSelonLaTable = computed(() => estUneErreurRejouable(this.variante(), this.erreur().status), ...ngDevMode ? [{ debugName: "rejouableSelonLaTable" }] : /* istanbul ignore next */ []);
41
+ ton = computed(() => this.rejouableSelonLaTable() || this.variante() === "conflit" ? "avertissement" : "erreur", ...ngDevMode ? [{ debugName: "ton" }] : /* istanbul ignore next */ []);
42
+ titreLu = computed(() => this.titre() ?? (this.variante() === "hors-ligne" ? this.libelles().horsConnexion : null), ...ngDevMode ? [{ debugName: "titreLu" }] : /* istanbul ignore next */ []);
43
43
  attente = computed(() => {
44
44
  const secondes = this.erreur().reessayerDans;
45
45
  return this.variante() === "limite" && secondes !== null && secondes > 0 ? secondes : null;
46
- }, ...ngDevMode ? [{ debugName: "attente" }] : /* istanbul ignore next */ []);
46
+ }, ...ngDevMode ? [{ debugName: "attente" }] : /* istanbul ignore next */ []);
47
47
  attenteFinie = linkedSignal({
48
- ...ngDevMode ? { debugName: "attenteFinie" } : /* istanbul ignore next */ {},
48
+ ...ngDevMode ? { debugName: "attenteFinie" } : /* istanbul ignore next */ {},
49
49
  source: this.erreur,
50
50
  computation: () => false
51
51
  });
52
- rejouable = computed(() => this.rejouableSelonLaTable() && (this.variante() !== "limite" || this.attente() !== null), ...ngDevMode ? [{ debugName: "rejouable" }] : /* istanbul ignore next */ []);
53
- enAttente = computed(() => this.attente() !== null && !this.attenteFinie(), ...ngDevMode ? [{ debugName: "enAttente" }] : /* istanbul ignore next */ []);
54
- raisonDuRejeu = computed(() => this.enAttente() ? this.decompte()?.phrase() ?? null : null, ...ngDevMode ? [{ debugName: "raisonDuRejeu" }] : /* istanbul ignore next */ []);
52
+ rejouable = computed(() => this.rejouableSelonLaTable() && (this.variante() !== "limite" || this.attente() !== null), ...ngDevMode ? [{ debugName: "rejouable" }] : /* istanbul ignore next */ []);
53
+ enAttente = computed(() => this.attente() !== null && !this.attenteFinie(), ...ngDevMode ? [{ debugName: "enAttente" }] : /* istanbul ignore next */ []);
54
+ raisonDuRejeu = computed(() => this.enAttente() ? this.decompte()?.phrase() ?? null : null, ...ngDevMode ? [{ debugName: "raisonDuRejeu" }] : /* istanbul ignore next */ []);
55
55
  constructor() {
56
56
  effect(() => {
57
57
  this.erreur();
@@ -66,7 +66,7 @@ var StRefusal = class StRefusal {
66
66
  }
67
67
  static ɵfac = i0.ɵɵngDeclareFactory({
68
68
  minVersion: "12.0.0",
69
- version: "22.2.0",
69
+ version: "22.2.1",
70
70
  ngImport: i0,
71
71
  type: StRefusal,
72
72
  deps: [],
@@ -74,7 +74,7 @@ var StRefusal = class StRefusal {
74
74
  });
75
75
  static ɵcmp = i0.ɵɵngDeclareComponent({
76
76
  minVersion: "17.0.0",
77
- version: "22.2.0",
77
+ version: "22.2.1",
78
78
  type: StRefusal,
79
79
  isStandalone: true,
80
80
  selector: "st-refusal",
@@ -215,7 +215,7 @@ var StRefusal = class StRefusal {
215
215
  };
216
216
  i0.ɵɵngDeclareClassMetadata({
217
217
  minVersion: "12.0.0",
218
- version: "22.2.0",
218
+ version: "22.2.1",
219
219
  ngImport: i0,
220
220
  type: StRefusal,
221
221
  decorators: [{
@@ -319,35 +319,36 @@ i0.ɵɵngDeclareClassMetadata({
319
319
  const TONS = {
320
320
  succes: "succes",
321
321
  attente: "information",
322
- echec: "danger",
322
+ echec: "erreur",
323
323
  partiel: "avertissement"
324
324
  };
325
325
  var StOutcome = class StOutcome {
326
326
  libelles = inject(ST_LIBELLES);
327
- issue = input.required(...ngDevMode ? [{ debugName: "issue" }] : /* istanbul ignore next */ []);
328
- titre = input.required(...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
329
- precision = input(null, ...ngDevMode ? [{ debugName: "precision" }] : /* istanbul ignore next */ []);
330
- reference = input(null, ...ngDevMode ? [{ debugName: "reference" }] : /* istanbul ignore next */ []);
331
- etiquetteDeReference = input(null, ...ngDevMode ? [{ debugName: "etiquetteDeReference" }] : /* istanbul ignore next */ []);
332
- horodatage = input(null, ...ngDevMode ? [{ debugName: "horodatage" }] : /* istanbul ignore next */ []);
333
- etiquetteDHorodatage = input(null, ...ngDevMode ? [{ debugName: "etiquetteDHorodatage" }] : /* istanbul ignore next */ []);
334
- niveauDuTitre = input(1, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
335
- disposition = input("page", ...ngDevMode ? [{ debugName: "disposition" }] : /* istanbul ignore next */ []);
336
- ton = computed(() => TONS[this.issue()], ...ngDevMode ? [{ debugName: "ton" }] : /* istanbul ignore next */ []);
337
- icone = computed(() => this.issue() === "attente" ? "horloge" : ICONES_DE_TON[this.ton()], ...ngDevMode ? [{ debugName: "icone" }] : /* istanbul ignore next */ []);
327
+ issue = input.required(...ngDevMode ? [{ debugName: "issue" }] : /* istanbul ignore next */ []);
328
+ titre = input.required(...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
329
+ precision = input(null, ...ngDevMode ? [{ debugName: "precision" }] : /* istanbul ignore next */ []);
330
+ reference = input(null, ...ngDevMode ? [{ debugName: "reference" }] : /* istanbul ignore next */ []);
331
+ etiquetteDeReference = input(null, ...ngDevMode ? [{ debugName: "etiquetteDeReference" }] : /* istanbul ignore next */ []);
332
+ horodatage = input(null, ...ngDevMode ? [{ debugName: "horodatage" }] : /* istanbul ignore next */ []);
333
+ etiquetteDHorodatage = input(null, ...ngDevMode ? [{ debugName: "etiquetteDHorodatage" }] : /* istanbul ignore next */ []);
334
+ niveauDuTitre = input(1, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
335
+ disposition = input("page", ...ngDevMode ? [{ debugName: "disposition" }] : /* istanbul ignore next */ []);
336
+ ton = computed(() => TONS[this.issue()], ...ngDevMode ? [{ debugName: "ton" }] : /* istanbul ignore next */ []);
337
+ icone = computed(() => this.issue() === "attente" ? "horloge" : ICONES_DE_TON[this.ton()], ...ngDevMode ? [{ debugName: "icone" }] : /* istanbul ignore next */ []);
338
338
  mot = computed(() => {
339
339
  const libelles = this.libelles();
340
340
  switch (this.ton()) {
341
341
  case "succes": return libelles.tonSucces;
342
+ case "erreur": return libelles.tonErreur;
342
343
  case "danger": return libelles.tonDanger;
343
344
  case "avertissement": return libelles.tonAvertissement;
344
345
  default: return libelles.tonInformation;
345
346
  }
346
- }, ...ngDevMode ? [{ debugName: "mot" }] : /* istanbul ignore next */ []);
347
- etiquetteDeReferenceLue = computed(() => this.etiquetteDeReference() ?? this.libelles().referenceDeLOperation, ...ngDevMode ? [{ debugName: "etiquetteDeReferenceLue" }] : /* istanbul ignore next */ []);
347
+ }, ...ngDevMode ? [{ debugName: "mot" }] : /* istanbul ignore next */ []);
348
+ etiquetteDeReferenceLue = computed(() => this.etiquetteDeReference() ?? this.libelles().referenceDeLOperation, ...ngDevMode ? [{ debugName: "etiquetteDeReferenceLue" }] : /* istanbul ignore next */ []);
348
349
  static ɵfac = i0.ɵɵngDeclareFactory({
349
350
  minVersion: "12.0.0",
350
- version: "22.2.0",
351
+ version: "22.2.1",
351
352
  ngImport: i0,
352
353
  type: StOutcome,
353
354
  deps: [],
@@ -355,7 +356,7 @@ var StOutcome = class StOutcome {
355
356
  });
356
357
  static ɵcmp = i0.ɵɵngDeclareComponent({
357
358
  minVersion: "17.0.0",
358
- version: "22.2.0",
359
+ version: "22.2.1",
359
360
  type: StOutcome,
360
361
  isStandalone: true,
361
362
  selector: "st-outcome",
@@ -433,7 +434,7 @@ var StOutcome = class StOutcome {
433
434
  },
434
435
  ngImport: i0,
435
436
  template: "<div class=\"st-outcome__entete\">\n <st-icon\n class=\"st-outcome__icone\"\n [nom]=\"icone()\"\n variante=\"plein\"\n [ton]=\"ton()\"\n [taille]=\"disposition() === 'page' ? '48' : '20'\"\n />\n @switch (niveauDuTitre()) {\n @case (1) {\n <h1 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h1>\n }\n @case (2) {\n <h2 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h2>\n }\n @case (3) {\n <h3 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h3>\n }\n @default {\n <h4 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h4>\n }\n }\n <span class=\"st-outcome__etiquette\"><ng-content select=\"[etiquette]\" /></span>\n</div>\n\n@if (precision(); as texte) {\n <p class=\"st-outcome__precision\">{{ texte }}</p>\n}\n\n@if (reference() !== null || horodatage() !== null) {\n <div class=\"st-outcome__faits\">\n @if (reference(); as valeur) {\n <div class=\"st-outcome__fait\">\n <!-- Vue ici, lue par st-code, qui la dit avant la valeur : une seule lecture. -->\n <span class=\"st-outcome__etiquette-de-fait\" aria-hidden=\"true\">{{\n etiquetteDeReferenceLue()\n }}</span>\n <st-code [valeur]=\"valeur\" [etiquette]=\"etiquetteDeReferenceLue()\" />\n </div>\n }\n @if (horodatage(); as instant) {\n <div class=\"st-outcome__fait\">\n @if (etiquetteDHorodatage(); as etiquette) {\n <span class=\"st-outcome__etiquette-de-fait\">{{ etiquette }}</span>\n }\n <st-date class=\"st-outcome__instant\" [valeur]=\"instant\" format=\"date-heure\" />\n </div>\n }\n <span class=\"st-outcome__medaillon\"><ng-content select=\"[medaillon]\" /></span>\n </div>\n}\n\n<ng-content select=\"[recapitulatif]\" />\n<ng-content select=\"[suite]\" />\n<div class=\"st-outcome__actions\"><ng-content select=\"[actions]\" /></div>\n",
436
- styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-4);justify-items:start}.st-outcome__entete{display:grid;gap:var(--st-espacement-3);justify-items:start}.st-outcome__titre{margin:0}.st-outcome__precision{max-inline-size:var(--st-largeur-normale);margin:0;color:var(--st-couleur-texte-discret)}.st-outcome__faits{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3) var(--st-espacement-6);align-items:center}.st-outcome__fait{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-outcome__etiquette-de-fait{font-size:var(--st-taille-xs);font-weight:var(--st-graisse-semi);line-height:var(--st-interligne-xs);color:var(--st-couleur-texte-discret);text-transform:uppercase;letter-spacing:var(--st-interlettrage-capitales)}.st-outcome__instant{font-weight:var(--st-graisse-semi)}.st-outcome__actions{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__actions:empty{display:none}:host ::ng-deep .st-outcome__actions>[actions]{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__etiquette:empty,.st-outcome__medaillon:empty{display:none}:host([data-disposition=compacte]){gap:var(--st-espacement-2);justify-items:stretch;padding:var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-lg)}:host([data-disposition=compacte]) .st-outcome__entete{display:flex;gap:var(--st-espacement-1-5);align-items:center}:host([data-disposition=compacte]) .st-outcome__titre{flex:1;font-weight:var(--st-graisse-semi)}:host([data-disposition=compacte]) .st-outcome__faits{justify-content:space-between}:host([data-disposition=compacte][data-issue=succes]) .st-outcome__titre{color:var(--st-couleur-succes)}:host([data-disposition=compacte][data-issue=echec]) .st-outcome__titre{color:var(--st-couleur-danger)}@media(forced-colors:active){:host([data-disposition=compacte]){border:var(--st-epaisseur-fine) solid CanvasText}}\n"],
437
+ styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-4);justify-items:start}.st-outcome__entete{display:grid;gap:var(--st-espacement-3);justify-items:start}.st-outcome__titre{margin:0}.st-outcome__precision{max-inline-size:var(--st-largeur-normale);margin:0;color:var(--st-couleur-texte-discret)}.st-outcome__faits{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3) var(--st-espacement-6);align-items:center}.st-outcome__fait{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-outcome__etiquette-de-fait{font-size:var(--st-taille-xs);font-weight:var(--st-graisse-semi);line-height:var(--st-interligne-xs);color:var(--st-couleur-texte-discret);text-transform:uppercase;letter-spacing:var(--st-interlettrage-capitales)}.st-outcome__instant{font-weight:var(--st-graisse-semi)}.st-outcome__actions{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__actions:empty{display:none}:host ::ng-deep .st-outcome__actions>[actions]{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__etiquette:empty,.st-outcome__medaillon:empty{display:none}:host([data-disposition=compacte]){gap:var(--st-espacement-2);justify-items:stretch;padding:var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-lg)}:host([data-disposition=compacte]) .st-outcome__entete{display:flex;gap:var(--st-espacement-1-5);align-items:center}:host([data-disposition=compacte]) .st-outcome__titre{flex:1;font-weight:var(--st-graisse-semi)}:host([data-disposition=compacte]) .st-outcome__faits{justify-content:space-between}:host([data-disposition=compacte][data-issue=succes]) .st-outcome__titre{color:var(--st-couleur-succes)}:host([data-disposition=compacte][data-issue=echec]) .st-outcome__titre{color:var(--st-couleur-erreur)}@media(forced-colors:active){:host([data-disposition=compacte]){border:var(--st-epaisseur-fine) solid CanvasText}}\n"],
437
438
  dependencies: [
438
439
  {
439
440
  kind: "component",
@@ -492,7 +493,7 @@ var StOutcome = class StOutcome {
492
493
  };
493
494
  i0.ɵɵngDeclareClassMetadata({
494
495
  minVersion: "12.0.0",
495
- version: "22.2.0",
496
+ version: "22.2.1",
496
497
  ngImport: i0,
497
498
  type: StOutcome,
498
499
  decorators: [{
@@ -512,7 +513,7 @@ i0.ɵɵngDeclareClassMetadata({
512
513
  "[attr.data-disposition]": "disposition()"
513
514
  },
514
515
  template: "<div class=\"st-outcome__entete\">\n <st-icon\n class=\"st-outcome__icone\"\n [nom]=\"icone()\"\n variante=\"plein\"\n [ton]=\"ton()\"\n [taille]=\"disposition() === 'page' ? '48' : '20'\"\n />\n @switch (niveauDuTitre()) {\n @case (1) {\n <h1 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h1>\n }\n @case (2) {\n <h2 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h2>\n }\n @case (3) {\n <h3 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h3>\n }\n @default {\n <h4 stHeading class=\"st-outcome__titre\" [taille]=\"disposition() === 'page' ? '2xl' : 'sm'\">\n <span class=\"st-vh\">{{ mot() }}</span\n >{{ titre() }}\n </h4>\n }\n }\n <span class=\"st-outcome__etiquette\"><ng-content select=\"[etiquette]\" /></span>\n</div>\n\n@if (precision(); as texte) {\n <p class=\"st-outcome__precision\">{{ texte }}</p>\n}\n\n@if (reference() !== null || horodatage() !== null) {\n <div class=\"st-outcome__faits\">\n @if (reference(); as valeur) {\n <div class=\"st-outcome__fait\">\n <!-- Vue ici, lue par st-code, qui la dit avant la valeur : une seule lecture. -->\n <span class=\"st-outcome__etiquette-de-fait\" aria-hidden=\"true\">{{\n etiquetteDeReferenceLue()\n }}</span>\n <st-code [valeur]=\"valeur\" [etiquette]=\"etiquetteDeReferenceLue()\" />\n </div>\n }\n @if (horodatage(); as instant) {\n <div class=\"st-outcome__fait\">\n @if (etiquetteDHorodatage(); as etiquette) {\n <span class=\"st-outcome__etiquette-de-fait\">{{ etiquette }}</span>\n }\n <st-date class=\"st-outcome__instant\" [valeur]=\"instant\" format=\"date-heure\" />\n </div>\n }\n <span class=\"st-outcome__medaillon\"><ng-content select=\"[medaillon]\" /></span>\n </div>\n}\n\n<ng-content select=\"[recapitulatif]\" />\n<ng-content select=\"[suite]\" />\n<div class=\"st-outcome__actions\"><ng-content select=\"[actions]\" /></div>\n",
515
- styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-4);justify-items:start}.st-outcome__entete{display:grid;gap:var(--st-espacement-3);justify-items:start}.st-outcome__titre{margin:0}.st-outcome__precision{max-inline-size:var(--st-largeur-normale);margin:0;color:var(--st-couleur-texte-discret)}.st-outcome__faits{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3) var(--st-espacement-6);align-items:center}.st-outcome__fait{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-outcome__etiquette-de-fait{font-size:var(--st-taille-xs);font-weight:var(--st-graisse-semi);line-height:var(--st-interligne-xs);color:var(--st-couleur-texte-discret);text-transform:uppercase;letter-spacing:var(--st-interlettrage-capitales)}.st-outcome__instant{font-weight:var(--st-graisse-semi)}.st-outcome__actions{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__actions:empty{display:none}:host ::ng-deep .st-outcome__actions>[actions]{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__etiquette:empty,.st-outcome__medaillon:empty{display:none}:host([data-disposition=compacte]){gap:var(--st-espacement-2);justify-items:stretch;padding:var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-lg)}:host([data-disposition=compacte]) .st-outcome__entete{display:flex;gap:var(--st-espacement-1-5);align-items:center}:host([data-disposition=compacte]) .st-outcome__titre{flex:1;font-weight:var(--st-graisse-semi)}:host([data-disposition=compacte]) .st-outcome__faits{justify-content:space-between}:host([data-disposition=compacte][data-issue=succes]) .st-outcome__titre{color:var(--st-couleur-succes)}:host([data-disposition=compacte][data-issue=echec]) .st-outcome__titre{color:var(--st-couleur-danger)}@media(forced-colors:active){:host([data-disposition=compacte]){border:var(--st-epaisseur-fine) solid CanvasText}}\n"]
516
+ styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-4);justify-items:start}.st-outcome__entete{display:grid;gap:var(--st-espacement-3);justify-items:start}.st-outcome__titre{margin:0}.st-outcome__precision{max-inline-size:var(--st-largeur-normale);margin:0;color:var(--st-couleur-texte-discret)}.st-outcome__faits{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3) var(--st-espacement-6);align-items:center}.st-outcome__fait{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-outcome__etiquette-de-fait{font-size:var(--st-taille-xs);font-weight:var(--st-graisse-semi);line-height:var(--st-interligne-xs);color:var(--st-couleur-texte-discret);text-transform:uppercase;letter-spacing:var(--st-interlettrage-capitales)}.st-outcome__instant{font-weight:var(--st-graisse-semi)}.st-outcome__actions{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__actions:empty{display:none}:host ::ng-deep .st-outcome__actions>[actions]{display:flex;flex-wrap:wrap;gap:var(--st-espacement-3);align-items:center}.st-outcome__etiquette:empty,.st-outcome__medaillon:empty{display:none}:host([data-disposition=compacte]){gap:var(--st-espacement-2);justify-items:stretch;padding:var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-lg)}:host([data-disposition=compacte]) .st-outcome__entete{display:flex;gap:var(--st-espacement-1-5);align-items:center}:host([data-disposition=compacte]) .st-outcome__titre{flex:1;font-weight:var(--st-graisse-semi)}:host([data-disposition=compacte]) .st-outcome__faits{justify-content:space-between}:host([data-disposition=compacte][data-issue=succes]) .st-outcome__titre{color:var(--st-couleur-succes)}:host([data-disposition=compacte][data-issue=echec]) .st-outcome__titre{color:var(--st-couleur-erreur)}@media(forced-colors:active){:host([data-disposition=compacte]){border:var(--st-epaisseur-fine) solid CanvasText}}\n"]
516
517
  }]
517
518
  }],
518
519
  propDecorators: {
@@ -604,7 +605,7 @@ const PROFILS = {
604
605
  icone: "cercle-coche"
605
606
  },
606
607
  refusee: {
607
- ton: "danger",
608
+ ton: "erreur",
608
609
  icone: "cercle-croix"
609
610
  },
610
611
  bloquee: {
@@ -615,12 +616,12 @@ const PROFILS = {
615
616
  var StTaskList = class StTaskList {
616
617
  libelles = inject(ST_LIBELLES);
617
618
  identifiants = inject(StIdentifiants);
618
- taches = input.required(...ngDevMode ? [{ debugName: "taches" }] : /* istanbul ignore next */ []);
619
- etiquette = input.required(...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
620
- sections = input(null, ...ngDevMode ? [{ debugName: "sections" }] : /* istanbul ignore next */ []);
621
- niveauDuTitre = input(2, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
619
+ taches = input.required(...ngDevMode ? [{ debugName: "taches" }] : /* istanbul ignore next */ []);
620
+ etiquette = input.required(...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
621
+ sections = input(null, ...ngDevMode ? [{ debugName: "sections" }] : /* istanbul ignore next */ []);
622
+ niveauDuTitre = input(2, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
622
623
  resume = input(true, {
623
- ...ngDevMode ? { debugName: "resume" } : /* istanbul ignore next */ {},
624
+ ...ngDevMode ? { debugName: "resume" } : /* istanbul ignore next */ {},
624
625
  transform: booleanAttribute
625
626
  });
626
627
  ouverture = output();
@@ -637,7 +638,7 @@ var StTaskList = class StTaskList {
637
638
  idDeLaPrecision,
638
639
  decritPar: idDeLaPrecision === null ? idDuStatut : `${idDuStatut} ${idDeLaPrecision}`
639
640
  };
640
- }), ...ngDevMode ? [{ debugName: "lues" }] : /* istanbul ignore next */ []);
641
+ }), ...ngDevMode ? [{ debugName: "lues" }] : /* istanbul ignore next */ []);
641
642
  groupes = computed(() => {
642
643
  const sections = this.sections();
643
644
  if (sections === null) return null;
@@ -649,16 +650,16 @@ var StTaskList = class StTaskList {
649
650
  return tache === void 0 ? [] : [tache];
650
651
  })
651
652
  }));
652
- }, ...ngDevMode ? [{ debugName: "groupes" }] : /* istanbul ignore next */ []);
653
+ }, ...ngDevMode ? [{ debugName: "groupes" }] : /* istanbul ignore next */ []);
653
654
  texteDuResume = computed(() => {
654
655
  const taches = this.taches();
655
656
  const faites = taches.filter((tache) => tache.statut === "terminee").length;
656
657
  return this.libelles().tachesTerminees(faites, taches.length);
657
- }, ...ngDevMode ? [{ debugName: "texteDuResume" }] : /* istanbul ignore next */ []);
658
+ }, ...ngDevMode ? [{ debugName: "texteDuResume" }] : /* istanbul ignore next */ []);
658
659
  idDuTitre = (indice) => `${this.prefixe}-section-${String(indice)}`;
659
660
  static ɵfac = i0.ɵɵngDeclareFactory({
660
661
  minVersion: "12.0.0",
661
- version: "22.2.0",
662
+ version: "22.2.1",
662
663
  ngImport: i0,
663
664
  type: StTaskList,
664
665
  deps: [],
@@ -666,7 +667,7 @@ var StTaskList = class StTaskList {
666
667
  });
667
668
  static ɵcmp = i0.ɵɵngDeclareComponent({
668
669
  minVersion: "17.0.0",
669
- version: "22.2.0",
670
+ version: "22.2.1",
670
671
  type: StTaskList,
671
672
  isStandalone: true,
672
673
  selector: "st-task-list",
@@ -784,7 +785,7 @@ var StTaskList = class StTaskList {
784
785
  };
785
786
  i0.ɵɵngDeclareClassMetadata({
786
787
  minVersion: "12.0.0",
787
- version: "22.2.0",
788
+ version: "22.2.1",
788
789
  ngImport: i0,
789
790
  type: StTaskList,
790
791
  decorators: [{
@@ -854,24 +855,24 @@ i0.ɵɵngDeclareClassMetadata({
854
855
  var StStepper = class StStepper {
855
856
  libelles = inject(ST_LIBELLES);
856
857
  locale = inject(ST_LOCALE);
857
- etapes = input.required(...ngDevMode ? [{ debugName: "etapes" }] : /* istanbul ignore next */ []);
858
- etape = input.required(...ngDevMode ? [{ debugName: "etape" }] : /* istanbul ignore next */ []);
859
- etiquette = input(null, ...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
860
- libelle = input(null, ...ngDevMode ? [{ debugName: "libelle" }] : /* istanbul ignore next */ []);
858
+ etapes = input.required(...ngDevMode ? [{ debugName: "etapes" }] : /* istanbul ignore next */ []);
859
+ etape = input.required(...ngDevMode ? [{ debugName: "etape" }] : /* istanbul ignore next */ []);
860
+ etiquette = input(null, ...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
861
+ libelle = input(null, ...ngDevMode ? [{ debugName: "libelle" }] : /* istanbul ignore next */ []);
861
862
  compacte = input(false, {
862
- ...ngDevMode ? { debugName: "compacte" } : /* istanbul ignore next */ {},
863
+ ...ngDevMode ? { debugName: "compacte" } : /* istanbul ignore next */ {},
863
864
  transform: booleanAttribute
864
865
  });
865
- orientation = input("horizontale", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
866
- etiquetteLue = computed(() => this.etiquette() ?? this.libelle() ?? this.libelles().etapes, ...ngDevMode ? [{ debugName: "etiquetteLue" }] : /* istanbul ignore next */ []);
867
- motDeLEtapeFaite = computed(() => this.libelles().etapeTerminee, ...ngDevMode ? [{ debugName: "motDeLEtapeFaite" }] : /* istanbul ignore next */ []);
866
+ orientation = input("horizontale", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
867
+ etiquetteLue = computed(() => this.etiquette() ?? this.libelle() ?? this.libelles().etapes, ...ngDevMode ? [{ debugName: "etiquetteLue" }] : /* istanbul ignore next */ []);
868
+ motDeLEtapeFaite = computed(() => this.libelles().etapeTerminee, ...ngDevMode ? [{ debugName: "motDeLEtapeFaite" }] : /* istanbul ignore next */ []);
868
869
  courante = computed(() => {
869
870
  const demande = this.etape();
870
871
  const total = this.etapes().length;
871
872
  const borne = Math.min(total, Math.max(0, Number.isFinite(demande) ? Math.trunc(demande) : 0));
872
873
  if (borne !== demande && isDevMode()) console.warn(`st-stepper : l'etape ${String(demande)} est hors du parcours (0 a ${String(total)}) ; elle est ramenee a ${String(borne)}.`);
873
874
  return borne;
874
- }, ...ngDevMode ? [{ debugName: "courante" }] : /* istanbul ignore next */ []);
875
+ }, ...ngDevMode ? [{ debugName: "courante" }] : /* istanbul ignore next */ []);
875
876
  lignes = computed(() => {
876
877
  const courante = this.courante();
877
878
  const libelles = this.libelles();
@@ -889,11 +890,11 @@ var StStepper = class StStepper {
889
890
  relie: indice < etapes.length - 1
890
891
  };
891
892
  });
892
- }, ...ngDevMode ? [{ debugName: "lignes" }] : /* istanbul ignore next */ []);
893
+ }, ...ngDevMode ? [{ debugName: "lignes" }] : /* istanbul ignore next */ []);
893
894
  formatDuPourcentage = computed(() => new Intl.NumberFormat(this.locale(), {
894
895
  style: "percent",
895
896
  maximumFractionDigits: 0
896
- }), ...ngDevMode ? [{ debugName: "formatDuPourcentage" }] : /* istanbul ignore next */ []);
897
+ }), ...ngDevMode ? [{ debugName: "formatDuPourcentage" }] : /* istanbul ignore next */ []);
897
898
  resume = computed(() => {
898
899
  const etapes = this.etapes();
899
900
  const total = etapes.length;
@@ -909,10 +910,10 @@ var StStepper = class StStepper {
909
910
  precedente: precedente === void 0 ? null : libelles.etapePrecedente(precedente.libelle),
910
911
  suivante: suivante === void 0 ? null : libelles.etapeSuivante(suivante.libelle)
911
912
  };
912
- }, ...ngDevMode ? [{ debugName: "resume" }] : /* istanbul ignore next */ []);
913
+ }, ...ngDevMode ? [{ debugName: "resume" }] : /* istanbul ignore next */ []);
913
914
  static ɵfac = i0.ɵɵngDeclareFactory({
914
915
  minVersion: "12.0.0",
915
- version: "22.2.0",
916
+ version: "22.2.1",
916
917
  ngImport: i0,
917
918
  type: StStepper,
918
919
  deps: [],
@@ -920,7 +921,7 @@ var StStepper = class StStepper {
920
921
  });
921
922
  static ɵcmp = i0.ɵɵngDeclareComponent({
922
923
  minVersion: "17.0.0",
923
- version: "22.2.0",
924
+ version: "22.2.1",
924
925
  type: StStepper,
925
926
  isStandalone: true,
926
927
  selector: "st-stepper",
@@ -977,7 +978,7 @@ var StStepper = class StStepper {
977
978
  },
978
979
  ngImport: i0,
979
980
  template: "<!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste, et c'est la seule\n forme lue, la vue compacte etant masquee (audit UI du 2026-09-27, D-1). -->\n<ol class=\"st-stepper__liste\" role=\"list\" [attr.aria-label]=\"etiquetteLue()\">\n @for (ligne of lignes(); track $index) {\n <li\n class=\"st-stepper__etape\"\n [attr.data-etat]=\"ligne.etat\"\n [attr.aria-current]=\"ligne.etat === 'courante' ? 'step' : null\"\n >\n <span class=\"st-stepper__tete\" aria-hidden=\"true\">\n <span class=\"st-stepper__repere\">\n @if (ligne.etat === 'faite') {\n <st-icon nom=\"coche\" taille=\"20\" />\n } @else {\n {{ ligne.numero }}\n }\n </span>\n @if (ligne.relie) {\n <span class=\"st-stepper__connecteur\"></span>\n }\n </span>\n <span class=\"st-stepper__textes\">\n <span class=\"st-stepper__surtitre\">\n <span>{{ ligne.surtitre }}</span>\n @if (ligne.etat === 'faite') {\n <st-icon nom=\"double-coche\" taille=\"14\" />\n <span class=\"st-vh\">, {{ motDeLEtapeFaite() }}</span>\n }\n </span>\n <span class=\"st-stepper__libelle\">{{ ligne.libelle }}</span>\n @if (ligne.description !== null) {\n <span class=\"st-stepper__description\">{{ ligne.description }}</span>\n }\n </span>\n </li>\n }\n</ol>\n@if (resume(); as resume) {\n <div class=\"st-stepper__compact\" aria-hidden=\"true\">\n <div class=\"st-stepper__compact-entete\">\n <div class=\"st-stepper__compact-titres\">\n @if (libelle(); as libelle) {\n <span class=\"st-stepper__compact-surtitre\">{{ libelle }}</span>\n }\n <span class=\"st-stepper__compact-titre\">{{ resume.titre }}</span>\n </div>\n <span class=\"st-stepper__pourcentage\">{{ resume.pourcentage }}</span>\n </div>\n <div class=\"st-stepper__segments\">\n @for (ligne of lignes(); track $index) {\n <span class=\"st-stepper__segment\" [attr.data-etat]=\"ligne.etat\"></span>\n }\n </div>\n <div class=\"st-stepper__voisines\">\n @if (resume.precedente; as precedente) {\n <span>{{ precedente }}</span>\n }\n @if (resume.suivante; as suivante) {\n <span class=\"st-stepper__suivante\">{{ suivante }}</span>\n }\n </div>\n </div>\n}\n",
980
- styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block;container-type:inline-size}.st-stepper__liste{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;list-style:none}.st-stepper__compact{display:flex;flex-direction:column;gap:var(--st-espacement-2);padding:var(--st-espacement-6) var(--st-espacement-4) var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-md)}.st-stepper__compact-entete{display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between}.st-stepper__compact-titres{display:flex;flex-direction:column;min-inline-size:0}.st-stepper__compact-surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;color:var(--st-couleur-texte-attenue)}.st-stepper__compact-titre{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-normal);color:var(--st-couleur-texte)}.st-stepper__pourcentage{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;flex:none;font-family:var(--st-police-mono);font-weight:var(--st-graisse-grasse);color:var(--st-couleur-texte-primaire);text-transform:none}.st-stepper__segments{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-1-5);block-size:var(--st-espacement-2)}.st-stepper__segment{display:block;background:var(--st-couleur-surface-active);border-radius:var(--st-rayon-pleine)}.st-stepper__segment[data-etat=faite]{background:var(--st-couleur-succes)}.st-stepper__segment[data-etat=courante]{background:var(--st-couleur-primaire)}.st-stepper__voisines{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between;padding-block-start:var(--st-espacement-1);color:var(--st-couleur-texte-discret);text-transform:none}.st-stepper__suivante{margin-inline-start:auto}@container (min-width: 48rem){:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;position:relative;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-4);padding:0}:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__compact{display:none}}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;display:grid;padding:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__compact{display:none}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__etape{flex-direction:row;gap:var(--st-espacement-3)}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__tete{flex-direction:column;align-self:stretch}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__connecteur{inline-size:var(--st-epaisseur-epaisse);block-size:auto;min-block-size:var(--st-espacement-4);margin-block:var(--st-espacement-1);margin-inline-start:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__textes{padding-block:var(--st-espacement-2) var(--st-espacement-4)}.st-stepper__etape{position:relative;display:flex;flex-direction:column;gap:var(--st-espacement-2)}.st-stepper__tete{display:flex;align-items:center}.st-stepper__repere{display:flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-hauteur-commande-lg);block-size:var(--st-hauteur-commande-lg);line-height:var(--st-interligne-md);color:var(--st-couleur-texte-attenue);background:var(--st-couleur-surface-conteneur-haut);border-radius:var(--st-rayon-pleine)}.st-stepper__etape:not([data-etat=faite]) .st-stepper__repere{font-size:var(--st-taille-lg);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-approche-lg);font-weight:var(--st-graisse-grasse)}.st-stepper__connecteur{flex:1 1 0%;block-size:var(--st-epaisseur-epaisse);margin-inline-start:var(--st-espacement-2);background:var(--st-couleur-surface-active)}.st-stepper__textes{display:flex;flex-direction:column}.st-stepper__surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-1);align-items:center;color:var(--st-couleur-texte-attenue)}.st-stepper__libelle{font-size:var(--st-taille-md);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);overflow-wrap:anywhere;font-weight:var(--st-graisse-moyenne);color:var(--st-couleur-texte-attenue)}.st-stepper__description{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;overflow-wrap:anywhere;color:var(--st-couleur-texte-attenue);text-transform:none}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__surtitre{font-weight:var(--st-graisse-grasse)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__libelle{font-weight:var(--st-graisse-semi);color:var(--st-couleur-texte)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__description{color:var(--st-couleur-texte-discret)}.st-stepper__etape[data-etat=faite] .st-stepper__repere{color:var(--st-couleur-sur-succes);background:var(--st-couleur-succes);box-shadow:var(--st-ombre-repos)}.st-stepper__etape[data-etat=faite] .st-stepper__connecteur{background:var(--st-couleur-succes)}.st-stepper__etape[data-etat=faite] .st-stepper__surtitre{color:var(--st-couleur-succes)}.st-stepper__etape[data-etat=courante] .st-stepper__repere{color:var(--st-couleur-sur-primaire);background:var(--st-couleur-primaire);box-shadow:0 0 0 var(--st-epaisseur-epaisse) var(--st-couleur-primaire-attenue),var(--st-ombre-survol)}.st-stepper__etape[data-etat=courante] .st-stepper__surtitre{color:var(--st-couleur-texte-primaire)}@media(forced-colors:active){.st-stepper__etape[data-etat=courante] .st-stepper__repere,.st-stepper__etape[data-etat=faite] .st-stepper__repere,.st-stepper__segment[data-etat=faite],.st-stepper__segment[data-etat=courante]{forced-color-adjust:none;color:HighlightText;background:Highlight}.st-stepper__segment[data-etat=courante]{background:Canvas;outline:var(--st-epaisseur-moyenne) solid Highlight;outline-offset:calc(-1 * var(--st-epaisseur-moyenne))}.st-stepper__etape[data-etat=a-venir] .st-stepper__repere,.st-stepper__segment[data-etat=a-venir]{outline:var(--st-epaisseur-fine) solid CanvasText;outline-offset:calc(-1 * var(--st-epaisseur-fine))}.st-stepper__connecteur{forced-color-adjust:none;background:CanvasText}}\n"],
981
+ styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block;container-type:inline-size}.st-stepper__liste{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;list-style:none}.st-stepper__compact{display:flex;flex-direction:column;gap:var(--st-espacement-2);padding:var(--st-espacement-6) var(--st-espacement-4) var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-md)}.st-stepper__compact-entete{display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between}.st-stepper__compact-titres{display:flex;flex-direction:column;min-inline-size:0}.st-stepper__compact-surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;color:var(--st-couleur-texte-attenue)}.st-stepper__compact-titre{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-normal);color:var(--st-couleur-texte)}.st-stepper__pourcentage{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;flex:none;font-family:var(--st-police-mono);font-weight:var(--st-graisse-grasse);color:var(--st-couleur-texte-primaire);text-transform:none}.st-stepper__segments{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-1-5);block-size:var(--st-espacement-2)}.st-stepper__segment{display:block;background:var(--st-couleur-surface-active);border-radius:var(--st-rayon-pleine)}.st-stepper__segment[data-etat=faite]{background:var(--st-couleur-succes)}.st-stepper__segment[data-etat=courante]{background:var(--st-couleur-primaire)}.st-stepper__voisines{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between;padding-block-start:var(--st-espacement-1);color:var(--st-couleur-texte-discret);text-transform:none}.st-stepper__suivante{margin-inline-start:auto}@container (min-width: 48rem){:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;position:relative;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-4);padding:0}:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__compact{display:none}}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;display:grid;padding:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__compact{display:none}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__etape{flex-direction:row;gap:var(--st-espacement-3)}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__tete{flex-direction:column;align-self:stretch}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__connecteur{inline-size:var(--st-epaisseur-epaisse);block-size:auto;min-block-size:var(--st-espacement-4);margin-block:var(--st-espacement-1);margin-inline-start:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__textes{padding-block:var(--st-espacement-2) var(--st-espacement-4)}.st-stepper__etape{position:relative;display:flex;flex-direction:column;gap:var(--st-espacement-2)}.st-stepper__tete{display:flex;align-items:center}.st-stepper__repere{display:flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-hauteur-commande-lg);block-size:var(--st-hauteur-commande-lg);line-height:var(--st-interligne-md);color:var(--st-couleur-texte-attenue);background:var(--st-couleur-surface-conteneur-haut);border-radius:var(--st-rayon-pleine)}.st-stepper__etape:not([data-etat=faite]) .st-stepper__repere{font-family:var(--st-police-titre, var(--st-police-base));font-size:var(--st-taille-lg);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-approche-lg);font-weight:var(--st-graisse-grasse)}.st-stepper__connecteur{flex:1 1 0%;block-size:var(--st-epaisseur-epaisse);margin-inline-start:var(--st-espacement-2);background:var(--st-couleur-surface-active)}.st-stepper__textes{display:flex;flex-direction:column}.st-stepper__surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-1);align-items:center;color:var(--st-couleur-texte-attenue)}.st-stepper__libelle{font-size:var(--st-taille-md);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);overflow-wrap:anywhere;font-weight:var(--st-graisse-moyenne);color:var(--st-couleur-texte-attenue)}.st-stepper__description{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;overflow-wrap:anywhere;color:var(--st-couleur-texte-attenue);text-transform:none}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__surtitre{font-weight:var(--st-graisse-grasse)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__libelle{font-weight:var(--st-graisse-semi);color:var(--st-couleur-texte)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__description{color:var(--st-couleur-texte-discret)}.st-stepper__etape[data-etat=faite] .st-stepper__repere{color:var(--st-couleur-sur-succes);background:var(--st-couleur-succes);box-shadow:var(--st-ombre-repos)}.st-stepper__etape[data-etat=faite] .st-stepper__connecteur{background:var(--st-couleur-succes)}.st-stepper__etape[data-etat=faite] .st-stepper__surtitre{color:var(--st-couleur-succes)}.st-stepper__etape[data-etat=courante] .st-stepper__repere{color:var(--st-couleur-sur-primaire);background:var(--st-couleur-primaire);box-shadow:0 0 0 var(--st-epaisseur-epaisse) var(--st-couleur-primaire-attenue),var(--st-ombre-survol)}.st-stepper__etape[data-etat=courante] .st-stepper__surtitre{color:var(--st-couleur-texte-primaire)}@media(forced-colors:active){.st-stepper__etape[data-etat=courante] .st-stepper__repere,.st-stepper__etape[data-etat=faite] .st-stepper__repere,.st-stepper__segment[data-etat=faite],.st-stepper__segment[data-etat=courante]{forced-color-adjust:none;color:HighlightText;background:Highlight}.st-stepper__segment[data-etat=courante]{background:Canvas;outline:var(--st-epaisseur-moyenne) solid Highlight;outline-offset:calc(-1 * var(--st-epaisseur-moyenne))}.st-stepper__etape[data-etat=a-venir] .st-stepper__repere,.st-stepper__segment[data-etat=a-venir]{outline:var(--st-epaisseur-fine) solid CanvasText;outline-offset:calc(-1 * var(--st-epaisseur-fine))}.st-stepper__connecteur{forced-color-adjust:none;background:CanvasText}}\n"],
981
982
  dependencies: [{
982
983
  kind: "component",
983
984
  type: StIcon,
@@ -999,7 +1000,7 @@ var StStepper = class StStepper {
999
1000
  };
1000
1001
  i0.ɵɵngDeclareClassMetadata({
1001
1002
  minVersion: "12.0.0",
1002
- version: "22.2.0",
1003
+ version: "22.2.1",
1003
1004
  ngImport: i0,
1004
1005
  type: StStepper,
1005
1006
  decorators: [{
@@ -1014,7 +1015,7 @@ i0.ɵɵngDeclareClassMetadata({
1014
1015
  "[attr.data-orientation]": "orientation() === 'verticale' ? 'verticale' : null"
1015
1016
  },
1016
1017
  template: "<!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste, et c'est la seule\n forme lue, la vue compacte etant masquee (audit UI du 2026-09-27, D-1). -->\n<ol class=\"st-stepper__liste\" role=\"list\" [attr.aria-label]=\"etiquetteLue()\">\n @for (ligne of lignes(); track $index) {\n <li\n class=\"st-stepper__etape\"\n [attr.data-etat]=\"ligne.etat\"\n [attr.aria-current]=\"ligne.etat === 'courante' ? 'step' : null\"\n >\n <span class=\"st-stepper__tete\" aria-hidden=\"true\">\n <span class=\"st-stepper__repere\">\n @if (ligne.etat === 'faite') {\n <st-icon nom=\"coche\" taille=\"20\" />\n } @else {\n {{ ligne.numero }}\n }\n </span>\n @if (ligne.relie) {\n <span class=\"st-stepper__connecteur\"></span>\n }\n </span>\n <span class=\"st-stepper__textes\">\n <span class=\"st-stepper__surtitre\">\n <span>{{ ligne.surtitre }}</span>\n @if (ligne.etat === 'faite') {\n <st-icon nom=\"double-coche\" taille=\"14\" />\n <span class=\"st-vh\">, {{ motDeLEtapeFaite() }}</span>\n }\n </span>\n <span class=\"st-stepper__libelle\">{{ ligne.libelle }}</span>\n @if (ligne.description !== null) {\n <span class=\"st-stepper__description\">{{ ligne.description }}</span>\n }\n </span>\n </li>\n }\n</ol>\n@if (resume(); as resume) {\n <div class=\"st-stepper__compact\" aria-hidden=\"true\">\n <div class=\"st-stepper__compact-entete\">\n <div class=\"st-stepper__compact-titres\">\n @if (libelle(); as libelle) {\n <span class=\"st-stepper__compact-surtitre\">{{ libelle }}</span>\n }\n <span class=\"st-stepper__compact-titre\">{{ resume.titre }}</span>\n </div>\n <span class=\"st-stepper__pourcentage\">{{ resume.pourcentage }}</span>\n </div>\n <div class=\"st-stepper__segments\">\n @for (ligne of lignes(); track $index) {\n <span class=\"st-stepper__segment\" [attr.data-etat]=\"ligne.etat\"></span>\n }\n </div>\n <div class=\"st-stepper__voisines\">\n @if (resume.precedente; as precedente) {\n <span>{{ precedente }}</span>\n }\n @if (resume.suivante; as suivante) {\n <span class=\"st-stepper__suivante\">{{ suivante }}</span>\n }\n </div>\n </div>\n}\n",
1017
- styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block;container-type:inline-size}.st-stepper__liste{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;list-style:none}.st-stepper__compact{display:flex;flex-direction:column;gap:var(--st-espacement-2);padding:var(--st-espacement-6) var(--st-espacement-4) var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-md)}.st-stepper__compact-entete{display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between}.st-stepper__compact-titres{display:flex;flex-direction:column;min-inline-size:0}.st-stepper__compact-surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;color:var(--st-couleur-texte-attenue)}.st-stepper__compact-titre{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-normal);color:var(--st-couleur-texte)}.st-stepper__pourcentage{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;flex:none;font-family:var(--st-police-mono);font-weight:var(--st-graisse-grasse);color:var(--st-couleur-texte-primaire);text-transform:none}.st-stepper__segments{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-1-5);block-size:var(--st-espacement-2)}.st-stepper__segment{display:block;background:var(--st-couleur-surface-active);border-radius:var(--st-rayon-pleine)}.st-stepper__segment[data-etat=faite]{background:var(--st-couleur-succes)}.st-stepper__segment[data-etat=courante]{background:var(--st-couleur-primaire)}.st-stepper__voisines{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between;padding-block-start:var(--st-espacement-1);color:var(--st-couleur-texte-discret);text-transform:none}.st-stepper__suivante{margin-inline-start:auto}@container (min-width: 48rem){:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;position:relative;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-4);padding:0}:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__compact{display:none}}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;display:grid;padding:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__compact{display:none}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__etape{flex-direction:row;gap:var(--st-espacement-3)}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__tete{flex-direction:column;align-self:stretch}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__connecteur{inline-size:var(--st-epaisseur-epaisse);block-size:auto;min-block-size:var(--st-espacement-4);margin-block:var(--st-espacement-1);margin-inline-start:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__textes{padding-block:var(--st-espacement-2) var(--st-espacement-4)}.st-stepper__etape{position:relative;display:flex;flex-direction:column;gap:var(--st-espacement-2)}.st-stepper__tete{display:flex;align-items:center}.st-stepper__repere{display:flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-hauteur-commande-lg);block-size:var(--st-hauteur-commande-lg);line-height:var(--st-interligne-md);color:var(--st-couleur-texte-attenue);background:var(--st-couleur-surface-conteneur-haut);border-radius:var(--st-rayon-pleine)}.st-stepper__etape:not([data-etat=faite]) .st-stepper__repere{font-size:var(--st-taille-lg);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-approche-lg);font-weight:var(--st-graisse-grasse)}.st-stepper__connecteur{flex:1 1 0%;block-size:var(--st-epaisseur-epaisse);margin-inline-start:var(--st-espacement-2);background:var(--st-couleur-surface-active)}.st-stepper__textes{display:flex;flex-direction:column}.st-stepper__surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-1);align-items:center;color:var(--st-couleur-texte-attenue)}.st-stepper__libelle{font-size:var(--st-taille-md);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);overflow-wrap:anywhere;font-weight:var(--st-graisse-moyenne);color:var(--st-couleur-texte-attenue)}.st-stepper__description{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;overflow-wrap:anywhere;color:var(--st-couleur-texte-attenue);text-transform:none}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__surtitre{font-weight:var(--st-graisse-grasse)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__libelle{font-weight:var(--st-graisse-semi);color:var(--st-couleur-texte)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__description{color:var(--st-couleur-texte-discret)}.st-stepper__etape[data-etat=faite] .st-stepper__repere{color:var(--st-couleur-sur-succes);background:var(--st-couleur-succes);box-shadow:var(--st-ombre-repos)}.st-stepper__etape[data-etat=faite] .st-stepper__connecteur{background:var(--st-couleur-succes)}.st-stepper__etape[data-etat=faite] .st-stepper__surtitre{color:var(--st-couleur-succes)}.st-stepper__etape[data-etat=courante] .st-stepper__repere{color:var(--st-couleur-sur-primaire);background:var(--st-couleur-primaire);box-shadow:0 0 0 var(--st-epaisseur-epaisse) var(--st-couleur-primaire-attenue),var(--st-ombre-survol)}.st-stepper__etape[data-etat=courante] .st-stepper__surtitre{color:var(--st-couleur-texte-primaire)}@media(forced-colors:active){.st-stepper__etape[data-etat=courante] .st-stepper__repere,.st-stepper__etape[data-etat=faite] .st-stepper__repere,.st-stepper__segment[data-etat=faite],.st-stepper__segment[data-etat=courante]{forced-color-adjust:none;color:HighlightText;background:Highlight}.st-stepper__segment[data-etat=courante]{background:Canvas;outline:var(--st-epaisseur-moyenne) solid Highlight;outline-offset:calc(-1 * var(--st-epaisseur-moyenne))}.st-stepper__etape[data-etat=a-venir] .st-stepper__repere,.st-stepper__segment[data-etat=a-venir]{outline:var(--st-epaisseur-fine) solid CanvasText;outline-offset:calc(-1 * var(--st-epaisseur-fine))}.st-stepper__connecteur{forced-color-adjust:none;background:CanvasText}}\n"]
1018
+ styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:block;container-type:inline-size}.st-stepper__liste{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;list-style:none}.st-stepper__compact{display:flex;flex-direction:column;gap:var(--st-espacement-2);padding:var(--st-espacement-6) var(--st-espacement-4) var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border-radius:var(--st-rayon-md)}.st-stepper__compact-entete{display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between}.st-stepper__compact-titres{display:flex;flex-direction:column;min-inline-size:0}.st-stepper__compact-surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;color:var(--st-couleur-texte-attenue)}.st-stepper__compact-titre{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-normal);color:var(--st-couleur-texte)}.st-stepper__pourcentage{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;flex:none;font-family:var(--st-police-mono);font-weight:var(--st-graisse-grasse);color:var(--st-couleur-texte-primaire);text-transform:none}.st-stepper__segments{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-1-5);block-size:var(--st-espacement-2)}.st-stepper__segment{display:block;background:var(--st-couleur-surface-active);border-radius:var(--st-rayon-pleine)}.st-stepper__segment[data-etat=faite]{background:var(--st-couleur-succes)}.st-stepper__segment[data-etat=courante]{background:var(--st-couleur-primaire)}.st-stepper__voisines{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-4);align-items:center;justify-content:space-between;padding-block-start:var(--st-espacement-1);color:var(--st-couleur-texte-discret);text-transform:none}.st-stepper__suivante{margin-inline-start:auto}@container (min-width: 48rem){:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;position:relative;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:var(--st-espacement-4);padding:0}:host(:not([data-forme=compacte]):not([data-orientation=verticale])) .st-stepper__compact{display:none}}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__liste{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;display:grid;padding:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__compact{display:none}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__etape{flex-direction:row;gap:var(--st-espacement-3)}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__tete{flex-direction:column;align-self:stretch}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__connecteur{inline-size:var(--st-epaisseur-epaisse);block-size:auto;min-block-size:var(--st-espacement-4);margin-block:var(--st-espacement-1);margin-inline-start:0}:host([data-orientation=verticale]:not([data-forme=compacte])) .st-stepper__textes{padding-block:var(--st-espacement-2) var(--st-espacement-4)}.st-stepper__etape{position:relative;display:flex;flex-direction:column;gap:var(--st-espacement-2)}.st-stepper__tete{display:flex;align-items:center}.st-stepper__repere{display:flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-hauteur-commande-lg);block-size:var(--st-hauteur-commande-lg);line-height:var(--st-interligne-md);color:var(--st-couleur-texte-attenue);background:var(--st-couleur-surface-conteneur-haut);border-radius:var(--st-rayon-pleine)}.st-stepper__etape:not([data-etat=faite]) .st-stepper__repere{font-family:var(--st-police-titre, var(--st-police-base));font-size:var(--st-taille-lg);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-approche-lg);font-weight:var(--st-graisse-grasse)}.st-stepper__connecteur{flex:1 1 0%;block-size:var(--st-epaisseur-epaisse);margin-inline-start:var(--st-espacement-2);background:var(--st-couleur-surface-active)}.st-stepper__textes{display:flex;flex-direction:column}.st-stepper__surtitre{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;display:flex;gap:var(--st-espacement-1);align-items:center;color:var(--st-couleur-texte-attenue)}.st-stepper__libelle{font-size:var(--st-taille-md);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);overflow-wrap:anywhere;font-weight:var(--st-graisse-moyenne);color:var(--st-couleur-texte-attenue)}.st-stepper__description{font-size:var(--st-taille-2xs);line-height:var(--st-interligne-2xs);font-weight:var(--st-graisse-semi);letter-spacing:var(--st-interlettrage-capitales);text-transform:uppercase;overflow-wrap:anywhere;color:var(--st-couleur-texte-attenue);text-transform:none}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__surtitre{font-weight:var(--st-graisse-grasse)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__libelle{font-weight:var(--st-graisse-semi);color:var(--st-couleur-texte)}.st-stepper__etape:not([data-etat=a-venir]) .st-stepper__description{color:var(--st-couleur-texte-discret)}.st-stepper__etape[data-etat=faite] .st-stepper__repere{color:var(--st-couleur-sur-succes);background:var(--st-couleur-succes);box-shadow:var(--st-ombre-repos)}.st-stepper__etape[data-etat=faite] .st-stepper__connecteur{background:var(--st-couleur-succes)}.st-stepper__etape[data-etat=faite] .st-stepper__surtitre{color:var(--st-couleur-succes)}.st-stepper__etape[data-etat=courante] .st-stepper__repere{color:var(--st-couleur-sur-primaire);background:var(--st-couleur-primaire);box-shadow:0 0 0 var(--st-epaisseur-epaisse) var(--st-couleur-primaire-attenue),var(--st-ombre-survol)}.st-stepper__etape[data-etat=courante] .st-stepper__surtitre{color:var(--st-couleur-texte-primaire)}@media(forced-colors:active){.st-stepper__etape[data-etat=courante] .st-stepper__repere,.st-stepper__etape[data-etat=faite] .st-stepper__repere,.st-stepper__segment[data-etat=faite],.st-stepper__segment[data-etat=courante]{forced-color-adjust:none;color:HighlightText;background:Highlight}.st-stepper__segment[data-etat=courante]{background:Canvas;outline:var(--st-epaisseur-moyenne) solid Highlight;outline-offset:calc(-1 * var(--st-epaisseur-moyenne))}.st-stepper__etape[data-etat=a-venir] .st-stepper__repere,.st-stepper__segment[data-etat=a-venir]{outline:var(--st-epaisseur-fine) solid CanvasText;outline-offset:calc(-1 * var(--st-epaisseur-fine))}.st-stepper__connecteur{forced-color-adjust:none;background:CanvasText}}\n"]
1018
1019
  }]
1019
1020
  }],
1020
1021
  propDecorators: {
@@ -1070,25 +1071,25 @@ i0.ɵɵngDeclareClassMetadata({
1070
1071
  });
1071
1072
  const ST_ASSISTANT = new InjectionToken("ST_ASSISTANT");
1072
1073
  var StWizard = class StWizard {
1073
- etapes = input.required(...ngDevMode ? [{ debugName: "etapes" }] : /* istanbul ignore next */ []);
1074
- etape = input.required(...ngDevMode ? [{ debugName: "etape" }] : /* istanbul ignore next */ []);
1075
- libelle = input(null, ...ngDevMode ? [{ debugName: "libelle" }] : /* istanbul ignore next */ []);
1076
- etiquette = input(null, ...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
1077
- orientation = input("horizontale", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
1078
- retourVers = input(null, ...ngDevMode ? [{ debugName: "retourVers" }] : /* istanbul ignore next */ []);
1074
+ etapes = input.required(...ngDevMode ? [{ debugName: "etapes" }] : /* istanbul ignore next */ []);
1075
+ etape = input.required(...ngDevMode ? [{ debugName: "etape" }] : /* istanbul ignore next */ []);
1076
+ libelle = input(null, ...ngDevMode ? [{ debugName: "libelle" }] : /* istanbul ignore next */ []);
1077
+ etiquette = input(null, ...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
1078
+ orientation = input("horizontale", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
1079
+ retourVers = input(null, ...ngDevMode ? [{ debugName: "retourVers" }] : /* istanbul ignore next */ []);
1079
1080
  retour = output();
1080
- total = computed(() => this.etapes().length, ...ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []);
1081
+ total = computed(() => this.etapes().length, ...ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []);
1081
1082
  numero = computed(() => {
1082
1083
  const etape = Math.trunc(Number.isFinite(this.etape()) ? this.etape() : 0);
1083
1084
  return Math.min(this.total(), Math.max(0, etape)) + 1;
1084
- }, ...ngDevMode ? [{ debugName: "numero" }] : /* istanbul ignore next */ []);
1085
- retourPossible = computed(() => this.retourVers() !== null || this.numero() > 1, ...ngDevMode ? [{ debugName: "retourPossible" }] : /* istanbul ignore next */ []);
1085
+ }, ...ngDevMode ? [{ debugName: "numero" }] : /* istanbul ignore next */ []);
1086
+ retourPossible = computed(() => this.retourVers() !== null || this.numero() > 1, ...ngDevMode ? [{ debugName: "retourPossible" }] : /* istanbul ignore next */ []);
1086
1087
  demanderLeRetour() {
1087
1088
  this.retour.emit();
1088
1089
  }
1089
1090
  static ɵfac = i0.ɵɵngDeclareFactory({
1090
1091
  minVersion: "12.0.0",
1091
- version: "22.2.0",
1092
+ version: "22.2.1",
1092
1093
  ngImport: i0,
1093
1094
  type: StWizard,
1094
1095
  deps: [],
@@ -1096,7 +1097,7 @@ var StWizard = class StWizard {
1096
1097
  });
1097
1098
  static ɵcmp = i0.ɵɵngDeclareComponent({
1098
1099
  minVersion: "17.1.0",
1099
- version: "22.2.0",
1100
+ version: "22.2.1",
1100
1101
  type: StWizard,
1101
1102
  isStandalone: true,
1102
1103
  selector: "st-wizard",
@@ -1171,7 +1172,7 @@ var StWizard = class StWizard {
1171
1172
  };
1172
1173
  i0.ɵɵngDeclareClassMetadata({
1173
1174
  minVersion: "12.0.0",
1174
- version: "22.2.0",
1175
+ version: "22.2.1",
1175
1176
  ngImport: i0,
1176
1177
  type: StWizard,
1177
1178
  decorators: [{
@@ -1248,37 +1249,37 @@ var StWizardStep = class StWizardStep {
1248
1249
  assistant = inject(ST_ASSISTANT, { optional: true });
1249
1250
  element = inject(ElementRef).nativeElement;
1250
1251
  libelles = inject(ST_LIBELLES);
1251
- titre = input.required(...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
1252
- niveauDuTitre = input(1, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
1252
+ titre = input.required(...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
1253
+ niveauDuTitre = input(1, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
1253
1254
  derniere = input(false, {
1254
- ...ngDevMode ? { debugName: "derniere" } : /* istanbul ignore next */ {},
1255
+ ...ngDevMode ? { debugName: "derniere" } : /* istanbul ignore next */ {},
1255
1256
  transform: booleanAttribute
1256
1257
  });
1257
- avertissement = input(null, ...ngDevMode ? [{ debugName: "avertissement" }] : /* istanbul ignore next */ []);
1258
- libelleContinuer = input(null, ...ngDevMode ? [{ debugName: "libelleContinuer" }] : /* istanbul ignore next */ []);
1258
+ avertissement = input(null, ...ngDevMode ? [{ debugName: "avertissement" }] : /* istanbul ignore next */ []);
1259
+ libelleContinuer = input(null, ...ngDevMode ? [{ debugName: "libelleContinuer" }] : /* istanbul ignore next */ []);
1259
1260
  chargement = input(false, {
1260
- ...ngDevMode ? { debugName: "chargement" } : /* istanbul ignore next */ {},
1261
+ ...ngDevMode ? { debugName: "chargement" } : /* istanbul ignore next */ {},
1261
1262
  transform: booleanAttribute
1262
1263
  });
1263
1264
  indisponible = input(false, {
1264
- ...ngDevMode ? { debugName: "indisponible" } : /* istanbul ignore next */ {},
1265
+ ...ngDevMode ? { debugName: "indisponible" } : /* istanbul ignore next */ {},
1265
1266
  transform: booleanAttribute
1266
1267
  });
1267
- dispositionDesActions = input("pied", ...ngDevMode ? [{ debugName: "dispositionDesActions" }] : /* istanbul ignore next */ []);
1268
+ dispositionDesActions = input("pied", ...ngDevMode ? [{ debugName: "dispositionDesActions" }] : /* istanbul ignore next */ []);
1268
1269
  titreLu = computed(() => {
1269
1270
  const assistant = this.assistant;
1270
1271
  if (assistant === null) return this.titre();
1271
1272
  return this.libelles().etapeSur(assistant.numero(), assistant.total(), this.titre());
1272
- }, ...ngDevMode ? [{ debugName: "titreLu" }] : /* istanbul ignore next */ []);
1273
+ }, ...ngDevMode ? [{ debugName: "titreLu" }] : /* istanbul ignore next */ []);
1273
1274
  compte = computed(() => {
1274
1275
  const assistant = this.assistant;
1275
1276
  return assistant === null ? null : this.libelles().etapeSurTotal(assistant.numero(), assistant.total());
1276
- }, ...ngDevMode ? [{ debugName: "compte" }] : /* istanbul ignore next */ []);
1277
- retourVers = computed(() => this.assistant?.retourVers() ?? null, ...ngDevMode ? [{ debugName: "retourVers" }] : /* istanbul ignore next */ []);
1278
- orientation = computed(() => this.assistant?.orientation() ?? null, ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
1279
- retourPossible = computed(() => this.assistant?.retourPossible() ?? false, ...ngDevMode ? [{ debugName: "retourPossible" }] : /* istanbul ignore next */ []);
1280
- libelleDeLAction = computed(() => this.derniere() ? this.libelles().confirmer : this.libelleContinuer() ?? this.libelles().continuer, ...ngDevMode ? [{ debugName: "libelleDeLAction" }] : /* istanbul ignore next */ []);
1281
- avecAvertissement = computed(() => this.derniere() && this.avertissement() !== null, ...ngDevMode ? [{ debugName: "avecAvertissement" }] : /* istanbul ignore next */ []);
1277
+ }, ...ngDevMode ? [{ debugName: "compte" }] : /* istanbul ignore next */ []);
1278
+ retourVers = computed(() => this.assistant?.retourVers() ?? null, ...ngDevMode ? [{ debugName: "retourVers" }] : /* istanbul ignore next */ []);
1279
+ orientation = computed(() => this.assistant?.orientation() ?? null, ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
1280
+ retourPossible = computed(() => this.assistant?.retourPossible() ?? false, ...ngDevMode ? [{ debugName: "retourPossible" }] : /* istanbul ignore next */ []);
1281
+ libelleDeLAction = computed(() => this.derniere() ? this.libelles().confirmer : this.libelleContinuer() ?? this.libelles().continuer, ...ngDevMode ? [{ debugName: "libelleDeLAction" }] : /* istanbul ignore next */ []);
1282
+ avecAvertissement = computed(() => this.derniere() && this.avertissement() !== null, ...ngDevMode ? [{ debugName: "avecAvertissement" }] : /* istanbul ignore next */ []);
1282
1283
  idDeLAvertissement = inject(StIdentifiants).prochain("st-etape-avertissement");
1283
1284
  constructor() {
1284
1285
  let averti = false;
@@ -1298,7 +1299,7 @@ var StWizardStep = class StWizardStep {
1298
1299
  }
1299
1300
  static ɵfac = i0.ɵɵngDeclareFactory({
1300
1301
  minVersion: "12.0.0",
1301
- version: "22.2.0",
1302
+ version: "22.2.1",
1302
1303
  ngImport: i0,
1303
1304
  type: StWizardStep,
1304
1305
  deps: [],
@@ -1306,7 +1307,7 @@ var StWizardStep = class StWizardStep {
1306
1307
  });
1307
1308
  static ɵcmp = i0.ɵɵngDeclareComponent({
1308
1309
  minVersion: "17.0.0",
1309
- version: "22.2.0",
1310
+ version: "22.2.1",
1310
1311
  type: StWizardStep,
1311
1312
  isStandalone: true,
1312
1313
  selector: "st-wizard-step",
@@ -1457,7 +1458,7 @@ var StWizardStep = class StWizardStep {
1457
1458
  };
1458
1459
  i0.ɵɵngDeclareClassMetadata({
1459
1460
  minVersion: "12.0.0",
1460
- version: "22.2.0",
1461
+ version: "22.2.1",
1461
1462
  ngImport: i0,
1462
1463
  type: StWizardStep,
1463
1464
  decorators: [{
@@ -1563,98 +1564,98 @@ var StChallenge = class StChallenge {
1563
1564
  idDeLOperation = this.identifiants.prochain("st-ceremonie-operation");
1564
1565
  idDesMoyens = this.identifiants.prochain("st-ceremonie-moyens");
1565
1566
  idDesTentatives = this.identifiants.prochain("st-ceremonie-tentatives");
1566
- titre = input(null, ...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
1567
- niveauDuTitre = input(2, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
1568
- description = input(null, ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
1569
- moyen = model("code", ...ngDevMode ? [{ debugName: "moyen" }] : /* istanbul ignore next */ []);
1570
- autresMoyens = input([], ...ngDevMode ? [{ debugName: "autresMoyens" }] : /* istanbul ignore next */ []);
1571
- ceremonie = input(null, ...ngDevMode ? [{ debugName: "ceremonie" }] : /* istanbul ignore next */ []);
1567
+ titre = input(null, ...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
1568
+ niveauDuTitre = input(2, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
1569
+ description = input(null, ...ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []);
1570
+ moyen = model("code", ...ngDevMode ? [{ debugName: "moyen" }] : /* istanbul ignore next */ []);
1571
+ autresMoyens = input([], ...ngDevMode ? [{ debugName: "autresMoyens" }] : /* istanbul ignore next */ []);
1572
+ ceremonie = input(null, ...ngDevMode ? [{ debugName: "ceremonie" }] : /* istanbul ignore next */ []);
1572
1573
  longueurDuCode = input(6, {
1573
- ...ngDevMode ? { debugName: "longueurDuCode" } : /* istanbul ignore next */ {},
1574
+ ...ngDevMode ? { debugName: "longueurDuCode" } : /* istanbul ignore next */ {},
1574
1575
  transform: numberAttribute
1575
1576
  });
1576
- libelleDuCode = input(null, ...ngDevMode ? [{ debugName: "libelleDuCode" }] : /* istanbul ignore next */ []);
1577
- aideDuCode = input(null, ...ngDevMode ? [{ debugName: "aideDuCode" }] : /* istanbul ignore next */ []);
1577
+ libelleDuCode = input(null, ...ngDevMode ? [{ debugName: "libelleDuCode" }] : /* istanbul ignore next */ []);
1578
+ aideDuCode = input(null, ...ngDevMode ? [{ debugName: "aideDuCode" }] : /* istanbul ignore next */ []);
1578
1579
  renvoyable = input(false, {
1579
- ...ngDevMode ? { debugName: "renvoyable" } : /* istanbul ignore next */ {},
1580
+ ...ngDevMode ? { debugName: "renvoyable" } : /* istanbul ignore next */ {},
1580
1581
  transform: booleanAttribute
1581
1582
  });
1582
- renvoiDans = input(null, ...ngDevMode ? [{ debugName: "renvoiDans" }] : /* istanbul ignore next */ []);
1583
+ renvoiDans = input(null, ...ngDevMode ? [{ debugName: "renvoiDans" }] : /* istanbul ignore next */ []);
1583
1584
  renvoiEnCours = input(false, {
1584
- ...ngDevMode ? { debugName: "renvoiEnCours" } : /* istanbul ignore next */ {},
1585
+ ...ngDevMode ? { debugName: "renvoiEnCours" } : /* istanbul ignore next */ {},
1585
1586
  transform: booleanAttribute
1586
1587
  });
1587
- expireDans = input(null, ...ngDevMode ? [{ debugName: "expireDans" }] : /* istanbul ignore next */ []);
1588
+ expireDans = input(null, ...ngDevMode ? [{ debugName: "expireDans" }] : /* istanbul ignore next */ []);
1588
1589
  chargement = input(false, {
1589
- ...ngDevMode ? { debugName: "chargement" } : /* istanbul ignore next */ {},
1590
+ ...ngDevMode ? { debugName: "chargement" } : /* istanbul ignore next */ {},
1590
1591
  transform: booleanAttribute
1591
1592
  });
1592
1593
  proposerAppareilDeConfiance = input(false, {
1593
- ...ngDevMode ? { debugName: "proposerAppareilDeConfiance" } : /* istanbul ignore next */ {},
1594
+ ...ngDevMode ? { debugName: "proposerAppareilDeConfiance" } : /* istanbul ignore next */ {},
1594
1595
  transform: booleanAttribute
1595
1596
  });
1596
- appareilDeConfiance = model(false, ...ngDevMode ? [{ debugName: "appareilDeConfiance" }] : /* istanbul ignore next */ []);
1597
+ appareilDeConfiance = model(false, ...ngDevMode ? [{ debugName: "appareilDeConfiance" }] : /* istanbul ignore next */ []);
1597
1598
  annulable = input(false, {
1598
- ...ngDevMode ? { debugName: "annulable" } : /* istanbul ignore next */ {},
1599
+ ...ngDevMode ? { debugName: "annulable" } : /* istanbul ignore next */ {},
1599
1600
  transform: booleanAttribute
1600
1601
  });
1601
- libelleDAnnulation = input(null, ...ngDevMode ? [{ debugName: "libelleDAnnulation" }] : /* istanbul ignore next */ []);
1602
- libelleDeLAction = input(null, ...ngDevMode ? [{ debugName: "libelleDeLAction" }] : /* istanbul ignore next */ []);
1603
- code = model("", ...ngDevMode ? [{ debugName: "code" }] : /* istanbul ignore next */ []);
1602
+ libelleDAnnulation = input(null, ...ngDevMode ? [{ debugName: "libelleDAnnulation" }] : /* istanbul ignore next */ []);
1603
+ libelleDeLAction = input(null, ...ngDevMode ? [{ debugName: "libelleDeLAction" }] : /* istanbul ignore next */ []);
1604
+ code = model("", ...ngDevMode ? [{ debugName: "code" }] : /* istanbul ignore next */ []);
1604
1605
  focusALArrivee = input(true, {
1605
- ...ngDevMode ? { debugName: "focusALArrivee" } : /* istanbul ignore next */ {},
1606
+ ...ngDevMode ? { debugName: "focusALArrivee" } : /* istanbul ignore next */ {},
1606
1607
  transform: booleanAttribute
1607
1608
  });
1608
1609
  envoi = output();
1609
1610
  renvoi = output();
1610
1611
  annulation = output();
1611
1612
  expiration = output();
1612
- champDuCode = viewChild(StOtpField, ...ngDevMode ? [{ debugName: "champDuCode" }] : /* istanbul ignore next */ []);
1613
- champDeSecours = viewChild(StInput, ...ngDevMode ? [{ debugName: "champDeSecours" }] : /* istanbul ignore next */ []);
1614
- operation = viewChild("operation", ...ngDevMode ? [{ debugName: "operation" }] : /* istanbul ignore next */ []);
1613
+ champDuCode = viewChild(StOtpField, ...ngDevMode ? [{ debugName: "champDuCode" }] : /* istanbul ignore next */ []);
1614
+ champDeSecours = viewChild(StInput, ...ngDevMode ? [{ debugName: "champDeSecours" }] : /* istanbul ignore next */ []);
1615
+ operation = viewChild("operation", ...ngDevMode ? [{ debugName: "operation" }] : /* istanbul ignore next */ []);
1615
1616
  lecture = linkedSignal({
1616
- ...ngDevMode ? { debugName: "lecture" } : /* istanbul ignore next */ {},
1617
+ ...ngDevMode ? { debugName: "lecture" } : /* istanbul ignore next */ {},
1617
1618
  source: () => ({
1618
1619
  moyen: this.moyen(),
1619
1620
  ceremonie: this.ceremonie()
1620
1621
  }),
1621
1622
  computation: (source, precedent) => precedent !== void 0 && precedent.source.moyen !== source.moyen && precedent.source.ceremonie === source.ceremonie ? null : source.ceremonie
1622
1623
  });
1623
- etat = linkedSignal(() => this.lecture()?.etat ?? (this.moyen() === "appareil" ? "attente" : "saisie"), ...ngDevMode ? [{ debugName: "etat" }] : /* istanbul ignore next */ []);
1624
- bloque = computed(() => this.etat() === "bloque", ...ngDevMode ? [{ debugName: "bloque" }] : /* istanbul ignore next */ []);
1625
- expiree = computed(() => this.etat() === "expire", ...ngDevMode ? [{ debugName: "expiree" }] : /* istanbul ignore next */ []);
1626
- horsService = computed(() => this.bloque() || this.expiree(), ...ngDevMode ? [{ debugName: "horsService" }] : /* istanbul ignore next */ []);
1627
- avecCode = computed(() => this.moyen() === "code", ...ngDevMode ? [{ debugName: "avecCode" }] : /* istanbul ignore next */ []);
1628
- tentativesRestantes = computed(() => this.etat() === "refuse" ? this.lecture()?.tentativesRestantes ?? null : null, ...ngDevMode ? [{ debugName: "tentativesRestantes" }] : /* istanbul ignore next */ []);
1629
- descriptionsDuChamp = computed(() => this.tentativesRestantes() ? [this.idDesTentatives] : [], ...ngDevMode ? [{ debugName: "descriptionsDuChamp" }] : /* istanbul ignore next */ []);
1624
+ etat = linkedSignal(() => this.lecture()?.etat ?? (this.moyen() === "appareil" ? "attente" : "saisie"), ...ngDevMode ? [{ debugName: "etat" }] : /* istanbul ignore next */ []);
1625
+ bloque = computed(() => this.etat() === "bloque", ...ngDevMode ? [{ debugName: "bloque" }] : /* istanbul ignore next */ []);
1626
+ expiree = computed(() => this.etat() === "expire", ...ngDevMode ? [{ debugName: "expiree" }] : /* istanbul ignore next */ []);
1627
+ horsService = computed(() => this.bloque() || this.expiree(), ...ngDevMode ? [{ debugName: "horsService" }] : /* istanbul ignore next */ []);
1628
+ avecCode = computed(() => this.moyen() === "code", ...ngDevMode ? [{ debugName: "avecCode" }] : /* istanbul ignore next */ []);
1629
+ tentativesRestantes = computed(() => this.etat() === "refuse" ? this.lecture()?.tentativesRestantes ?? null : null, ...ngDevMode ? [{ debugName: "tentativesRestantes" }] : /* istanbul ignore next */ []);
1630
+ descriptionsDuChamp = computed(() => this.tentativesRestantes() ? [this.idDesTentatives] : [], ...ngDevMode ? [{ debugName: "descriptionsDuChamp" }] : /* istanbul ignore next */ []);
1630
1631
  attenteDuBlocage = computed(() => {
1631
1632
  const secondes = this.lecture()?.reessayerDans ?? null;
1632
1633
  return this.bloque() && secondes !== null && secondes > 0 ? secondes : null;
1633
- }, ...ngDevMode ? [{ debugName: "attenteDuBlocage" }] : /* istanbul ignore next */ []);
1634
- libelleDuChamp = computed(() => this.libelleDuCode() ?? (this.avecCode() ? this.libelles().codeDeVerification : this.libelles().codeDeSecours), ...ngDevMode ? [{ debugName: "libelleDuChamp" }] : /* istanbul ignore next */ []);
1635
- libelleDuBouton = computed(() => this.libelleDeLAction() ?? this.libelles().confirmer, ...ngDevMode ? [{ debugName: "libelleDuBouton" }] : /* istanbul ignore next */ []);
1636
- delaiDeRenvoi = computed(() => this.renvoiDans() ?? (this.renvoyable() && this.avecCode() ? DELAI_DE_RENVOI_PAR_DEFAUT : null), ...ngDevMode ? [{ debugName: "delaiDeRenvoi" }] : /* istanbul ignore next */ []);
1634
+ }, ...ngDevMode ? [{ debugName: "attenteDuBlocage" }] : /* istanbul ignore next */ []);
1635
+ libelleDuChamp = computed(() => this.libelleDuCode() ?? (this.avecCode() ? this.libelles().codeDeVerification : this.libelles().codeDeSecours), ...ngDevMode ? [{ debugName: "libelleDuChamp" }] : /* istanbul ignore next */ []);
1636
+ libelleDuBouton = computed(() => this.libelleDeLAction() ?? this.libelles().confirmer, ...ngDevMode ? [{ debugName: "libelleDuBouton" }] : /* istanbul ignore next */ []);
1637
+ delaiDeRenvoi = computed(() => this.renvoiDans() ?? (this.renvoyable() && this.avecCode() ? DELAI_DE_RENVOI_PAR_DEFAUT : null), ...ngDevMode ? [{ debugName: "delaiDeRenvoi" }] : /* istanbul ignore next */ []);
1637
1638
  finDuDelaiDeRenvoi = linkedSignal({
1638
- ...ngDevMode ? { debugName: "finDuDelaiDeRenvoi" } : /* istanbul ignore next */ {},
1639
+ ...ngDevMode ? { debugName: "finDuDelaiDeRenvoi" } : /* istanbul ignore next */ {},
1639
1640
  source: this.delaiDeRenvoi,
1640
1641
  computation: (secondes) => echeance(secondes)
1641
1642
  });
1642
- renvoiEnAttente = computed(() => this.finDuDelaiDeRenvoi() !== null, ...ngDevMode ? [{ debugName: "renvoiEnAttente" }] : /* istanbul ignore next */ []);
1643
+ renvoiEnAttente = computed(() => this.finDuDelaiDeRenvoi() !== null, ...ngDevMode ? [{ debugName: "renvoiEnAttente" }] : /* istanbul ignore next */ []);
1643
1644
  finDeValidite = linkedSignal({
1644
- ...ngDevMode ? { debugName: "finDeValidite" } : /* istanbul ignore next */ {},
1645
+ ...ngDevMode ? { debugName: "finDeValidite" } : /* istanbul ignore next */ {},
1645
1646
  source: this.expireDans,
1646
1647
  computation: (secondes) => echeance(secondes)
1647
1648
  });
1648
- decompteDuRenvoi = viewChild("decompteDuRenvoi", ...ngDevMode ? [{ debugName: "decompteDuRenvoi" }] : /* istanbul ignore next */ []);
1649
- raisonDuRenvoi = computed(() => this.renvoiEnAttente() ? this.decompteDuRenvoi()?.phrase() ?? null : null, ...ngDevMode ? [{ debugName: "raisonDuRenvoi" }] : /* istanbul ignore next */ []);
1650
- moyensOuverts = signal(false, ...ngDevMode ? [{ debugName: "moyensOuverts" }] : /* istanbul ignore next */ []);
1651
- autres = computed(() => this.autresMoyens().filter((moyen) => moyen !== this.moyen()), ...ngDevMode ? [{ debugName: "autres" }] : /* istanbul ignore next */ []);
1649
+ decompteDuRenvoi = viewChild("decompteDuRenvoi", ...ngDevMode ? [{ debugName: "decompteDuRenvoi" }] : /* istanbul ignore next */ []);
1650
+ raisonDuRenvoi = computed(() => this.renvoiEnAttente() ? this.decompteDuRenvoi()?.phrase() ?? null : null, ...ngDevMode ? [{ debugName: "raisonDuRenvoi" }] : /* istanbul ignore next */ []);
1651
+ moyensOuverts = signal(false, ...ngDevMode ? [{ debugName: "moyensOuverts" }] : /* istanbul ignore next */ []);
1652
+ autres = computed(() => this.autresMoyens().filter((moyen) => moyen !== this.moyen()), ...ngDevMode ? [{ debugName: "autres" }] : /* istanbul ignore next */ []);
1652
1653
  tente = linkedSignal({
1653
- ...ngDevMode ? { debugName: "tente" } : /* istanbul ignore next */ {},
1654
+ ...ngDevMode ? { debugName: "tente" } : /* istanbul ignore next */ {},
1654
1655
  source: this.moyen,
1655
1656
  computation: () => false
1656
1657
  });
1657
- codeAuRefus = signal(null, ...ngDevMode ? [{ debugName: "codeAuRefus" }] : /* istanbul ignore next */ []);
1658
+ codeAuRefus = signal(null, ...ngDevMode ? [{ debugName: "codeAuRefus" }] : /* istanbul ignore next */ []);
1658
1659
  erreurs = computed(() => {
1659
1660
  const code = this.code();
1660
1661
  if (this.etat() === "refuse" && code === this.codeAuRefus()) return [{
@@ -1665,9 +1666,9 @@ var StChallenge = class StChallenge {
1665
1666
  if (code.trim() === "") return [{ kind: "required" }];
1666
1667
  const forme = this.avecCode() ? erreurCode(code, this.longueurDuCode()) : null;
1667
1668
  return forme === null ? [] : [forme];
1668
- }, ...ngDevMode ? [{ debugName: "erreurs" }] : /* istanbul ignore next */ []);
1669
- erreursVisibles = computed(() => this.erreurs().length > 0, ...ngDevMode ? [{ debugName: "erreursVisibles" }] : /* istanbul ignore next */ []);
1670
- avecOperation = signal(false, ...ngDevMode ? [{ debugName: "avecOperation" }] : /* istanbul ignore next */ []);
1669
+ }, ...ngDevMode ? [{ debugName: "erreurs" }] : /* istanbul ignore next */ []);
1670
+ erreursVisibles = computed(() => this.erreurs().length > 0, ...ngDevMode ? [{ debugName: "erreursVisibles" }] : /* istanbul ignore next */ []);
1671
+ avecOperation = signal(false, ...ngDevMode ? [{ debugName: "avecOperation" }] : /* istanbul ignore next */ []);
1671
1672
  constructor() {
1672
1673
  afterNextRender(() => {
1673
1674
  this.avecOperation.set((this.operation()?.nativeElement.childElementCount ?? 0) > 0);
@@ -1761,7 +1762,7 @@ var StChallenge = class StChallenge {
1761
1762
  }
1762
1763
  static ɵfac = i0.ɵɵngDeclareFactory({
1763
1764
  minVersion: "12.0.0",
1764
- version: "22.2.0",
1765
+ version: "22.2.1",
1765
1766
  ngImport: i0,
1766
1767
  type: StChallenge,
1767
1768
  deps: [],
@@ -1769,7 +1770,7 @@ var StChallenge = class StChallenge {
1769
1770
  });
1770
1771
  static ɵcmp = i0.ɵɵngDeclareComponent({
1771
1772
  minVersion: "17.0.0",
1772
- version: "22.2.0",
1773
+ version: "22.2.1",
1773
1774
  type: StChallenge,
1774
1775
  isStandalone: true,
1775
1776
  selector: "st-challenge",
@@ -1972,7 +1973,7 @@ var StChallenge = class StChallenge {
1972
1973
  }
1973
1974
  ],
1974
1975
  ngImport: i0,
1975
- template: "@if (titre(); as texte) {\n @switch (niveauDuTitre()) {\n @case (1) {\n <h1 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h1>\n }\n @case (3) {\n <h3 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h3>\n }\n @case (4) {\n <h4 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h4>\n }\n @default {\n <h2 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h2>\n }\n }\n}\n@if (description(); as texte) {\n <p class=\"st-challenge__description\">{{ texte }}</p>\n}\n\n<!-- Ce que l'on confirme (DSP2, lien dynamique) : lu avant le champ, il decrit le groupe. -->\n<div #operation class=\"st-challenge__operation\" [id]=\"idDeLOperation\">\n <ng-content select=\"[operation]\" />\n</div>\n\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n\n@if (bloque()) {\n <!-- Le ton danger rend la banniere en alert : le blocage s'annonce a son arrivee. -->\n <st-banner class=\"st-challenge__blocage\" ton=\"danger\" [message]=\"libelles().tropDeTentatives\">\n @if (attenteDuBlocage(); as secondes) {\n <st-timer nature=\"reessai\" [secondes]=\"secondes\" (termine)=\"finDuBlocage()\" />\n }\n </st-banner>\n}\n\n@switch (moyen()) {\n @case ('appareil') {\n <div class=\"st-challenge__appareil\">\n @if (etat() === 'attente') {\n <!-- L'indicateur s'annonce une fois (sa region, texte compris, reste lue) ; la phrase\n visible le double pour les yeux seulement. Le decompte ne dit que sa fin. -->\n <p class=\"st-challenge__attente\">\n <st-spinner taille=\"sm\" [etiquette]=\"libelles().enAttenteDeValidation\" />\n <span aria-hidden=\"true\">{{ libelles().enAttenteDeValidation }}</span>\n </p>\n }\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"danger\">{{ libelles().demandeRefusee }}</st-inline-message>\n }\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n <!-- En attente, un recours discret ; expiree ou refusee, la nouvelle demande est l'action. -->\n <button\n stButton\n class=\"st-challenge__cible\"\n type=\"button\"\n [variante]=\"etat() === 'attente' ? 'discret' : 'secondaire'\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"bloque()\"\n (click)=\"renvoyer()\"\n >\n {{ etat() === 'attente' ? libelles().demandeNonRecue : libelles().nouvelleDemande }}\n </button>\n </div>\n }\n @case ('passkey') {\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"danger\">{{ libelles().cleRefusee }}</st-inline-message>\n }\n <button\n stButton\n class=\"st-challenge__cible st-challenge__cle\"\n variante=\"primaire\"\n type=\"button\"\n iconeAvant=\"cle\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n (click)=\"utiliserLaCle()\"\n >\n {{ libelles().moyenDeCeremonie('passkey') }}\n </button>\n }\n @default {\n <form class=\"st-challenge__formulaire\" novalidate (submit)=\"surEnvoi($event)\">\n @if (avecCode()) {\n <st-otp-field\n class=\"st-challenge__champ\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode()\"\n [longueur]=\"longueurDuCode()\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n >\n @if (renvoyable()) {\n <!-- Le renvoi attend son delai (30 s sans `renvoiDans`) puis la requete partie :\n deux clics ne font jamais partir deux codes (D-9). -->\n <span stRenvoi class=\"st-challenge__renvoi\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n iconeAvant=\"rotation-arriere\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"renvoiEnAttente() || bloque()\"\n [raisonIndisponible]=\"raisonDuRenvoi()\"\n (click)=\"renvoyer()\"\n >\n {{ libelles().renvoyerLeCode }}\n </button>\n @if (finDuDelaiDeRenvoi(); as fin) {\n <st-timer\n #decompteDuRenvoi\n nature=\"renvoi\"\n [secondes]=\"delaiDeRenvoi() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDuRenvoi()\"\n />\n }\n </span>\n }\n </st-otp-field>\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n } @else {\n <st-input\n class=\"st-challenge__champ\"\n autocomplete=\"off\"\n chiffres=\"reference\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode() ?? libelles().aideDuCodeDeSecours\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n />\n }\n\n <!-- Les essais restants decrivent le champ (`descriptionsDuChamp`, D-20) : le focus amene au\n champ les lit avec l'erreur. -->\n @if (tentativesRestantes(); as restantes) {\n <st-inline-message ton=\"avertissement\" [identifiant]=\"idDesTentatives\">{{\n libelles().tentativesRestantes(restantes)\n }}</st-inline-message>\n }\n\n @if (proposerAppareilDeConfiance()) {\n <st-checkbox\n [libelle]=\"libelles().faireConfianceACetAppareil\"\n [aide]=\"libelles().aideDeLAppareilDeConfiance\"\n [(checked)]=\"appareilDeConfiance\"\n />\n }\n\n <!-- L'ordre du document est l'ordre visuel : l'annulation, puis la seule action principale. -->\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n @if (annulable()) {\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n }\n <button\n stButton\n variante=\"primaire\"\n type=\"submit\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n >\n {{ libelleDuBouton() }}\n </button>\n </st-form-actions>\n </form>\n }\n}\n\n@if (annulable() && (moyen() === 'appareil' || moyen() === 'passkey')) {\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n </st-form-actions>\n}\n\n@if (autres().length > 0) {\n <div class=\"st-challenge__moyens\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n [attr.aria-expanded]=\"moyensOuverts()\"\n [attr.aria-controls]=\"idDesMoyens\"\n (click)=\"moyensOuverts.set(!moyensOuverts())\"\n >\n {{ libelles().utiliserUnAutreMoyen }}\n </button>\n <!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste (D-1). -->\n <ul\n class=\"st-challenge__liste-des-moyens\"\n role=\"list\"\n [id]=\"idDesMoyens\"\n [hidden]=\"!moyensOuverts()\"\n >\n @for (autre of autres(); track autre) {\n <li>\n <button stButton variante=\"discret\" type=\"button\" (click)=\"choisir(autre)\">\n {{ libelles().moyenDeCeremonie(autre) }}\n </button>\n </li>\n }\n </ul>\n </div>\n}\n",
1976
+ template: "@if (titre(); as texte) {\n @switch (niveauDuTitre()) {\n @case (1) {\n <h1 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h1>\n }\n @case (3) {\n <h3 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h3>\n }\n @case (4) {\n <h4 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h4>\n }\n @default {\n <h2 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h2>\n }\n }\n}\n@if (description(); as texte) {\n <p class=\"st-challenge__description\">{{ texte }}</p>\n}\n\n<!-- Ce que l'on confirme (DSP2, lien dynamique) : lu avant le champ, il decrit le groupe. -->\n<div #operation class=\"st-challenge__operation\" [id]=\"idDeLOperation\">\n <ng-content select=\"[operation]\" />\n</div>\n\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n\n@if (bloque()) {\n <!-- Le ton danger rend la banniere en alert : le blocage s'annonce a son arrivee. -->\n <st-banner class=\"st-challenge__blocage\" ton=\"erreur\" [message]=\"libelles().tropDeTentatives\">\n @if (attenteDuBlocage(); as secondes) {\n <st-timer nature=\"reessai\" [secondes]=\"secondes\" (termine)=\"finDuBlocage()\" />\n }\n </st-banner>\n}\n\n@switch (moyen()) {\n @case ('appareil') {\n <div class=\"st-challenge__appareil\">\n @if (etat() === 'attente') {\n <!-- L'indicateur s'annonce une fois (sa region, texte compris, reste lue) ; la phrase\n visible le double pour les yeux seulement. Le decompte ne dit que sa fin. -->\n <p class=\"st-challenge__attente\">\n <st-spinner taille=\"sm\" [etiquette]=\"libelles().enAttenteDeValidation\" />\n <span aria-hidden=\"true\">{{ libelles().enAttenteDeValidation }}</span>\n </p>\n }\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"erreur\">{{ libelles().demandeRefusee }}</st-inline-message>\n }\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n <!-- En attente, un recours discret ; expiree ou refusee, la nouvelle demande est l'action. -->\n <button\n stButton\n class=\"st-challenge__cible\"\n type=\"button\"\n [variante]=\"etat() === 'attente' ? 'discret' : 'secondaire'\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"bloque()\"\n (click)=\"renvoyer()\"\n >\n {{ etat() === 'attente' ? libelles().demandeNonRecue : libelles().nouvelleDemande }}\n </button>\n </div>\n }\n @case ('passkey') {\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"erreur\">{{ libelles().cleRefusee }}</st-inline-message>\n }\n <button\n stButton\n class=\"st-challenge__cible st-challenge__cle\"\n variante=\"primaire\"\n type=\"button\"\n iconeAvant=\"cle\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n (click)=\"utiliserLaCle()\"\n >\n {{ libelles().moyenDeCeremonie('passkey') }}\n </button>\n }\n @default {\n <form class=\"st-challenge__formulaire\" novalidate (submit)=\"surEnvoi($event)\">\n @if (avecCode()) {\n <st-otp-field\n class=\"st-challenge__champ\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode()\"\n [longueur]=\"longueurDuCode()\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n >\n @if (renvoyable()) {\n <!-- Le renvoi attend son delai (30 s sans `renvoiDans`) puis la requete partie :\n deux clics ne font jamais partir deux codes (D-9). -->\n <span stRenvoi class=\"st-challenge__renvoi\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n iconeAvant=\"rotation-arriere\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"renvoiEnAttente() || bloque()\"\n [raisonIndisponible]=\"raisonDuRenvoi()\"\n (click)=\"renvoyer()\"\n >\n {{ libelles().renvoyerLeCode }}\n </button>\n @if (finDuDelaiDeRenvoi(); as fin) {\n <st-timer\n #decompteDuRenvoi\n nature=\"renvoi\"\n [secondes]=\"delaiDeRenvoi() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDuRenvoi()\"\n />\n }\n </span>\n }\n </st-otp-field>\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n } @else {\n <st-input\n class=\"st-challenge__champ\"\n autocomplete=\"off\"\n chiffres=\"reference\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode() ?? libelles().aideDuCodeDeSecours\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n />\n }\n\n <!-- Les essais restants decrivent le champ (`descriptionsDuChamp`, D-20) : le focus amene au\n champ les lit avec l'erreur. -->\n @if (tentativesRestantes(); as restantes) {\n <st-inline-message ton=\"avertissement\" [identifiant]=\"idDesTentatives\">{{\n libelles().tentativesRestantes(restantes)\n }}</st-inline-message>\n }\n\n @if (proposerAppareilDeConfiance()) {\n <st-checkbox\n [libelle]=\"libelles().faireConfianceACetAppareil\"\n [aide]=\"libelles().aideDeLAppareilDeConfiance\"\n [(checked)]=\"appareilDeConfiance\"\n />\n }\n\n <!-- L'ordre du document est l'ordre visuel : l'annulation, puis la seule action principale. -->\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n @if (annulable()) {\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n }\n <button\n stButton\n variante=\"primaire\"\n type=\"submit\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n >\n {{ libelleDuBouton() }}\n </button>\n </st-form-actions>\n </form>\n }\n}\n\n@if (annulable() && (moyen() === 'appareil' || moyen() === 'passkey')) {\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n </st-form-actions>\n}\n\n@if (autres().length > 0) {\n <div class=\"st-challenge__moyens\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n [attr.aria-expanded]=\"moyensOuverts()\"\n [attr.aria-controls]=\"idDesMoyens\"\n (click)=\"moyensOuverts.set(!moyensOuverts())\"\n >\n {{ libelles().utiliserUnAutreMoyen }}\n </button>\n <!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste (D-1). -->\n <ul\n class=\"st-challenge__liste-des-moyens\"\n role=\"list\"\n [id]=\"idDesMoyens\"\n [hidden]=\"!moyensOuverts()\"\n >\n @for (autre of autres(); track autre) {\n <li>\n <button stButton variante=\"discret\" type=\"button\" (click)=\"choisir(autre)\">\n {{ libelles().moyenDeCeremonie(autre) }}\n </button>\n </li>\n }\n </ul>\n </div>\n}\n",
1976
1977
  styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-5);min-inline-size:0}.st-challenge__titre,.st-challenge__description{margin:0}.st-challenge__titre+.st-challenge__description{margin-block-start:calc(var(--st-espacement-3) - var(--st-espacement-5))}.st-challenge__description{color:var(--st-couleur-texte-discret)}.st-challenge__operation:empty{display:none}.st-challenge__formulaire,.st-challenge__appareil{display:grid;gap:var(--st-espacement-4);justify-items:start;min-inline-size:0}.st-challenge__champ{justify-self:stretch}.st-challenge__renvoi{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-challenge__attente{display:inline-flex;gap:var(--st-espacement-2);align-items:center;margin:0;font-weight:var(--st-graisse-semi)}.st-challenge__actions,.st-challenge__cle{justify-self:stretch}@media(min-width:30rem){.st-challenge__cle{justify-self:start}}.st-challenge__moyens{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-challenge__liste-des-moyens{display:grid;gap:var(--st-espacement-1);padding:0;padding-inline-start:var(--st-espacement-4);margin:0;list-style:none;border-inline-start:var(--st-epaisseur-fine) solid var(--st-couleur-bordure)}.st-challenge__liste-des-moyens[hidden]{display:none}\n"],
1977
1978
  dependencies: [
1978
1979
  {
@@ -2091,7 +2092,7 @@ var StChallenge = class StChallenge {
2091
2092
  };
2092
2093
  i0.ɵɵngDeclareClassMetadata({
2093
2094
  minVersion: "12.0.0",
2094
- version: "22.2.0",
2095
+ version: "22.2.1",
2095
2096
  ngImport: i0,
2096
2097
  type: StChallenge,
2097
2098
  decorators: [{
@@ -2119,7 +2120,7 @@ i0.ɵɵngDeclareClassMetadata({
2119
2120
  "[attr.data-moyen]": "moyen()",
2120
2121
  "[attr.data-etat]": "etat()"
2121
2122
  },
2122
- template: "@if (titre(); as texte) {\n @switch (niveauDuTitre()) {\n @case (1) {\n <h1 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h1>\n }\n @case (3) {\n <h3 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h3>\n }\n @case (4) {\n <h4 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h4>\n }\n @default {\n <h2 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h2>\n }\n }\n}\n@if (description(); as texte) {\n <p class=\"st-challenge__description\">{{ texte }}</p>\n}\n\n<!-- Ce que l'on confirme (DSP2, lien dynamique) : lu avant le champ, il decrit le groupe. -->\n<div #operation class=\"st-challenge__operation\" [id]=\"idDeLOperation\">\n <ng-content select=\"[operation]\" />\n</div>\n\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n\n@if (bloque()) {\n <!-- Le ton danger rend la banniere en alert : le blocage s'annonce a son arrivee. -->\n <st-banner class=\"st-challenge__blocage\" ton=\"danger\" [message]=\"libelles().tropDeTentatives\">\n @if (attenteDuBlocage(); as secondes) {\n <st-timer nature=\"reessai\" [secondes]=\"secondes\" (termine)=\"finDuBlocage()\" />\n }\n </st-banner>\n}\n\n@switch (moyen()) {\n @case ('appareil') {\n <div class=\"st-challenge__appareil\">\n @if (etat() === 'attente') {\n <!-- L'indicateur s'annonce une fois (sa region, texte compris, reste lue) ; la phrase\n visible le double pour les yeux seulement. Le decompte ne dit que sa fin. -->\n <p class=\"st-challenge__attente\">\n <st-spinner taille=\"sm\" [etiquette]=\"libelles().enAttenteDeValidation\" />\n <span aria-hidden=\"true\">{{ libelles().enAttenteDeValidation }}</span>\n </p>\n }\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"danger\">{{ libelles().demandeRefusee }}</st-inline-message>\n }\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n <!-- En attente, un recours discret ; expiree ou refusee, la nouvelle demande est l'action. -->\n <button\n stButton\n class=\"st-challenge__cible\"\n type=\"button\"\n [variante]=\"etat() === 'attente' ? 'discret' : 'secondaire'\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"bloque()\"\n (click)=\"renvoyer()\"\n >\n {{ etat() === 'attente' ? libelles().demandeNonRecue : libelles().nouvelleDemande }}\n </button>\n </div>\n }\n @case ('passkey') {\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"danger\">{{ libelles().cleRefusee }}</st-inline-message>\n }\n <button\n stButton\n class=\"st-challenge__cible st-challenge__cle\"\n variante=\"primaire\"\n type=\"button\"\n iconeAvant=\"cle\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n (click)=\"utiliserLaCle()\"\n >\n {{ libelles().moyenDeCeremonie('passkey') }}\n </button>\n }\n @default {\n <form class=\"st-challenge__formulaire\" novalidate (submit)=\"surEnvoi($event)\">\n @if (avecCode()) {\n <st-otp-field\n class=\"st-challenge__champ\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode()\"\n [longueur]=\"longueurDuCode()\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n >\n @if (renvoyable()) {\n <!-- Le renvoi attend son delai (30 s sans `renvoiDans`) puis la requete partie :\n deux clics ne font jamais partir deux codes (D-9). -->\n <span stRenvoi class=\"st-challenge__renvoi\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n iconeAvant=\"rotation-arriere\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"renvoiEnAttente() || bloque()\"\n [raisonIndisponible]=\"raisonDuRenvoi()\"\n (click)=\"renvoyer()\"\n >\n {{ libelles().renvoyerLeCode }}\n </button>\n @if (finDuDelaiDeRenvoi(); as fin) {\n <st-timer\n #decompteDuRenvoi\n nature=\"renvoi\"\n [secondes]=\"delaiDeRenvoi() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDuRenvoi()\"\n />\n }\n </span>\n }\n </st-otp-field>\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n } @else {\n <st-input\n class=\"st-challenge__champ\"\n autocomplete=\"off\"\n chiffres=\"reference\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode() ?? libelles().aideDuCodeDeSecours\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n />\n }\n\n <!-- Les essais restants decrivent le champ (`descriptionsDuChamp`, D-20) : le focus amene au\n champ les lit avec l'erreur. -->\n @if (tentativesRestantes(); as restantes) {\n <st-inline-message ton=\"avertissement\" [identifiant]=\"idDesTentatives\">{{\n libelles().tentativesRestantes(restantes)\n }}</st-inline-message>\n }\n\n @if (proposerAppareilDeConfiance()) {\n <st-checkbox\n [libelle]=\"libelles().faireConfianceACetAppareil\"\n [aide]=\"libelles().aideDeLAppareilDeConfiance\"\n [(checked)]=\"appareilDeConfiance\"\n />\n }\n\n <!-- L'ordre du document est l'ordre visuel : l'annulation, puis la seule action principale. -->\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n @if (annulable()) {\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n }\n <button\n stButton\n variante=\"primaire\"\n type=\"submit\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n >\n {{ libelleDuBouton() }}\n </button>\n </st-form-actions>\n </form>\n }\n}\n\n@if (annulable() && (moyen() === 'appareil' || moyen() === 'passkey')) {\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n </st-form-actions>\n}\n\n@if (autres().length > 0) {\n <div class=\"st-challenge__moyens\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n [attr.aria-expanded]=\"moyensOuverts()\"\n [attr.aria-controls]=\"idDesMoyens\"\n (click)=\"moyensOuverts.set(!moyensOuverts())\"\n >\n {{ libelles().utiliserUnAutreMoyen }}\n </button>\n <!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste (D-1). -->\n <ul\n class=\"st-challenge__liste-des-moyens\"\n role=\"list\"\n [id]=\"idDesMoyens\"\n [hidden]=\"!moyensOuverts()\"\n >\n @for (autre of autres(); track autre) {\n <li>\n <button stButton variante=\"discret\" type=\"button\" (click)=\"choisir(autre)\">\n {{ libelles().moyenDeCeremonie(autre) }}\n </button>\n </li>\n }\n </ul>\n </div>\n}\n",
2123
+ template: "@if (titre(); as texte) {\n @switch (niveauDuTitre()) {\n @case (1) {\n <h1 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h1>\n }\n @case (3) {\n <h3 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h3>\n }\n @case (4) {\n <h4 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h4>\n }\n @default {\n <h2 stHeading taille=\"lg\" class=\"st-challenge__titre\" [id]=\"idDuTitre\">{{ texte }}</h2>\n }\n }\n}\n@if (description(); as texte) {\n <p class=\"st-challenge__description\">{{ texte }}</p>\n}\n\n<!-- Ce que l'on confirme (DSP2, lien dynamique) : lu avant le champ, il decrit le groupe. -->\n<div #operation class=\"st-challenge__operation\" [id]=\"idDeLOperation\">\n <ng-content select=\"[operation]\" />\n</div>\n\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n\n@if (bloque()) {\n <!-- Le ton danger rend la banniere en alert : le blocage s'annonce a son arrivee. -->\n <st-banner class=\"st-challenge__blocage\" ton=\"erreur\" [message]=\"libelles().tropDeTentatives\">\n @if (attenteDuBlocage(); as secondes) {\n <st-timer nature=\"reessai\" [secondes]=\"secondes\" (termine)=\"finDuBlocage()\" />\n }\n </st-banner>\n}\n\n@switch (moyen()) {\n @case ('appareil') {\n <div class=\"st-challenge__appareil\">\n @if (etat() === 'attente') {\n <!-- L'indicateur s'annonce une fois (sa region, texte compris, reste lue) ; la phrase\n visible le double pour les yeux seulement. Le decompte ne dit que sa fin. -->\n <p class=\"st-challenge__attente\">\n <st-spinner taille=\"sm\" [etiquette]=\"libelles().enAttenteDeValidation\" />\n <span aria-hidden=\"true\">{{ libelles().enAttenteDeValidation }}</span>\n </p>\n }\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"erreur\">{{ libelles().demandeRefusee }}</st-inline-message>\n }\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n <!-- En attente, un recours discret ; expiree ou refusee, la nouvelle demande est l'action. -->\n <button\n stButton\n class=\"st-challenge__cible\"\n type=\"button\"\n [variante]=\"etat() === 'attente' ? 'discret' : 'secondaire'\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"bloque()\"\n (click)=\"renvoyer()\"\n >\n {{ etat() === 'attente' ? libelles().demandeNonRecue : libelles().nouvelleDemande }}\n </button>\n </div>\n }\n @case ('passkey') {\n @if (etat() === 'refuse') {\n <st-inline-message ton=\"erreur\">{{ libelles().cleRefusee }}</st-inline-message>\n }\n <button\n stButton\n class=\"st-challenge__cible st-challenge__cle\"\n variante=\"primaire\"\n type=\"button\"\n iconeAvant=\"cle\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n (click)=\"utiliserLaCle()\"\n >\n {{ libelles().moyenDeCeremonie('passkey') }}\n </button>\n }\n @default {\n <form class=\"st-challenge__formulaire\" novalidate (submit)=\"surEnvoi($event)\">\n @if (avecCode()) {\n <st-otp-field\n class=\"st-challenge__champ\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode()\"\n [longueur]=\"longueurDuCode()\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n >\n @if (renvoyable()) {\n <!-- Le renvoi attend son delai (30 s sans `renvoiDans`) puis la requete partie :\n deux clics ne font jamais partir deux codes (D-9). -->\n <span stRenvoi class=\"st-challenge__renvoi\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n iconeAvant=\"rotation-arriere\"\n [chargement]=\"renvoiEnCours()\"\n [indisponible]=\"renvoiEnAttente() || bloque()\"\n [raisonIndisponible]=\"raisonDuRenvoi()\"\n (click)=\"renvoyer()\"\n >\n {{ libelles().renvoyerLeCode }}\n </button>\n @if (finDuDelaiDeRenvoi(); as fin) {\n <st-timer\n #decompteDuRenvoi\n nature=\"renvoi\"\n [secondes]=\"delaiDeRenvoi() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDuRenvoi()\"\n />\n }\n </span>\n }\n </st-otp-field>\n @if (finDeValidite(); as fin) {\n <st-timer\n nature=\"expiration\"\n avecIcone\n [secondes]=\"expireDans() ?? 0\"\n [echeance]=\"fin\"\n (termine)=\"finDeLaDemande()\"\n />\n }\n } @else {\n <st-input\n class=\"st-challenge__champ\"\n autocomplete=\"off\"\n chiffres=\"reference\"\n [libelle]=\"libelleDuChamp()\"\n [aide]=\"aideDuCode() ?? libelles().aideDuCodeDeSecours\"\n [decritPar]=\"descriptionsDuChamp()\"\n [(value)]=\"code\"\n [errors]=\"erreurs()\"\n [touched]=\"erreursVisibles()\"\n [disabled]=\"horsService()\"\n />\n }\n\n <!-- Les essais restants decrivent le champ (`descriptionsDuChamp`, D-20) : le focus amene au\n champ les lit avec l'erreur. -->\n @if (tentativesRestantes(); as restantes) {\n <st-inline-message ton=\"avertissement\" [identifiant]=\"idDesTentatives\">{{\n libelles().tentativesRestantes(restantes)\n }}</st-inline-message>\n }\n\n @if (proposerAppareilDeConfiance()) {\n <st-checkbox\n [libelle]=\"libelles().faireConfianceACetAppareil\"\n [aide]=\"libelles().aideDeLAppareilDeConfiance\"\n [(checked)]=\"appareilDeConfiance\"\n />\n }\n\n <!-- L'ordre du document est l'ordre visuel : l'annulation, puis la seule action principale. -->\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n @if (annulable()) {\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n }\n <button\n stButton\n variante=\"primaire\"\n type=\"submit\"\n [chargement]=\"chargement()\"\n [indisponible]=\"horsService()\"\n >\n {{ libelleDuBouton() }}\n </button>\n </st-form-actions>\n </form>\n }\n}\n\n@if (annulable() && (moyen() === 'appareil' || moyen() === 'passkey')) {\n <st-form-actions class=\"st-challenge__actions\" disposition=\"pied\">\n <button debut stButton type=\"button\" (click)=\"annulation.emit()\">\n {{ libelleDAnnulation() ?? libelles().annuler }}\n </button>\n </st-form-actions>\n}\n\n@if (autres().length > 0) {\n <div class=\"st-challenge__moyens\">\n <button\n stButton\n variante=\"discret\"\n type=\"button\"\n [attr.aria-expanded]=\"moyensOuverts()\"\n [attr.aria-controls]=\"idDesMoyens\"\n (click)=\"moyensOuverts.set(!moyensOuverts())\"\n >\n {{ libelles().utiliserUnAutreMoyen }}\n </button>\n <!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste (D-1). -->\n <ul\n class=\"st-challenge__liste-des-moyens\"\n role=\"list\"\n [id]=\"idDesMoyens\"\n [hidden]=\"!moyensOuverts()\"\n >\n @for (autre of autres(); track autre) {\n <li>\n <button stButton variante=\"discret\" type=\"button\" (click)=\"choisir(autre)\">\n {{ libelles().moyenDeCeremonie(autre) }}\n </button>\n </li>\n }\n </ul>\n </div>\n}\n",
2123
2124
  styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-5);min-inline-size:0}.st-challenge__titre,.st-challenge__description{margin:0}.st-challenge__titre+.st-challenge__description{margin-block-start:calc(var(--st-espacement-3) - var(--st-espacement-5))}.st-challenge__description{color:var(--st-couleur-texte-discret)}.st-challenge__operation:empty{display:none}.st-challenge__formulaire,.st-challenge__appareil{display:grid;gap:var(--st-espacement-4);justify-items:start;min-inline-size:0}.st-challenge__champ{justify-self:stretch}.st-challenge__renvoi{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-challenge__attente{display:inline-flex;gap:var(--st-espacement-2);align-items:center;margin:0;font-weight:var(--st-graisse-semi)}.st-challenge__actions,.st-challenge__cle{justify-self:stretch}@media(min-width:30rem){.st-challenge__cle{justify-self:start}}.st-challenge__moyens{display:grid;gap:var(--st-espacement-1);justify-items:start}.st-challenge__liste-des-moyens{display:grid;gap:var(--st-espacement-1);padding:0;padding-inline-start:var(--st-espacement-4);margin:0;list-style:none;border-inline-start:var(--st-epaisseur-fine) solid var(--st-couleur-bordure)}.st-challenge__liste-des-moyens[hidden]{display:none}\n"]
2124
2125
  }]
2125
2126
  }],
@@ -2343,27 +2344,27 @@ var StRecoveryCodes = class StRecoveryCodes {
2343
2344
  destruction = inject(DestroyRef);
2344
2345
  libelles = inject(ST_LIBELLES);
2345
2346
  annonce = new AnnonceLocale(this.destruction);
2346
- codes = input([], ...ngDevMode ? [{ debugName: "codes" }] : /* istanbul ignore next */ []);
2347
- restants = input(null, ...ngDevMode ? [{ debugName: "restants" }] : /* istanbul ignore next */ []);
2347
+ codes = input([], ...ngDevMode ? [{ debugName: "codes" }] : /* istanbul ignore next */ []);
2348
+ restants = input(null, ...ngDevMode ? [{ debugName: "restants" }] : /* istanbul ignore next */ []);
2348
2349
  regenerationEnCours = input(false, {
2349
- ...ngDevMode ? { debugName: "regenerationEnCours" } : /* istanbul ignore next */ {},
2350
+ ...ngDevMode ? { debugName: "regenerationEnCours" } : /* istanbul ignore next */ {},
2350
2351
  transform: booleanAttribute
2351
2352
  });
2352
- enTeteDuFichier = input(null, ...ngDevMode ? [{ debugName: "enTeteDuFichier" }] : /* istanbul ignore next */ []);
2353
- nomDuFichier = input("codes-de-secours.txt", ...ngDevMode ? [{ debugName: "nomDuFichier" }] : /* istanbul ignore next */ []);
2354
- libelleDeLAction = input(null, ...ngDevMode ? [{ debugName: "libelleDeLAction" }] : /* istanbul ignore next */ []);
2355
- confirme = model(false, ...ngDevMode ? [{ debugName: "confirme" }] : /* istanbul ignore next */ []);
2353
+ enTeteDuFichier = input(null, ...ngDevMode ? [{ debugName: "enTeteDuFichier" }] : /* istanbul ignore next */ []);
2354
+ nomDuFichier = input("codes-de-secours.txt", ...ngDevMode ? [{ debugName: "nomDuFichier" }] : /* istanbul ignore next */ []);
2355
+ libelleDeLAction = input(null, ...ngDevMode ? [{ debugName: "libelleDeLAction" }] : /* istanbul ignore next */ []);
2356
+ confirme = model(false, ...ngDevMode ? [{ debugName: "confirme" }] : /* istanbul ignore next */ []);
2356
2357
  confirmation = output();
2357
2358
  copie = output();
2358
2359
  telechargement = output();
2359
2360
  impression = output();
2360
2361
  regeneration = output();
2361
- tousLesCodes = computed(() => this.codes().join("\n"), ...ngDevMode ? [{ debugName: "tousLesCodes" }] : /* istanbul ignore next */ []);
2362
- raisonDeLAttente = computed(() => this.libelles().cocherPourContinuer(this.libelles().codesEnregistres), ...ngDevMode ? [{ debugName: "raisonDeLAttente" }] : /* istanbul ignore next */ []);
2362
+ tousLesCodes = computed(() => this.codes().join("\n"), ...ngDevMode ? [{ debugName: "tousLesCodes" }] : /* istanbul ignore next */ []);
2363
+ raisonDeLAttente = computed(() => this.libelles().cocherPourContinuer(this.libelles().codesEnregistres), ...ngDevMode ? [{ debugName: "raisonDeLAttente" }] : /* istanbul ignore next */ []);
2363
2364
  tonDuCompteur = computed(() => {
2364
2365
  const restants = this.restants() ?? 0;
2365
2366
  return restants === 0 ? "danger" : restants <= 2 ? "avertissement" : "neutre";
2366
- }, ...ngDevMode ? [{ debugName: "tonDuCompteur" }] : /* istanbul ignore next */ []);
2367
+ }, ...ngDevMode ? [{ debugName: "tonDuCompteur" }] : /* istanbul ignore next */ []);
2367
2368
  constructor() {
2368
2369
  this.destruction.onDestroy(() => {
2369
2370
  this.document.documentElement.removeAttribute(IMPRESSION_EXCLUSIVE);
@@ -2405,7 +2406,7 @@ var StRecoveryCodes = class StRecoveryCodes {
2405
2406
  }
2406
2407
  static ɵfac = i0.ɵɵngDeclareFactory({
2407
2408
  minVersion: "12.0.0",
2408
- version: "22.2.0",
2409
+ version: "22.2.1",
2409
2410
  ngImport: i0,
2410
2411
  type: StRecoveryCodes,
2411
2412
  deps: [],
@@ -2413,7 +2414,7 @@ var StRecoveryCodes = class StRecoveryCodes {
2413
2414
  });
2414
2415
  static ɵcmp = i0.ɵɵngDeclareComponent({
2415
2416
  minVersion: "17.0.0",
2416
- version: "22.2.0",
2417
+ version: "22.2.1",
2417
2418
  type: StRecoveryCodes,
2418
2419
  isStandalone: true,
2419
2420
  selector: "st-recovery-codes",
@@ -2558,7 +2559,7 @@ var StRecoveryCodes = class StRecoveryCodes {
2558
2559
  };
2559
2560
  i0.ɵɵngDeclareClassMetadata({
2560
2561
  minVersion: "12.0.0",
2561
- version: "22.2.0",
2562
+ version: "22.2.1",
2562
2563
  ngImport: i0,
2563
2564
  type: StRecoveryCodes,
2564
2565
  decorators: [{
@@ -2662,6 +2663,468 @@ i0.ɵɵngDeclareClassMetadata({
2662
2663
  }]
2663
2664
  }
2664
2665
  });
2665
- export { StChallenge, StOutcome, StRecoveryCodes, StRefusal, StStepper, StTaskList, StWizard, StWizardStep };
2666
+ function erreurHorsPlage(valeur, bornes) {
2667
+ if (valeur === null) return null;
2668
+ if (bornes.min !== void 0 && valeur < bornes.min) return {
2669
+ kind: "min",
2670
+ min: bornes.min
2671
+ };
2672
+ if (bornes.max !== void 0 && valeur > bornes.max) return {
2673
+ kind: "max",
2674
+ max: bornes.max
2675
+ };
2676
+ return null;
2677
+ }
2678
+ const MOTIF_MINIMUM = 10;
2679
+ function erreurDeMotif(valeur, minimum = 10) {
2680
+ const lu = valeur.trim();
2681
+ if (lu === "") return { kind: "required" };
2682
+ return lu.length < minimum ? {
2683
+ kind: "minLength",
2684
+ minLength: minimum
2685
+ } : null;
2686
+ }
2687
+ const LIBELLES_PARCOURS_FR = {
2688
+ etatsDeDemande: {
2689
+ brouillon: "Brouillon",
2690
+ previsualise: "Prévisualisée",
2691
+ "attente-seconde-validation": "En attente de seconde validation",
2692
+ "seconde-validation-suspendue": "Seconde validation suspendue",
2693
+ programme: "Programmée",
2694
+ publie: "Publiée",
2695
+ refuse: "Refusée"
2696
+ },
2697
+ sensDeDemande: {
2698
+ assouplissement: "Assouplissement",
2699
+ resserrement: "Resserrement"
2700
+ },
2701
+ valeurActuelle: "Valeur actuelle",
2702
+ plageAutorisee: "Plage autorisée",
2703
+ plage: (min, max) => `de ${min} \u00e0 ${max}`,
2704
+ effet: "Effet",
2705
+ effetImmediat: "immédiat",
2706
+ effetDiffere: "différé",
2707
+ priseDEffet: "Prise d’effet",
2708
+ proposition: "Votre demande",
2709
+ previsualisation: "Effet prévu",
2710
+ rouvrirPourModifier: "Pour changer la valeur ou le motif, choisissez «\xA0Modifier la demande\xA0».",
2711
+ demandeEnvoyee: "La demande est envoyée\xA0: sa valeur et son motif ne changent plus.",
2712
+ attenteDeSecondeValidation: "Une seconde personne doit valider la demande avant qu’elle prenne effet.",
2713
+ secondeValidationSuspendue: "La seconde validation est suspendue\xA0: la demande prendra effet à sa date sans second validateur.",
2714
+ previsualiser: "Prévisualiser",
2715
+ soumettre: "Soumettre la demande",
2716
+ modifier: "Modifier la demande",
2717
+ annuler: "Annuler la demande",
2718
+ etatDeLaDemande: (etat) => `Demande\u00a0: ${etat}`
2719
+ };
2720
+ const LIBELLES_PARCOURS_EN = {
2721
+ etatsDeDemande: {
2722
+ brouillon: "Draft",
2723
+ previsualise: "Previewed",
2724
+ "attente-seconde-validation": "Awaiting second approval",
2725
+ "seconde-validation-suspendue": "Second approval suspended",
2726
+ programme: "Scheduled",
2727
+ publie: "Published",
2728
+ refuse: "Rejected"
2729
+ },
2730
+ sensDeDemande: {
2731
+ assouplissement: "Loosening",
2732
+ resserrement: "Tightening"
2733
+ },
2734
+ valeurActuelle: "Current value",
2735
+ plageAutorisee: "Allowed range",
2736
+ plage: (min, max) => `from ${min} to ${max}`,
2737
+ effet: "Effect",
2738
+ effetImmediat: "immediate",
2739
+ effetDiffere: "deferred",
2740
+ priseDEffet: "Takes effect",
2741
+ proposition: "Your request",
2742
+ previsualisation: "Expected effect",
2743
+ rouvrirPourModifier: "To change the value or the reason, choose \"Edit request\".",
2744
+ demandeEnvoyee: "The request is sent: its value and reason no longer change.",
2745
+ attenteDeSecondeValidation: "A second person must approve the request before it takes effect.",
2746
+ secondeValidationSuspendue: "Second approval is suspended: the request will take effect on its date without a second approver.",
2747
+ previsualiser: "Preview",
2748
+ soumettre: "Submit request",
2749
+ modifier: "Edit request",
2750
+ annuler: "Cancel request",
2751
+ etatDeLaDemande: (etat) => `Request: ${etat}`
2752
+ };
2753
+ const ST_LIBELLES_PARCOURS = new InjectionToken("ST_LIBELLES_PARCOURS", {
2754
+ providedIn: "root",
2755
+ factory: () => ({
2756
+ fr: LIBELLES_PARCOURS_FR,
2757
+ en: LIBELLES_PARCOURS_EN
2758
+ })
2759
+ });
2760
+ function fournirLibellesParcours(catalogues) {
2761
+ return {
2762
+ provide: ST_LIBELLES_PARCOURS,
2763
+ useValue: {
2764
+ fr: LIBELLES_PARCOURS_FR,
2765
+ en: LIBELLES_PARCOURS_EN,
2766
+ ...catalogues
2767
+ }
2768
+ };
2769
+ }
2770
+ function libellesDuParcours() {
2771
+ const catalogue = catalogueDuParcours();
2772
+ return computed(() => catalogue().libelles);
2773
+ }
2774
+ function catalogueDuParcours() {
2775
+ return catalogueDuPointDEntree("@starterlib/ui/parcours", inject(ST_LIBELLES_PARCOURS), LIBELLES_PARCOURS_FR, "fournirLibellesParcours");
2776
+ }
2777
+ const PASTILLES = {
2778
+ brouillon: {
2779
+ ton: "neutre",
2780
+ icone: "crayon"
2781
+ },
2782
+ previsualise: {
2783
+ ton: "information",
2784
+ icone: "oeil"
2785
+ },
2786
+ "attente-seconde-validation": {
2787
+ ton: "primaire",
2788
+ icone: "sablier"
2789
+ },
2790
+ "seconde-validation-suspendue": {
2791
+ ton: "avertissement",
2792
+ icone: "pause"
2793
+ },
2794
+ programme: {
2795
+ ton: "primaire",
2796
+ icone: "calendrier-horloge"
2797
+ },
2798
+ publie: {
2799
+ ton: "succes",
2800
+ icone: "cercle-coche"
2801
+ },
2802
+ refuse: {
2803
+ ton: "erreur",
2804
+ icone: "cercle-croix"
2805
+ }
2806
+ };
2807
+ const ENVOYEE = /* @__PURE__ */ new Set([
2808
+ "attente-seconde-validation",
2809
+ "seconde-validation-suspendue",
2810
+ "programme"
2811
+ ]);
2812
+ var StChangeRequest = class StChangeRequest {
2813
+ catalogue = catalogueDuParcours();
2814
+ annonce = new AnnonceLocale(inject(DestroyRef));
2815
+ envoi = inject(ST_ETAT_D_ENVOI, { optional: true });
2816
+ titre = input.required(...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
2817
+ niveauDuTitre = input(2, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
2818
+ etat = input.required(...ngDevMode ? [{ debugName: "etat" }] : /* istanbul ignore next */ []);
2819
+ effet = input(null, ...ngDevMode ? [{ debugName: "effet" }] : /* istanbul ignore next */ []);
2820
+ plage = input(null, ...ngDevMode ? [{ debugName: "plage" }] : /* istanbul ignore next */ []);
2821
+ refus = input(null, ...ngDevMode ? [{ debugName: "refus" }] : /* istanbul ignore next */ []);
2822
+ modification = output();
2823
+ annulation = output();
2824
+ identifiants = (() => {
2825
+ const base = inject(StIdentifiants).prochain("st-demande");
2826
+ return {
2827
+ titre: `${base}-titre`,
2828
+ gel: `${base}-gel`,
2829
+ previsualisation: `${base}-previsualisation`
2830
+ };
2831
+ })();
2832
+ pastille = computed(() => PASTILLES[this.etat()], ...ngDevMode ? [{ debugName: "pastille" }] : /* istanbul ignore next */ []);
2833
+ libelleDEtat = computed(() => this.catalogue().libelles.etatsDeDemande[this.etat()], ...ngDevMode ? [{ debugName: "libelleDEtat" }] : /* istanbul ignore next */ []);
2834
+ fige = computed(() => this.etat() !== "brouillon", ...ngDevMode ? [{ debugName: "fige" }] : /* istanbul ignore next */ []);
2835
+ envoyee = computed(() => ENVOYEE.has(this.etat()), ...ngDevMode ? [{ debugName: "envoyee" }] : /* istanbul ignore next */ []);
2836
+ rouvrable = computed(() => this.etat() === "previsualise" || this.etat() === "refuse", ...ngDevMode ? [{ debugName: "rouvrable" }] : /* istanbul ignore next */ []);
2837
+ raisonDuGel = computed(() => {
2838
+ const libelles = this.catalogue().libelles;
2839
+ if (this.rouvrable()) return libelles.rouvrirPourModifier;
2840
+ return this.fige() ? libelles.demandeEnvoyee : null;
2841
+ }, ...ngDevMode ? [{ debugName: "raisonDuGel" }] : /* istanbul ignore next */ []);
2842
+ explication = computed(() => {
2843
+ const libelles = this.catalogue().libelles;
2844
+ switch (this.etat()) {
2845
+ case "attente-seconde-validation": return libelles.attenteDeSecondeValidation;
2846
+ case "seconde-validation-suspendue": return libelles.secondeValidationSuspendue;
2847
+ default: return null;
2848
+ }
2849
+ }, ...ngDevMode ? [{ debugName: "explication" }] : /* istanbul ignore next */ []);
2850
+ enCours = computed(() => this.envoi?.enCours() ?? false, ...ngDevMode ? [{ debugName: "enCours" }] : /* istanbul ignore next */ []);
2851
+ niveauDuRecapitulatif = computed(() => this.niveauDuTitre() === 2 ? 3 : 4, ...ngDevMode ? [{ debugName: "niveauDuRecapitulatif" }] : /* istanbul ignore next */ []);
2852
+ constructor() {
2853
+ let precedent = null;
2854
+ effect(() => {
2855
+ const etat = this.etat();
2856
+ const libelle = this.libelleDEtat();
2857
+ if (precedent !== null && precedent !== etat && etat !== "refuse") untracked(() => {
2858
+ this.annonce.annoncer(this.catalogue().libelles.etatDeLaDemande(libelle));
2859
+ });
2860
+ precedent = etat;
2861
+ });
2862
+ }
2863
+ static ɵfac = i0.ɵɵngDeclareFactory({
2864
+ minVersion: "12.0.0",
2865
+ version: "22.2.1",
2866
+ ngImport: i0,
2867
+ type: StChangeRequest,
2868
+ deps: [],
2869
+ target: i0.ɵɵFactoryTarget.Component
2870
+ });
2871
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2872
+ minVersion: "17.0.0",
2873
+ version: "22.2.1",
2874
+ type: StChangeRequest,
2875
+ isStandalone: true,
2876
+ selector: "st-change-request",
2877
+ inputs: {
2878
+ titre: {
2879
+ classPropertyName: "titre",
2880
+ publicName: "titre",
2881
+ isSignal: true,
2882
+ isRequired: true,
2883
+ transformFunction: null
2884
+ },
2885
+ niveauDuTitre: {
2886
+ classPropertyName: "niveauDuTitre",
2887
+ publicName: "niveauDuTitre",
2888
+ isSignal: true,
2889
+ isRequired: false,
2890
+ transformFunction: null
2891
+ },
2892
+ etat: {
2893
+ classPropertyName: "etat",
2894
+ publicName: "etat",
2895
+ isSignal: true,
2896
+ isRequired: true,
2897
+ transformFunction: null
2898
+ },
2899
+ effet: {
2900
+ classPropertyName: "effet",
2901
+ publicName: "effet",
2902
+ isSignal: true,
2903
+ isRequired: false,
2904
+ transformFunction: null
2905
+ },
2906
+ plage: {
2907
+ classPropertyName: "plage",
2908
+ publicName: "plage",
2909
+ isSignal: true,
2910
+ isRequired: false,
2911
+ transformFunction: null
2912
+ },
2913
+ refus: {
2914
+ classPropertyName: "refus",
2915
+ publicName: "refus",
2916
+ isSignal: true,
2917
+ isRequired: false,
2918
+ transformFunction: null
2919
+ }
2920
+ },
2921
+ outputs: {
2922
+ modification: "modification",
2923
+ annulation: "annulation"
2924
+ },
2925
+ host: {
2926
+ properties: { "attr.data-etat": "etat()" },
2927
+ classAttribute: "st-change-request"
2928
+ },
2929
+ ngImport: i0,
2930
+ template: "<div class=\"st-change-request__entete\">\n @switch (niveauDuTitre()) {\n @case (2) {\n <h2 stHeading class=\"st-change-request__titre\" taille=\"lg\" [id]=\"identifiants.titre\">\n {{ titre() }}\n </h2>\n }\n @case (3) {\n <h3 stHeading class=\"st-change-request__titre\" taille=\"md\" [id]=\"identifiants.titre\">\n {{ titre() }}\n </h3>\n }\n @default {\n <h4 stHeading class=\"st-change-request__titre\" taille=\"sm\" [id]=\"identifiants.titre\">\n {{ titre() }}\n </h4>\n }\n }\n <st-status-pill\n casse=\"phrase\"\n [statut]=\"etat()\"\n [libelle]=\"libelleDEtat()\"\n [ton]=\"pastille().ton\"\n [icone]=\"pastille().icone\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n />\n</div>\n\n@if (envoi !== null) {\n <st-error-summary [niveau]=\"niveauDuRecapitulatif()\" />\n}\n\n@if (etat() === 'refuse') {\n @if (refus(); as refus) {\n <st-refusal\n [erreur]=\"refus.erreur\"\n [message]=\"refus.message\"\n [codeInconnu]=\"refus.codeInconnu ?? false\"\n />\n }\n}\n\n<dl class=\"st-change-request__faits\">\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.valeurActuelle }}</dt>\n <dd><ng-content select=\"[actuelle]\" /></dd>\n </div>\n @if (plage(); as plage) {\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.plageAutorisee }}</dt>\n <dd [attr.lang]=\"catalogue().langueDeRepli\">\n {{ catalogue().libelles.plage(plage.min, plage.max) }}\n </dd>\n </div>\n }\n @if (effet(); as effet) {\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.effet }}</dt>\n <dd [attr.lang]=\"catalogue().langueDeRepli\">\n {{ catalogue().libelles.sensDeDemande[effet.sens] }},\n {{\n effet.nature === 'immediat'\n ? catalogue().libelles.effetImmediat\n : catalogue().libelles.effetDiffere\n }}\n </dd>\n </div>\n @if (effet.nature === 'differe') {\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.priseDEffet }}</dt>\n <dd><st-deadline absoluVisible [echeance]=\"effet.date\" /></dd>\n </div>\n }\n }\n</dl>\n\n<st-fieldset\n [legende]=\"catalogue().libelles.proposition\"\n [disabled]=\"fige()\"\n [decritPar]=\"raisonDuGel() === null ? [] : [identifiants.gel]\"\n>\n <ng-content select=\"[champ]\" />\n <ng-content select=\"[motif]\" />\n</st-fieldset>\n@if (raisonDuGel(); as raison) {\n <p\n class=\"st-change-request__note\"\n [id]=\"identifiants.gel\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ raison }}\n </p>\n}\n\n@if (etat() !== 'brouillon') {\n <section\n class=\"st-change-request__previsualisation\"\n [attr.aria-labelledby]=\"identifiants.previsualisation\"\n >\n @switch (niveauDuTitre()) {\n @case (2) {\n <h3\n stHeading\n taille=\"sm\"\n [id]=\"identifiants.previsualisation\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ catalogue().libelles.previsualisation }}\n </h3>\n }\n @case (3) {\n <h4\n stHeading\n taille=\"sm\"\n [id]=\"identifiants.previsualisation\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ catalogue().libelles.previsualisation }}\n </h4>\n }\n @default {\n <h5\n stHeading\n taille=\"sm\"\n [id]=\"identifiants.previsualisation\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ catalogue().libelles.previsualisation }}\n </h5>\n }\n }\n <ng-content select=\"[previsualisation]\" />\n </section>\n}\n\n@if (explication(); as texte) {\n <p class=\"st-change-request__note\" [attr.lang]=\"catalogue().langueDeRepli\">{{ texte }}</p>\n}\n\n@if (etat() !== 'publie') {\n <st-form-actions disposition=\"pied\" [attr.lang]=\"catalogue().langueDeRepli\">\n @if (rouvrable()) {\n <button debut stButton variante=\"secondaire\" type=\"button\" (click)=\"modification.emit()\">\n {{ catalogue().libelles.modifier }}\n </button>\n }\n @if (envoyee()) {\n <button debut stButton variante=\"secondaire\" type=\"button\" (click)=\"annulation.emit()\">\n {{ catalogue().libelles.annuler }}\n </button>\n }\n @if (etat() === 'brouillon') {\n <button stButton variante=\"primaire\" type=\"submit\" [chargement]=\"enCours()\">\n {{ catalogue().libelles.previsualiser }}\n </button>\n }\n @if (etat() === 'previsualise') {\n <button stButton variante=\"primaire\" type=\"submit\" [chargement]=\"enCours()\">\n {{ catalogue().libelles.soumettre }}\n </button>\n }\n </st-form-actions>\n}\n\n<span\n class=\"st-change-request__annonce st-vh\"\n aria-live=\"polite\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >{{ annonce.texte() }}</span\n>\n",
2931
+ styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-4);min-inline-size:0}.st-change-request__entete{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2) var(--st-espacement-3);align-items:center;justify-content:space-between}.st-change-request__titre{min-inline-size:0;margin:0;overflow-wrap:anywhere}.st-change-request__faits{display:grid;gap:var(--st-espacement-2);margin:0}.st-change-request__fait{display:flex;flex-wrap:wrap;gap:var(--st-espacement-1) var(--st-espacement-4);align-items:baseline}.st-change-request__fait dt{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-normal);flex:0 0 12rem;max-inline-size:100%;color:var(--st-couleur-texte-discret)}.st-change-request__fait dd{font-size:var(--st-taille-md);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);flex:1 1 12rem;min-inline-size:0;margin:0;color:var(--st-couleur-texte);overflow-wrap:anywhere}.st-change-request__note{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);margin:0;color:var(--st-couleur-texte-discret)}.st-change-request__previsualisation{display:grid;gap:var(--st-espacement-2);padding:var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md)}.st-change-request__previsualisation h3,.st-change-request__previsualisation h4,.st-change-request__previsualisation h5{margin:0}@media(forced-colors:active){.st-change-request__previsualisation{border-color:CanvasText}}\n"],
2932
+ dependencies: [
2933
+ {
2934
+ kind: "component",
2935
+ type: StButton,
2936
+ selector: "button[stButton]",
2937
+ inputs: [
2938
+ "variante",
2939
+ "taille",
2940
+ "pleineLargeur",
2941
+ "iconeAvant",
2942
+ "iconeApres",
2943
+ "chargement",
2944
+ "indisponible",
2945
+ "raisonIndisponible"
2946
+ ]
2947
+ },
2948
+ {
2949
+ kind: "component",
2950
+ type: StDeadline,
2951
+ selector: "st-deadline",
2952
+ inputs: [
2953
+ "echeance",
2954
+ "libelle",
2955
+ "seuilUrgentEnMinutes",
2956
+ "absoluVisible"
2957
+ ],
2958
+ outputs: ["depassee"]
2959
+ },
2960
+ {
2961
+ kind: "component",
2962
+ type: StErrorSummary,
2963
+ selector: "st-error-summary",
2964
+ inputs: [
2965
+ "erreurs",
2966
+ "titre",
2967
+ "niveau",
2968
+ "introduction",
2969
+ "tentative"
2970
+ ]
2971
+ },
2972
+ {
2973
+ kind: "component",
2974
+ type: StFieldset,
2975
+ selector: "st-fieldset",
2976
+ inputs: [
2977
+ "legende",
2978
+ "contenu",
2979
+ "disposition",
2980
+ "toutesLesErreurs",
2981
+ "choixExclusif",
2982
+ "readonly",
2983
+ "disabled",
2984
+ "hidden",
2985
+ "decritPar"
2986
+ ]
2987
+ },
2988
+ {
2989
+ kind: "component",
2990
+ type: StFormActions,
2991
+ selector: "st-form-actions",
2992
+ inputs: ["disposition"]
2993
+ },
2994
+ {
2995
+ kind: "component",
2996
+ type: StHeading,
2997
+ selector: "h1[stHeading], h2[stHeading], h3[stHeading], h4[stHeading], h5[stHeading], h6[stHeading]",
2998
+ inputs: [
2999
+ "taille",
3000
+ "serre",
3001
+ "identifiant"
3002
+ ]
3003
+ },
3004
+ {
3005
+ kind: "component",
3006
+ type: StRefusal,
3007
+ selector: "st-refusal",
3008
+ inputs: [
3009
+ "erreur",
3010
+ "message",
3011
+ "titre",
3012
+ "codeInconnu",
3013
+ "rejeuEnCours",
3014
+ "rechargementEnCours"
3015
+ ],
3016
+ outputs: [
3017
+ "rejeu",
3018
+ "rechargement",
3019
+ "attenteTerminee"
3020
+ ]
3021
+ },
3022
+ {
3023
+ kind: "component",
3024
+ type: StStatusPill,
3025
+ selector: "st-status-pill",
3026
+ inputs: [
3027
+ "statut",
3028
+ "libelle",
3029
+ "icone",
3030
+ "ton",
3031
+ "taille",
3032
+ "variante",
3033
+ "casse"
3034
+ ]
3035
+ }
3036
+ ],
3037
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
3038
+ });
3039
+ };
3040
+ i0.ɵɵngDeclareClassMetadata({
3041
+ minVersion: "12.0.0",
3042
+ version: "22.2.1",
3043
+ ngImport: i0,
3044
+ type: StChangeRequest,
3045
+ decorators: [{
3046
+ type: Component,
3047
+ args: [{
3048
+ selector: "st-change-request",
3049
+ changeDetection: ChangeDetectionStrategy.OnPush,
3050
+ imports: [
3051
+ StButton,
3052
+ StDeadline,
3053
+ StErrorSummary,
3054
+ StFieldset,
3055
+ StFormActions,
3056
+ StHeading,
3057
+ StRefusal,
3058
+ StStatusPill
3059
+ ],
3060
+ host: {
3061
+ class: "st-change-request",
3062
+ "[attr.data-etat]": "etat()"
3063
+ },
3064
+ template: "<div class=\"st-change-request__entete\">\n @switch (niveauDuTitre()) {\n @case (2) {\n <h2 stHeading class=\"st-change-request__titre\" taille=\"lg\" [id]=\"identifiants.titre\">\n {{ titre() }}\n </h2>\n }\n @case (3) {\n <h3 stHeading class=\"st-change-request__titre\" taille=\"md\" [id]=\"identifiants.titre\">\n {{ titre() }}\n </h3>\n }\n @default {\n <h4 stHeading class=\"st-change-request__titre\" taille=\"sm\" [id]=\"identifiants.titre\">\n {{ titre() }}\n </h4>\n }\n }\n <st-status-pill\n casse=\"phrase\"\n [statut]=\"etat()\"\n [libelle]=\"libelleDEtat()\"\n [ton]=\"pastille().ton\"\n [icone]=\"pastille().icone\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n />\n</div>\n\n@if (envoi !== null) {\n <st-error-summary [niveau]=\"niveauDuRecapitulatif()\" />\n}\n\n@if (etat() === 'refuse') {\n @if (refus(); as refus) {\n <st-refusal\n [erreur]=\"refus.erreur\"\n [message]=\"refus.message\"\n [codeInconnu]=\"refus.codeInconnu ?? false\"\n />\n }\n}\n\n<dl class=\"st-change-request__faits\">\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.valeurActuelle }}</dt>\n <dd><ng-content select=\"[actuelle]\" /></dd>\n </div>\n @if (plage(); as plage) {\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.plageAutorisee }}</dt>\n <dd [attr.lang]=\"catalogue().langueDeRepli\">\n {{ catalogue().libelles.plage(plage.min, plage.max) }}\n </dd>\n </div>\n }\n @if (effet(); as effet) {\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.effet }}</dt>\n <dd [attr.lang]=\"catalogue().langueDeRepli\">\n {{ catalogue().libelles.sensDeDemande[effet.sens] }},\n {{\n effet.nature === 'immediat'\n ? catalogue().libelles.effetImmediat\n : catalogue().libelles.effetDiffere\n }}\n </dd>\n </div>\n @if (effet.nature === 'differe') {\n <div class=\"st-change-request__fait\">\n <dt [attr.lang]=\"catalogue().langueDeRepli\">{{ catalogue().libelles.priseDEffet }}</dt>\n <dd><st-deadline absoluVisible [echeance]=\"effet.date\" /></dd>\n </div>\n }\n }\n</dl>\n\n<st-fieldset\n [legende]=\"catalogue().libelles.proposition\"\n [disabled]=\"fige()\"\n [decritPar]=\"raisonDuGel() === null ? [] : [identifiants.gel]\"\n>\n <ng-content select=\"[champ]\" />\n <ng-content select=\"[motif]\" />\n</st-fieldset>\n@if (raisonDuGel(); as raison) {\n <p\n class=\"st-change-request__note\"\n [id]=\"identifiants.gel\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ raison }}\n </p>\n}\n\n@if (etat() !== 'brouillon') {\n <section\n class=\"st-change-request__previsualisation\"\n [attr.aria-labelledby]=\"identifiants.previsualisation\"\n >\n @switch (niveauDuTitre()) {\n @case (2) {\n <h3\n stHeading\n taille=\"sm\"\n [id]=\"identifiants.previsualisation\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ catalogue().libelles.previsualisation }}\n </h3>\n }\n @case (3) {\n <h4\n stHeading\n taille=\"sm\"\n [id]=\"identifiants.previsualisation\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ catalogue().libelles.previsualisation }}\n </h4>\n }\n @default {\n <h5\n stHeading\n taille=\"sm\"\n [id]=\"identifiants.previsualisation\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ catalogue().libelles.previsualisation }}\n </h5>\n }\n }\n <ng-content select=\"[previsualisation]\" />\n </section>\n}\n\n@if (explication(); as texte) {\n <p class=\"st-change-request__note\" [attr.lang]=\"catalogue().langueDeRepli\">{{ texte }}</p>\n}\n\n@if (etat() !== 'publie') {\n <st-form-actions disposition=\"pied\" [attr.lang]=\"catalogue().langueDeRepli\">\n @if (rouvrable()) {\n <button debut stButton variante=\"secondaire\" type=\"button\" (click)=\"modification.emit()\">\n {{ catalogue().libelles.modifier }}\n </button>\n }\n @if (envoyee()) {\n <button debut stButton variante=\"secondaire\" type=\"button\" (click)=\"annulation.emit()\">\n {{ catalogue().libelles.annuler }}\n </button>\n }\n @if (etat() === 'brouillon') {\n <button stButton variante=\"primaire\" type=\"submit\" [chargement]=\"enCours()\">\n {{ catalogue().libelles.previsualiser }}\n </button>\n }\n @if (etat() === 'previsualise') {\n <button stButton variante=\"primaire\" type=\"submit\" [chargement]=\"enCours()\">\n {{ catalogue().libelles.soumettre }}\n </button>\n }\n </st-form-actions>\n}\n\n<span\n class=\"st-change-request__annonce st-vh\"\n aria-live=\"polite\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >{{ annonce.texte() }}</span\n>\n",
3065
+ styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:grid;gap:var(--st-espacement-4);min-inline-size:0}.st-change-request__entete{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2) var(--st-espacement-3);align-items:center;justify-content:space-between}.st-change-request__titre{min-inline-size:0;margin:0;overflow-wrap:anywhere}.st-change-request__faits{display:grid;gap:var(--st-espacement-2);margin:0}.st-change-request__fait{display:flex;flex-wrap:wrap;gap:var(--st-espacement-1) var(--st-espacement-4);align-items:baseline}.st-change-request__fait dt{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-normal);flex:0 0 12rem;max-inline-size:100%;color:var(--st-couleur-texte-discret)}.st-change-request__fait dd{font-size:var(--st-taille-md);line-height:var(--st-interligne-md);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);flex:1 1 12rem;min-inline-size:0;margin:0;color:var(--st-couleur-texte);overflow-wrap:anywhere}.st-change-request__note{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);margin:0;color:var(--st-couleur-texte-discret)}.st-change-request__previsualisation{display:grid;gap:var(--st-espacement-2);padding:var(--st-espacement-4);background:var(--st-couleur-surface-conteneur-bas);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md)}.st-change-request__previsualisation h3,.st-change-request__previsualisation h4,.st-change-request__previsualisation h5{margin:0}@media(forced-colors:active){.st-change-request__previsualisation{border-color:CanvasText}}\n"]
3066
+ }]
3067
+ }],
3068
+ ctorParameters: () => [],
3069
+ propDecorators: {
3070
+ titre: [{
3071
+ type: i0.Input,
3072
+ args: [{
3073
+ isSignal: true,
3074
+ alias: "titre",
3075
+ required: true
3076
+ }]
3077
+ }],
3078
+ niveauDuTitre: [{
3079
+ type: i0.Input,
3080
+ args: [{
3081
+ isSignal: true,
3082
+ alias: "niveauDuTitre",
3083
+ required: false
3084
+ }]
3085
+ }],
3086
+ etat: [{
3087
+ type: i0.Input,
3088
+ args: [{
3089
+ isSignal: true,
3090
+ alias: "etat",
3091
+ required: true
3092
+ }]
3093
+ }],
3094
+ effet: [{
3095
+ type: i0.Input,
3096
+ args: [{
3097
+ isSignal: true,
3098
+ alias: "effet",
3099
+ required: false
3100
+ }]
3101
+ }],
3102
+ plage: [{
3103
+ type: i0.Input,
3104
+ args: [{
3105
+ isSignal: true,
3106
+ alias: "plage",
3107
+ required: false
3108
+ }]
3109
+ }],
3110
+ refus: [{
3111
+ type: i0.Input,
3112
+ args: [{
3113
+ isSignal: true,
3114
+ alias: "refus",
3115
+ required: false
3116
+ }]
3117
+ }],
3118
+ modification: [{
3119
+ type: i0.Output,
3120
+ args: ["modification"]
3121
+ }],
3122
+ annulation: [{
3123
+ type: i0.Output,
3124
+ args: ["annulation"]
3125
+ }]
3126
+ }
3127
+ });
3128
+ export { LIBELLES_PARCOURS_EN, LIBELLES_PARCOURS_FR, MOTIF_MINIMUM, ST_LIBELLES_PARCOURS, StChallenge, StChangeRequest, StOutcome, StRecoveryCodes, StRefusal, StStepper, StTaskList, StWizard, StWizardStep, catalogueDuParcours, erreurDeMotif, erreurHorsPlage, fournirLibellesParcours, libellesDuParcours };
2666
3129
 
2667
3130
  //# sourceMappingURL=starterlib-ui-parcours.mjs.map