@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
@@ -14,7 +14,7 @@ var StOption = class StOption {
14
14
  }
15
15
  static ɵfac = i0.ɵɵngDeclareFactory({
16
16
  minVersion: "12.0.0",
17
- version: "22.2.0",
17
+ version: "22.2.1",
18
18
  ngImport: i0,
19
19
  type: StOption,
20
20
  deps: [],
@@ -22,7 +22,7 @@ var StOption = class StOption {
22
22
  });
23
23
  static ɵdir = i0.ɵɵngDeclareDirective({
24
24
  minVersion: "14.0.0",
25
- version: "22.2.0",
25
+ version: "22.2.1",
26
26
  type: StOption,
27
27
  isStandalone: true,
28
28
  selector: "ng-template[stOption]",
@@ -31,7 +31,7 @@ var StOption = class StOption {
31
31
  };
32
32
  i0.ɵɵngDeclareClassMetadata({
33
33
  minVersion: "12.0.0",
34
- version: "22.2.0",
34
+ version: "22.2.1",
35
35
  ngImport: i0,
36
36
  type: StOption,
37
37
  decorators: [{
@@ -46,50 +46,50 @@ var StCombobox = class StCombobox extends ControleDeSaisie {
46
46
  element = inject(ElementRef);
47
47
  injecteur = inject(Injector);
48
48
  document = inject(DOCUMENT);
49
- options = input.required(...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
50
- filtrage = input("local", ...ngDevMode ? [{ debugName: "filtrage" }] : /* istanbul ignore next */ []);
51
- icone = input(null, ...ngDevMode ? [{ debugName: "icone" }] : /* istanbul ignore next */ []);
52
- presentation = input("libelle", ...ngDevMode ? [{ debugName: "presentation" }] : /* istanbul ignore next */ []);
49
+ options = input.required(...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
50
+ filtrage = input("local", ...ngDevMode ? [{ debugName: "filtrage" }] : /* istanbul ignore next */ []);
51
+ icone = input(null, ...ngDevMode ? [{ debugName: "icone" }] : /* istanbul ignore next */ []);
52
+ presentation = input("libelle", ...ngDevMode ? [{ debugName: "presentation" }] : /* istanbul ignore next */ []);
53
53
  chargement = input(false, {
54
- ...ngDevMode ? { debugName: "chargement" } : /* istanbul ignore next */ {},
54
+ ...ngDevMode ? { debugName: "chargement" } : /* istanbul ignore next */ {},
55
55
  transform: booleanAttribute
56
56
  });
57
57
  effacable = input(false, {
58
- ...ngDevMode ? { debugName: "effacable" } : /* istanbul ignore next */ {},
58
+ ...ngDevMode ? { debugName: "effacable" } : /* istanbul ignore next */ {},
59
59
  transform: booleanAttribute
60
60
  });
61
61
  temporisationEnMs = input(250, {
62
- ...ngDevMode ? { debugName: "temporisationEnMs" } : /* istanbul ignore next */ {},
62
+ ...ngDevMode ? { debugName: "temporisationEnMs" } : /* istanbul ignore next */ {},
63
63
  transform: numberAttribute
64
64
  });
65
65
  longueurMinimale = input(0, {
66
- ...ngDevMode ? { debugName: "longueurMinimale" } : /* istanbul ignore next */ {},
66
+ ...ngDevMode ? { debugName: "longueurMinimale" } : /* istanbul ignore next */ {},
67
67
  transform: numberAttribute
68
68
  });
69
69
  recherche = output();
70
70
  annonce = new AnnonceLocale(inject(DestroyRef));
71
- gabaritDOption = contentChild(StOption, ...ngDevMode ? [{ debugName: "gabaritDOption" }] : /* istanbul ignore next */ []);
71
+ gabaritDOption = contentChild(StOption, ...ngDevMode ? [{ debugName: "gabaritDOption" }] : /* istanbul ignore next */ []);
72
72
  attenteVisible = affichageDiffere(() => this.chargement());
73
- ouvert = signal(false, ...ngDevMode ? [{ debugName: "ouvert" }] : /* istanbul ignore next */ []);
73
+ ouvert = signal(false, ...ngDevMode ? [{ debugName: "ouvert" }] : /* istanbul ignore next */ []);
74
74
  texte = linkedSignal({
75
- ...ngDevMode ? { debugName: "texte" } : /* istanbul ignore next */ {},
75
+ ...ngDevMode ? { debugName: "texte" } : /* istanbul ignore next */ {},
76
76
  source: this.value,
77
77
  computation: (valeur) => untracked(() => this.libelleDe(valeur))
78
78
  });
79
- filtre = signal("", ...ngDevMode ? [{ debugName: "filtre" }] : /* istanbul ignore next */ []);
80
- surlignee = linkedSignal(() => this.value() === "" ? [] : [this.value()], ...ngDevMode ? [{ debugName: "surlignee" }] : /* istanbul ignore next */ []);
81
- visibles = computed(() => this.filtrage() === "local" ? filtrerOptions(this.options(), this.filtre(), this.locale()) : this.options(), ...ngDevMode ? [{ debugName: "visibles" }] : /* istanbul ignore next */ []);
82
- blocs = computed(() => groupesDOptions(this.visibles()), ...ngDevMode ? [{ debugName: "blocs" }] : /* istanbul ignore next */ []);
79
+ filtre = signal("", ...ngDevMode ? [{ debugName: "filtre" }] : /* istanbul ignore next */ []);
80
+ surlignee = linkedSignal(() => this.value() === "" ? [] : [this.value()], ...ngDevMode ? [{ debugName: "surlignee" }] : /* istanbul ignore next */ []);
81
+ visibles = computed(() => this.filtrage() === "local" ? filtrerOptions(this.options(), this.filtre(), this.locale()) : this.options(), ...ngDevMode ? [{ debugName: "visibles" }] : /* istanbul ignore next */ []);
82
+ blocs = computed(() => groupesDOptions(this.visibles()), ...ngDevMode ? [{ debugName: "blocs" }] : /* istanbul ignore next */ []);
83
83
  tropCourt = computed(() => {
84
84
  const minimum = this.longueurMinimale();
85
85
  const longueur = this.filtre().trim().length;
86
86
  return this.filtrage() === "distant" && minimum > 0 && longueur > 0 && longueur < minimum;
87
- }, ...ngDevMode ? [{ debugName: "tropCourt" }] : /* istanbul ignore next */ []);
88
- afficherEffacer = computed(() => this.effacable() && this.value() !== "", ...ngDevMode ? [{ debugName: "afficherEffacer" }] : /* istanbul ignore next */ []);
89
- choixAffiche = computed(() => this.value() !== "" && this.texte() !== "" && this.texte() === this.libelleDe(this.value()), ...ngDevMode ? [{ debugName: "choixAffiche" }] : /* istanbul ignore next */ []);
87
+ }, ...ngDevMode ? [{ debugName: "tropCourt" }] : /* istanbul ignore next */ []);
88
+ afficherEffacer = computed(() => this.effacable() && this.value() !== "", ...ngDevMode ? [{ debugName: "afficherEffacer" }] : /* istanbul ignore next */ []);
89
+ choixAffiche = computed(() => this.value() !== "" && this.texte() !== "" && this.texte() === this.libelleDe(this.value()), ...ngDevMode ? [{ debugName: "choixAffiche" }] : /* istanbul ignore next */ []);
90
90
  idListe = inject(StIdentifiants).prochain("st-combobox-liste");
91
- liste = viewChild(Listbox, ...ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []);
92
- champNatif = viewChild("champ", ...ngDevMode ? [{ debugName: "champNatif" }] : /* istanbul ignore next */ []);
91
+ liste = viewChild(Listbox, ...ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []);
92
+ champNatif = viewChild("champ", ...ngDevMode ? [{ debugName: "champNatif" }] : /* istanbul ignore next */ []);
93
93
  minuterie;
94
94
  derniereAnnonce = null;
95
95
  constructor() {
@@ -219,7 +219,7 @@ var StCombobox = class StCombobox extends ControleDeSaisie {
219
219
  }
220
220
  static ɵfac = i0.ɵɵngDeclareFactory({
221
221
  minVersion: "12.0.0",
222
- version: "22.2.0",
222
+ version: "22.2.1",
223
223
  ngImport: i0,
224
224
  type: StCombobox,
225
225
  deps: [],
@@ -227,7 +227,7 @@ var StCombobox = class StCombobox extends ControleDeSaisie {
227
227
  });
228
228
  static ɵcmp = i0.ɵɵngDeclareComponent({
229
229
  minVersion: "17.0.0",
230
- version: "22.2.0",
230
+ version: "22.2.1",
231
231
  type: StCombobox,
232
232
  isStandalone: true,
233
233
  selector: "st-combobox",
@@ -317,7 +317,7 @@ var StCombobox = class StCombobox extends ControleDeSaisie {
317
317
  usesInheritance: true,
318
318
  ngImport: i0,
319
319
  template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n [presentation]=\"presentation()\"\n>\n <div #cadre class=\"st-combobox__cadre\">\n @if (icone(); as nom) {\n <st-icon class=\"st-combobox__icone\" [nom]=\"nom\" taille=\"18\" />\n }\n <input\n #champ\n #combobox=\"ngCombobox\"\n class=\"st-combobox__champ\"\n stControleDeChamp\n ngCombobox\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [(value)]=\"texte\"\n [(expanded)]=\"ouvert\"\n [attr.name]=\"name() || null\"\n [attr.data-effacable]=\"afficherEffacer() ? '' : null\"\n [attr.data-icone]=\"icone() ? '' : null\"\n [attr.data-choisi]=\"choixAffiche() ? '' : null\"\n [attr.aria-busy]=\"chargement() ? 'true' : null\"\n [disabled]=\"desactive()\"\n [softDisabled]=\"false\"\n [readonly]=\"readonly()\"\n (input)=\"surSaisie($event)\"\n />\n <!-- Boutons REELS (APG, VoiceOver iOS, TalkBack) : `tabindex=\"-1\"`, hors tabulation, la\n fleche bas du clavier ouvre deja la liste depuis le champ. `mousedown.preventDefault`\n garde le focus dans le champ au clic. -->\n <div class=\"st-combobox__actions\">\n @if (afficherEffacer()) {\n <button\n class=\"st-combobox__effacer\"\n stIconButton\n type=\"button\"\n tabindex=\"-1\"\n taille=\"md\"\n tailleDuGlyphe=\"16\"\n icone=\"croix\"\n [etiquette]=\"libelles().effacerLeChoix\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"effacer()\"\n ></button>\n }\n <span class=\"st-combobox__bouton\">\n <button\n class=\"st-combobox__ouvrir\"\n stIconButton\n type=\"button\"\n tabindex=\"-1\"\n taille=\"md\"\n tailleDuGlyphe=\"20\"\n icone=\"chevron-bas\"\n [attr.data-ouvert]=\"ouvert() ? '' : null\"\n [attr.data-attente]=\"attenteVisible() ? '' : null\"\n [etiquette]=\"libelles().afficherLesChoix(libelle())\"\n [attr.aria-expanded]=\"ouvert() ? 'true' : 'false'\"\n [attr.aria-controls]=\"idListe\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"basculer()\"\n ></button>\n <!-- Distant, reponse attendue : l'indicateur PREND LA PLACE du glyphe, sur le bouton qui\n reste nomme et operant (la liste s'ouvre et se ferme toujours). Decoratif : l'attente\n se dit par `aria-busy`, puis par l'annonce du nombre de resultats. -->\n @if (attenteVisible()) {\n <span class=\"st-combobox__attente\" aria-hidden=\"true\"\n ><st-spinner taille=\"sm\" ton=\"neutre\"\n /></span>\n }\n </span>\n </div>\n </div>\n\n <!-- ⚠️ La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: cadre, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-combobox__popup\">\n <!-- En attente, une liste vide n'est pas « Aucun resultat » : la reponse n'est pas encore\n la (une ressource repasse a sa valeur par defaut quand son terme change). -->\n @if (visibles().length === 0) {\n @if (tropCourt()) {\n <p class=\"st-combobox__vide\">{{ libelles().longueurMinimale(longueurMinimale()) }}</p>\n } @else if (!chargement()) {\n <p class=\"st-combobox__vide\">{{ libelles().aucunResultat }}</p>\n } @else if (attenteVisible()) {\n <p class=\"st-combobox__vide\">{{ libelles().chargementEnCours }}</p>\n }\n }\n <div\n #liste=\"ngListbox\"\n [id]=\"idListe\"\n class=\"st-combobox__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [attr.aria-busy]=\"chargement() ? 'true' : null\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [(value)]=\"surlignee\"\n (click)=\"surClic($event)\"\n (keydown.enter)=\"valider()\"\n >\n @for (bloc of blocs(); track bloc.cle; let indiceDuBloc = $index) {\n @if (bloc.groupe === null) {\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-combobox__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n [attr.aria-label]=\"gabaritDOption() ? null : affichable(option.libelle)\"\n [attr.aria-labelledby]=\"\n gabaritDOption() ? idDuContenu(indiceDuBloc, $index) : null\n \"\n [attr.aria-describedby]=\"option.aide ? idDeLAide(indiceDuBloc, $index) : null\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n contenuDOption;\n context: {\n $implicit: option,\n idAide: idDeLAide(indiceDuBloc, $index),\n idContenu: idDuContenu(indiceDuBloc, $index),\n }\n \"\n />\n <st-icon class=\"st-combobox__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n } @else {\n <div role=\"group\" [attr.aria-labelledby]=\"idDuGroupe(indiceDuBloc)\">\n <p class=\"st-combobox__groupe\" [id]=\"idDuGroupe(indiceDuBloc)\">\n {{ bloc.groupe }}\n </p>\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-combobox__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n [attr.aria-label]=\"gabaritDOption() ? null : affichable(option.libelle)\"\n [attr.aria-labelledby]=\"\n gabaritDOption() ? idDuContenu(indiceDuBloc, $index) : null\n \"\n [attr.aria-describedby]=\"option.aide ? idDeLAide(indiceDuBloc, $index) : null\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n contenuDOption;\n context: {\n $implicit: option,\n idAide: idDeLAide(indiceDuBloc, $index),\n idContenu: idDuContenu(indiceDuBloc, $index),\n }\n \"\n />\n <st-icon class=\"st-combobox__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n</st-form-field>\n\n<!-- Contenu d'une option. Sans gabarit : le libelle et, dessous, l'aide ; le NOM est le libelle\n (`aria-label`), l'aide la description. Avec le gabarit `stOption` : le NOM est le texte que le\n gabarit REND — ce qui se voit est ce qui se lit (WCAG 1.3.1, 2.5.3) — et l'aide reste la\n description. Le gabarit est rendu DEUX fois : la copie visible est `inert` (un element\n interactif glisse dedans ne prend jamais le focus : il reste dans le champ,\n `aria-activedescendant`) ; la copie `hidden` nomme l'option (`aria-labelledby` lit un noeud\n masque, jamais un noeud inerte : vu au banc Chromium). La marque `choisie` suit la coche :\n l'option `aria-selected`, celle qu'Entree retiendrait. -->\n<ng-template #contenuDOption let-option let-idAide=\"idAide\" let-idContenu=\"idContenu\">\n @if (gabaritDOption(); as gabarit) {\n <span class=\"st-combobox__textes\" inert>\n <ng-container\n *ngTemplateOutlet=\"\n gabarit.gabarit;\n context: { $implicit: option, choisie: surlignee().includes(option.valeur) }\n \"\n />\n </span>\n <span [id]=\"idContenu\" hidden>\n <ng-container\n *ngTemplateOutlet=\"\n gabarit.gabarit;\n context: { $implicit: option, choisie: surlignee().includes(option.valeur) }\n \"\n />\n </span>\n @if (option.aide) {\n <span class=\"st-vh\" [id]=\"idAide\">{{ option.aide }}</span>\n }\n } @else {\n <span class=\"st-combobox__textes\">\n <span class=\"st-combobox__libelle\" dir=\"auto\">{{ affichable(option.libelle) }}</span>\n @if (option.aide) {\n <span class=\"st-combobox__aide\" [id]=\"idAide\">{{ option.aide }}</span>\n }\n </span>\n }\n</ng-template>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n",
320
- 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}.st-combobox__cadre{--_glyphe: 1.125rem;position:relative}.st-combobox__champ:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-combobox__champ{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-combobox__champ::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-combobox__champ:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-combobox__champ:focus-visible{border-color:var(--st-couleur-primaire)}.st-combobox__champ[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-combobox__champ[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-combobox__champ:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-combobox__champ:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-combobox__champ:is(input,textarea):read-only:not(:disabled),.st-combobox__champ[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ{padding-inline-end:var(--st-cible-tactile-min)}.st-combobox__champ[data-effacable]{padding-inline-end:calc(var(--st-cible-tactile-min) * 2)}.st-combobox__champ[data-icone]{padding-inline-start:calc(var(--st-espacement-3) + var(--_glyphe) + var(--st-espacement-1-5))}.st-combobox__champ[data-choisi]{font-weight:var(--st-graisse-semi)}.st-combobox__icone{position:absolute;inset-block-start:50%;inset-inline-start:var(--st-espacement-3);color:var(--st-couleur-texte-attenue);pointer-events:none;translate:0 -50%}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__icone{color:var(--st-couleur-texte-desactive)}.st-combobox__actions{position:absolute;inset-block:0;inset-inline-end:0;display:flex;align-items:center}.st-combobox__effacer,.st-combobox__ouvrir{color:var(--st-couleur-texte-discret)}.st-combobox__bouton{display:grid}.st-combobox__bouton>*{grid-area:1/1}.st-combobox__attente{display:inline-flex;place-self:center;pointer-events:none}.st-combobox__ouvrir[data-attente] ::ng-deep st-icon{visibility:hidden}.st-combobox__ouvrir[data-ouvert]{rotate:180deg}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__actions,.st-combobox__cadre:has(.st-combobox__champ:read-only) .st-combobox__actions{display:none}.st-combobox__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-combobox__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-combobox__vide{padding:var(--st-espacement-2) var(--st-espacement-3);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-combobox__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-combobox__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-combobox__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-combobox__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-combobox__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-combobox__textes{display:flex;flex-direction:column;min-inline-size:0}.st-combobox__aide{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);letter-spacing:var(--st-interlettrage-normal);font-weight:var(--st-graisse-normale);color:var(--st-couleur-texte-discret)}[aria-disabled=true] .st-combobox__aide{color:var(--st-couleur-texte-desactive)}.st-combobox__coche{visibility:hidden}[aria-selected=true]>.st-combobox__coche{visibility:visible}\n"],
320
+ 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}.st-combobox__cadre{--_glyphe: 1.125rem;position:relative}.st-combobox__champ:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-combobox__champ{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-combobox__champ::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-combobox__champ:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-combobox__champ:focus-visible{border-color:var(--st-couleur-primaire)}.st-combobox__champ[aria-invalid=true]{border-color:var(--st-couleur-erreur);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-combobox__champ[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-combobox__champ:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-combobox__champ:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-combobox__champ:is(input,textarea):read-only:not(:disabled),.st-combobox__champ[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ{padding-inline-end:var(--st-cible-tactile-min)}.st-combobox__champ[data-effacable]{padding-inline-end:calc(var(--st-cible-tactile-min) * 2)}.st-combobox__champ[data-icone]{padding-inline-start:calc(var(--st-espacement-3) + var(--_glyphe) + var(--st-espacement-1-5))}.st-combobox__champ[data-choisi]{font-weight:var(--st-graisse-semi)}.st-combobox__icone{position:absolute;inset-block-start:50%;inset-inline-start:var(--st-espacement-3);color:var(--st-couleur-texte-attenue);pointer-events:none;translate:0 -50%}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__icone{color:var(--st-couleur-texte-desactive)}.st-combobox__actions{position:absolute;inset-block:0;inset-inline-end:0;display:flex;align-items:center}.st-combobox__effacer,.st-combobox__ouvrir{color:var(--st-couleur-texte-discret)}.st-combobox__bouton{display:grid}.st-combobox__bouton>*{grid-area:1/1}.st-combobox__attente{display:inline-flex;place-self:center;pointer-events:none}.st-combobox__ouvrir[data-attente] ::ng-deep st-icon{visibility:hidden}.st-combobox__ouvrir[data-ouvert]{rotate:180deg}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__actions,.st-combobox__cadre:has(.st-combobox__champ:read-only) .st-combobox__actions{display:none}.st-combobox__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-combobox__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-combobox__vide{padding:var(--st-espacement-2) var(--st-espacement-3);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-combobox__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-combobox__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-combobox__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-combobox__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-combobox__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-combobox__textes{display:flex;flex-direction:column;min-inline-size:0}.st-combobox__aide{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);letter-spacing:var(--st-interlettrage-normal);font-weight:var(--st-graisse-normale);color:var(--st-couleur-texte-discret)}[aria-disabled=true] .st-combobox__aide{color:var(--st-couleur-texte-desactive)}.st-combobox__coche{visibility:hidden}[aria-selected=true]>.st-combobox__coche{visibility:visible}\n"],
321
321
  dependencies: [
322
322
  {
323
323
  kind: "component",
@@ -502,7 +502,7 @@ var StCombobox = class StCombobox extends ControleDeSaisie {
502
502
  };
503
503
  i0.ɵɵngDeclareClassMetadata({
504
504
  minVersion: "12.0.0",
505
- version: "22.2.0",
505
+ version: "22.2.1",
506
506
  ngImport: i0,
507
507
  type: StCombobox,
508
508
  decorators: [{
@@ -529,7 +529,7 @@ i0.ɵɵngDeclareClassMetadata({
529
529
  "(focusout)": "aLaSortie($event)"
530
530
  },
531
531
  template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n [presentation]=\"presentation()\"\n>\n <div #cadre class=\"st-combobox__cadre\">\n @if (icone(); as nom) {\n <st-icon class=\"st-combobox__icone\" [nom]=\"nom\" taille=\"18\" />\n }\n <input\n #champ\n #combobox=\"ngCombobox\"\n class=\"st-combobox__champ\"\n stControleDeChamp\n ngCombobox\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [(value)]=\"texte\"\n [(expanded)]=\"ouvert\"\n [attr.name]=\"name() || null\"\n [attr.data-effacable]=\"afficherEffacer() ? '' : null\"\n [attr.data-icone]=\"icone() ? '' : null\"\n [attr.data-choisi]=\"choixAffiche() ? '' : null\"\n [attr.aria-busy]=\"chargement() ? 'true' : null\"\n [disabled]=\"desactive()\"\n [softDisabled]=\"false\"\n [readonly]=\"readonly()\"\n (input)=\"surSaisie($event)\"\n />\n <!-- Boutons REELS (APG, VoiceOver iOS, TalkBack) : `tabindex=\"-1\"`, hors tabulation, la\n fleche bas du clavier ouvre deja la liste depuis le champ. `mousedown.preventDefault`\n garde le focus dans le champ au clic. -->\n <div class=\"st-combobox__actions\">\n @if (afficherEffacer()) {\n <button\n class=\"st-combobox__effacer\"\n stIconButton\n type=\"button\"\n tabindex=\"-1\"\n taille=\"md\"\n tailleDuGlyphe=\"16\"\n icone=\"croix\"\n [etiquette]=\"libelles().effacerLeChoix\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"effacer()\"\n ></button>\n }\n <span class=\"st-combobox__bouton\">\n <button\n class=\"st-combobox__ouvrir\"\n stIconButton\n type=\"button\"\n tabindex=\"-1\"\n taille=\"md\"\n tailleDuGlyphe=\"20\"\n icone=\"chevron-bas\"\n [attr.data-ouvert]=\"ouvert() ? '' : null\"\n [attr.data-attente]=\"attenteVisible() ? '' : null\"\n [etiquette]=\"libelles().afficherLesChoix(libelle())\"\n [attr.aria-expanded]=\"ouvert() ? 'true' : 'false'\"\n [attr.aria-controls]=\"idListe\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"basculer()\"\n ></button>\n <!-- Distant, reponse attendue : l'indicateur PREND LA PLACE du glyphe, sur le bouton qui\n reste nomme et operant (la liste s'ouvre et se ferme toujours). Decoratif : l'attente\n se dit par `aria-busy`, puis par l'annonce du nombre de resultats. -->\n @if (attenteVisible()) {\n <span class=\"st-combobox__attente\" aria-hidden=\"true\"\n ><st-spinner taille=\"sm\" ton=\"neutre\"\n /></span>\n }\n </span>\n </div>\n </div>\n\n <!-- ⚠️ La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: cadre, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-combobox__popup\">\n <!-- En attente, une liste vide n'est pas « Aucun resultat » : la reponse n'est pas encore\n la (une ressource repasse a sa valeur par defaut quand son terme change). -->\n @if (visibles().length === 0) {\n @if (tropCourt()) {\n <p class=\"st-combobox__vide\">{{ libelles().longueurMinimale(longueurMinimale()) }}</p>\n } @else if (!chargement()) {\n <p class=\"st-combobox__vide\">{{ libelles().aucunResultat }}</p>\n } @else if (attenteVisible()) {\n <p class=\"st-combobox__vide\">{{ libelles().chargementEnCours }}</p>\n }\n }\n <div\n #liste=\"ngListbox\"\n [id]=\"idListe\"\n class=\"st-combobox__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [attr.aria-busy]=\"chargement() ? 'true' : null\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [(value)]=\"surlignee\"\n (click)=\"surClic($event)\"\n (keydown.enter)=\"valider()\"\n >\n @for (bloc of blocs(); track bloc.cle; let indiceDuBloc = $index) {\n @if (bloc.groupe === null) {\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-combobox__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n [attr.aria-label]=\"gabaritDOption() ? null : affichable(option.libelle)\"\n [attr.aria-labelledby]=\"\n gabaritDOption() ? idDuContenu(indiceDuBloc, $index) : null\n \"\n [attr.aria-describedby]=\"option.aide ? idDeLAide(indiceDuBloc, $index) : null\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n contenuDOption;\n context: {\n $implicit: option,\n idAide: idDeLAide(indiceDuBloc, $index),\n idContenu: idDuContenu(indiceDuBloc, $index),\n }\n \"\n />\n <st-icon class=\"st-combobox__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n } @else {\n <div role=\"group\" [attr.aria-labelledby]=\"idDuGroupe(indiceDuBloc)\">\n <p class=\"st-combobox__groupe\" [id]=\"idDuGroupe(indiceDuBloc)\">\n {{ bloc.groupe }}\n </p>\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-combobox__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n [attr.aria-label]=\"gabaritDOption() ? null : affichable(option.libelle)\"\n [attr.aria-labelledby]=\"\n gabaritDOption() ? idDuContenu(indiceDuBloc, $index) : null\n \"\n [attr.aria-describedby]=\"option.aide ? idDeLAide(indiceDuBloc, $index) : null\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n contenuDOption;\n context: {\n $implicit: option,\n idAide: idDeLAide(indiceDuBloc, $index),\n idContenu: idDuContenu(indiceDuBloc, $index),\n }\n \"\n />\n <st-icon class=\"st-combobox__coche\" nom=\"coche\" taille=\"sm\" />\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n</st-form-field>\n\n<!-- Contenu d'une option. Sans gabarit : le libelle et, dessous, l'aide ; le NOM est le libelle\n (`aria-label`), l'aide la description. Avec le gabarit `stOption` : le NOM est le texte que le\n gabarit REND — ce qui se voit est ce qui se lit (WCAG 1.3.1, 2.5.3) — et l'aide reste la\n description. Le gabarit est rendu DEUX fois : la copie visible est `inert` (un element\n interactif glisse dedans ne prend jamais le focus : il reste dans le champ,\n `aria-activedescendant`) ; la copie `hidden` nomme l'option (`aria-labelledby` lit un noeud\n masque, jamais un noeud inerte : vu au banc Chromium). La marque `choisie` suit la coche :\n l'option `aria-selected`, celle qu'Entree retiendrait. -->\n<ng-template #contenuDOption let-option let-idAide=\"idAide\" let-idContenu=\"idContenu\">\n @if (gabaritDOption(); as gabarit) {\n <span class=\"st-combobox__textes\" inert>\n <ng-container\n *ngTemplateOutlet=\"\n gabarit.gabarit;\n context: { $implicit: option, choisie: surlignee().includes(option.valeur) }\n \"\n />\n </span>\n <span [id]=\"idContenu\" hidden>\n <ng-container\n *ngTemplateOutlet=\"\n gabarit.gabarit;\n context: { $implicit: option, choisie: surlignee().includes(option.valeur) }\n \"\n />\n </span>\n @if (option.aide) {\n <span class=\"st-vh\" [id]=\"idAide\">{{ option.aide }}</span>\n }\n } @else {\n <span class=\"st-combobox__textes\">\n <span class=\"st-combobox__libelle\" dir=\"auto\">{{ affichable(option.libelle) }}</span>\n @if (option.aide) {\n <span class=\"st-combobox__aide\" [id]=\"idAide\">{{ option.aide }}</span>\n }\n </span>\n }\n</ng-template>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n",
532
- 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}.st-combobox__cadre{--_glyphe: 1.125rem;position:relative}.st-combobox__champ:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-combobox__champ{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-combobox__champ::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-combobox__champ:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-combobox__champ:focus-visible{border-color:var(--st-couleur-primaire)}.st-combobox__champ[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-combobox__champ[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-combobox__champ:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-combobox__champ:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-combobox__champ:is(input,textarea):read-only:not(:disabled),.st-combobox__champ[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ{padding-inline-end:var(--st-cible-tactile-min)}.st-combobox__champ[data-effacable]{padding-inline-end:calc(var(--st-cible-tactile-min) * 2)}.st-combobox__champ[data-icone]{padding-inline-start:calc(var(--st-espacement-3) + var(--_glyphe) + var(--st-espacement-1-5))}.st-combobox__champ[data-choisi]{font-weight:var(--st-graisse-semi)}.st-combobox__icone{position:absolute;inset-block-start:50%;inset-inline-start:var(--st-espacement-3);color:var(--st-couleur-texte-attenue);pointer-events:none;translate:0 -50%}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__icone{color:var(--st-couleur-texte-desactive)}.st-combobox__actions{position:absolute;inset-block:0;inset-inline-end:0;display:flex;align-items:center}.st-combobox__effacer,.st-combobox__ouvrir{color:var(--st-couleur-texte-discret)}.st-combobox__bouton{display:grid}.st-combobox__bouton>*{grid-area:1/1}.st-combobox__attente{display:inline-flex;place-self:center;pointer-events:none}.st-combobox__ouvrir[data-attente] ::ng-deep st-icon{visibility:hidden}.st-combobox__ouvrir[data-ouvert]{rotate:180deg}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__actions,.st-combobox__cadre:has(.st-combobox__champ:read-only) .st-combobox__actions{display:none}.st-combobox__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-combobox__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-combobox__vide{padding:var(--st-espacement-2) var(--st-espacement-3);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-combobox__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-combobox__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-combobox__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-combobox__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-combobox__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-combobox__textes{display:flex;flex-direction:column;min-inline-size:0}.st-combobox__aide{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);letter-spacing:var(--st-interlettrage-normal);font-weight:var(--st-graisse-normale);color:var(--st-couleur-texte-discret)}[aria-disabled=true] .st-combobox__aide{color:var(--st-couleur-texte-desactive)}.st-combobox__coche{visibility:hidden}[aria-selected=true]>.st-combobox__coche{visibility:visible}\n"]
532
+ 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}.st-combobox__cadre{--_glyphe: 1.125rem;position:relative}.st-combobox__champ:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-combobox__champ{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-combobox__champ{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-combobox__champ::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-combobox__champ:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-combobox__champ:focus-visible{border-color:var(--st-couleur-primaire)}.st-combobox__champ[aria-invalid=true]{border-color:var(--st-couleur-erreur);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-combobox__champ[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-combobox__champ:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-combobox__champ:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-combobox__champ:is(input,textarea):read-only:not(:disabled),.st-combobox__champ[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-combobox__champ{padding-inline-end:var(--st-cible-tactile-min)}.st-combobox__champ[data-effacable]{padding-inline-end:calc(var(--st-cible-tactile-min) * 2)}.st-combobox__champ[data-icone]{padding-inline-start:calc(var(--st-espacement-3) + var(--_glyphe) + var(--st-espacement-1-5))}.st-combobox__champ[data-choisi]{font-weight:var(--st-graisse-semi)}.st-combobox__icone{position:absolute;inset-block-start:50%;inset-inline-start:var(--st-espacement-3);color:var(--st-couleur-texte-attenue);pointer-events:none;translate:0 -50%}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__icone{color:var(--st-couleur-texte-desactive)}.st-combobox__actions{position:absolute;inset-block:0;inset-inline-end:0;display:flex;align-items:center}.st-combobox__effacer,.st-combobox__ouvrir{color:var(--st-couleur-texte-discret)}.st-combobox__bouton{display:grid}.st-combobox__bouton>*{grid-area:1/1}.st-combobox__attente{display:inline-flex;place-self:center;pointer-events:none}.st-combobox__ouvrir[data-attente] ::ng-deep st-icon{visibility:hidden}.st-combobox__ouvrir[data-ouvert]{rotate:180deg}.st-combobox__cadre:has(.st-combobox__champ:disabled) .st-combobox__actions,.st-combobox__cadre:has(.st-combobox__champ:read-only) .st-combobox__actions{display:none}.st-combobox__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-combobox__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-combobox__vide{padding:var(--st-espacement-2) var(--st-espacement-3);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-combobox__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-combobox__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-combobox__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-combobox__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-combobox__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-combobox__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-combobox__textes{display:flex;flex-direction:column;min-inline-size:0}.st-combobox__aide{font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);letter-spacing:var(--st-interlettrage-normal);font-weight:var(--st-graisse-normale);color:var(--st-couleur-texte-discret)}[aria-disabled=true] .st-combobox__aide{color:var(--st-couleur-texte-desactive)}.st-combobox__coche{visibility:hidden}[aria-selected=true]>.st-combobox__coche{visibility:visible}\n"]
533
533
  }]
534
534
  }],
535
535
  ctorParameters: () => [],
@@ -622,27 +622,27 @@ var StMultiselect = class StMultiselect extends ContratDeChamp {
622
622
  locale = inject(ST_LOCALE);
623
623
  element = inject(ElementRef);
624
624
  injecteur = inject(Injector);
625
- value = model([], ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
626
- options = input.required(...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
627
- modeDeResume = input("auto", ...ngDevMode ? [{ debugName: "modeDeResume" }] : /* istanbul ignore next */ []);
625
+ value = model([], ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
626
+ options = input.required(...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
627
+ modeDeResume = input("auto", ...ngDevMode ? [{ debugName: "modeDeResume" }] : /* istanbul ignore next */ []);
628
628
  toutRetirer = input(true, {
629
- ...ngDevMode ? { debugName: "toutRetirer" } : /* istanbul ignore next */ {},
629
+ ...ngDevMode ? { debugName: "toutRetirer" } : /* istanbul ignore next */ {},
630
630
  transform: booleanAttribute
631
631
  });
632
632
  puces = input(true, {
633
- ...ngDevMode ? { debugName: "puces" } : /* istanbul ignore next */ {},
633
+ ...ngDevMode ? { debugName: "puces" } : /* istanbul ignore next */ {},
634
634
  transform: booleanAttribute
635
635
  });
636
636
  annonce = new AnnonceLocale(inject(DestroyRef));
637
- ouvert = signal(false, ...ngDevMode ? [{ debugName: "ouvert" }] : /* istanbul ignore next */ []);
638
- liste = viewChild(Listbox, ...ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []);
637
+ ouvert = signal(false, ...ngDevMode ? [{ debugName: "ouvert" }] : /* istanbul ignore next */ []);
638
+ liste = viewChild(Listbox, ...ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []);
639
639
  idListe = inject(StIdentifiants).prochain("st-multiselect-liste");
640
- valeursDeListe = computed(() => [...this.value()], ...ngDevMode ? [{ debugName: "valeursDeListe" }] : /* istanbul ignore next */ []);
640
+ valeursDeListe = computed(() => [...this.value()], ...ngDevMode ? [{ debugName: "valeursDeListe" }] : /* istanbul ignore next */ []);
641
641
  choisies = computed(() => {
642
642
  const valeurs = new Set(this.value());
643
643
  return this.options().filter((option) => valeurs.has(option.valeur));
644
- }, ...ngDevMode ? [{ debugName: "choisies" }] : /* istanbul ignore next */ []);
645
- blocs = computed(() => groupesDOptions(this.options()), ...ngDevMode ? [{ debugName: "blocs" }] : /* istanbul ignore next */ []);
644
+ }, ...ngDevMode ? [{ debugName: "choisies" }] : /* istanbul ignore next */ []);
645
+ blocs = computed(() => groupesDOptions(this.options()), ...ngDevMode ? [{ debugName: "blocs" }] : /* istanbul ignore next */ []);
646
646
  resume = computed(() => {
647
647
  const choisies = this.choisies();
648
648
  const libelles = this.libelles();
@@ -659,7 +659,7 @@ var StMultiselect = class StMultiselect extends ContratDeChamp {
659
659
  texte: partie.value,
660
660
  libelle: partie.type === "element"
661
661
  }));
662
- }, ...ngDevMode ? [{ debugName: "resume" }] : /* istanbul ignore next */ []);
662
+ }, ...ngDevMode ? [{ debugName: "resume" }] : /* istanbul ignore next */ []);
663
663
  constructor() {
664
664
  super();
665
665
  afterRenderEffect(() => {
@@ -709,7 +709,7 @@ var StMultiselect = class StMultiselect extends ContratDeChamp {
709
709
  }
710
710
  static ɵfac = i0.ɵɵngDeclareFactory({
711
711
  minVersion: "12.0.0",
712
- version: "22.2.0",
712
+ version: "22.2.1",
713
713
  ngImport: i0,
714
714
  type: StMultiselect,
715
715
  deps: [],
@@ -717,7 +717,7 @@ var StMultiselect = class StMultiselect extends ContratDeChamp {
717
717
  });
718
718
  static ɵcmp = i0.ɵɵngDeclareComponent({
719
719
  minVersion: "17.0.0",
720
- version: "22.2.0",
720
+ version: "22.2.1",
721
721
  type: StMultiselect,
722
722
  isStandalone: true,
723
723
  selector: "st-multiselect",
@@ -773,7 +773,7 @@ var StMultiselect = class StMultiselect extends ContratDeChamp {
773
773
  usesInheritance: true,
774
774
  ngImport: i0,
775
775
  template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n>\n <div\n #combobox=\"ngCombobox\"\n class=\"st-multiselect__declencheur\"\n stControleDeChamp\n ngCombobox\n [attr.data-vide]=\"choisies().length === 0 ? '' : null\"\n [attr.data-readonly]=\"readonly() ? '' : null\"\n [(expanded)]=\"ouvert\"\n [disabled]=\"desactive()\"\n [softDisabled]=\"false\"\n [readonly]=\"readonly()\"\n >\n <!-- Chaque libelle isole (`dir=\"auto\"`), la liste dans la forme de la langue (D-5, D-28) ;\n chaque texte dans son element : aucun blanc de mise en page ne s'y glisse. -->\n <span class=\"st-multiselect__resume\">\n @for (morceau of resume(); track $index) {\n @if (morceau.libelle) {\n <span dir=\"auto\">{{ morceau.texte }}</span>\n } @else {\n <span>{{ morceau.texte }}</span>\n }\n }\n </span>\n @if (!readonly()) {\n <st-icon class=\"st-multiselect__chevron\" nom=\"chevron-bas\" taille=\"sm\" />\n }\n </div>\n\n <!-- ⚠️ La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: combobox.element, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-multiselect__popup\">\n <div\n #liste=\"ngListbox\"\n [id]=\"idListe\"\n class=\"st-multiselect__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"true\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [value]=\"valeursDeListe()\"\n (valueChange)=\"surChoix($event)\"\n >\n @for (bloc of blocs(); track bloc.cle; let indiceDuBloc = $index) {\n @if (bloc.groupe === null) {\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-multiselect__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n >\n <span class=\"st-multiselect__case\" aria-hidden=\"true\">\n <st-icon class=\"st-multiselect__coche\" nom=\"coche\" taille=\"xs\" />\n </span>\n <span dir=\"auto\">{{ affichable(option.libelle) }}</span>\n </div>\n }\n } @else {\n <div role=\"group\" [attr.aria-labelledby]=\"idDuGroupe(indiceDuBloc)\">\n <p class=\"st-multiselect__groupe\" [id]=\"idDuGroupe(indiceDuBloc)\">\n {{ bloc.groupe }}\n </p>\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-multiselect__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n >\n <span class=\"st-multiselect__case\" aria-hidden=\"true\">\n <st-icon class=\"st-multiselect__coche\" nom=\"coche\" taille=\"xs\" />\n </span>\n <span dir=\"auto\">{{ affichable(option.libelle) }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n\n @if (puces() && choisies().length > 0) {\n <!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste (D-1). -->\n <ul class=\"st-multiselect__choix\" role=\"list\" [attr.aria-label]=\"libelles().choixRetenus\">\n @for (option of choisies(); track option.valeur; let indice = $index) {\n <li class=\"st-multiselect__puce\">\n <span dir=\"auto\">{{ affichable(option.libelle) }}</span>\n @if (!readonly()) {\n <button\n class=\"st-multiselect__retrait\"\n stIconButton\n type=\"button\"\n icone=\"croix\"\n taille=\"sm\"\n [etiquette]=\"libelles().retirerLeChoix(affichable(option.libelle))\"\n [disabled]=\"desactive()\"\n (click)=\"retirer(option.valeur, indice)\"\n ></button>\n }\n </li>\n }\n </ul>\n @if (toutRetirer() && choisies().length > 1 && !readonly()) {\n <button\n class=\"st-multiselect__tout-retirer\"\n stButton\n type=\"button\"\n variante=\"discret\"\n [disabled]=\"desactive()\"\n (click)=\"retirerTout()\"\n >\n {{ libelles().toutRetirer }}\n </button>\n }\n }\n</st-form-field>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n",
776
- 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}.st-multiselect__declencheur:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-multiselect__declencheur{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-multiselect__declencheur::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-multiselect__declencheur:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-multiselect__declencheur:focus-visible{border-color:var(--st-couleur-primaire)}.st-multiselect__declencheur[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-multiselect__declencheur[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-multiselect__declencheur:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-multiselect__declencheur:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-multiselect__declencheur:is(input,textarea):read-only:not(:disabled),.st-multiselect__declencheur[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;cursor:pointer}.st-multiselect__declencheur[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur[data-readonly]{cursor:default;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__resume{min-inline-size:0;overflow-wrap:break-word}[data-vide]>.st-multiselect__resume{color:var(--st-couleur-texte-discret)}.st-multiselect__chevron{flex:none;color:var(--st-couleur-texte-discret)}.st-multiselect__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-multiselect__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-multiselect__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-multiselect__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-multiselect__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-multiselect__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-multiselect__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-multiselect__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-multiselect__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-multiselect__option{justify-content:flex-start}.st-multiselect__option[aria-selected=true]:not([data-active=true]){background:transparent}.st-multiselect__case{display:inline-flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-cible-min);block-size:var(--st-cible-min);color:var(--st-couleur-sur-primaire);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-xs)}.st-multiselect__coche{visibility:hidden}[aria-selected=true]>.st-multiselect__case{background:var(--st-couleur-primaire);border-color:var(--st-couleur-primaire)}[aria-selected=true] .st-multiselect__coche{visibility:visible}.st-multiselect__choix{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2);padding:0;margin:var(--st-espacement-2) 0 0;list-style:none}.st-multiselect__puce{display:inline-flex;gap:var(--st-espacement-1);align-items:center;padding-inline-start:var(--st-espacement-3);background:var(--st-couleur-surface-enfoncee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-pleine)}.st-multiselect__tout-retirer{margin-block-start:var(--st-espacement-2)}\n"],
776
+ 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}.st-multiselect__declencheur:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-multiselect__declencheur{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-multiselect__declencheur::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-multiselect__declencheur:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-multiselect__declencheur:focus-visible{border-color:var(--st-couleur-primaire)}.st-multiselect__declencheur[aria-invalid=true]{border-color:var(--st-couleur-erreur);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-multiselect__declencheur[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-multiselect__declencheur:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-multiselect__declencheur:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-multiselect__declencheur:is(input,textarea):read-only:not(:disabled),.st-multiselect__declencheur[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;cursor:pointer}.st-multiselect__declencheur[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur[data-readonly]{cursor:default;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__resume{min-inline-size:0;overflow-wrap:break-word}[data-vide]>.st-multiselect__resume{color:var(--st-couleur-texte-discret)}.st-multiselect__chevron{flex:none;color:var(--st-couleur-texte-discret)}.st-multiselect__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-multiselect__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-multiselect__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-multiselect__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-multiselect__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-multiselect__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-multiselect__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-multiselect__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-multiselect__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-multiselect__option{justify-content:flex-start}.st-multiselect__option[aria-selected=true]:not([data-active=true]){background:transparent}.st-multiselect__case{display:inline-flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-cible-min);block-size:var(--st-cible-min);color:var(--st-couleur-sur-primaire);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-xs)}.st-multiselect__coche{visibility:hidden}[aria-selected=true]>.st-multiselect__case{background:var(--st-couleur-primaire);border-color:var(--st-couleur-primaire)}[aria-selected=true] .st-multiselect__coche{visibility:visible}.st-multiselect__choix{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2);padding:0;margin:var(--st-espacement-2) 0 0;list-style:none}.st-multiselect__puce{display:inline-flex;gap:var(--st-espacement-1);align-items:center;padding-inline-start:var(--st-espacement-3);background:var(--st-couleur-surface-enfoncee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-pleine)}.st-multiselect__tout-retirer{margin-block-start:var(--st-espacement-2)}\n"],
777
777
  dependencies: [
778
778
  {
779
779
  kind: "component",
@@ -952,7 +952,7 @@ var StMultiselect = class StMultiselect extends ContratDeChamp {
952
952
  };
953
953
  i0.ɵɵngDeclareClassMetadata({
954
954
  minVersion: "12.0.0",
955
- version: "22.2.0",
955
+ version: "22.2.1",
956
956
  ngImport: i0,
957
957
  type: StMultiselect,
958
958
  decorators: [{
@@ -978,7 +978,7 @@ i0.ɵɵngDeclareClassMetadata({
978
978
  "(focusout)": "aLaSortie($event)"
979
979
  },
980
980
  template: "<st-form-field\n [libelle]=\"libelle()\"\n [aide]=\"aide()\"\n [erreurs]=\"errors()\"\n [afficherErreurs]=\"touched()\"\n [obligatoire]=\"required()\"\n>\n <div\n #combobox=\"ngCombobox\"\n class=\"st-multiselect__declencheur\"\n stControleDeChamp\n ngCombobox\n [attr.data-vide]=\"choisies().length === 0 ? '' : null\"\n [attr.data-readonly]=\"readonly() ? '' : null\"\n [(expanded)]=\"ouvert\"\n [disabled]=\"desactive()\"\n [softDisabled]=\"false\"\n [readonly]=\"readonly()\"\n >\n <!-- Chaque libelle isole (`dir=\"auto\"`), la liste dans la forme de la langue (D-5, D-28) ;\n chaque texte dans son element : aucun blanc de mise en page ne s'y glisse. -->\n <span class=\"st-multiselect__resume\">\n @for (morceau of resume(); track $index) {\n @if (morceau.libelle) {\n <span dir=\"auto\">{{ morceau.texte }}</span>\n } @else {\n <span>{{ morceau.texte }}</span>\n }\n }\n </span>\n @if (!readonly()) {\n <st-icon class=\"st-multiselect__chevron\" nom=\"chevron-bas\" taille=\"sm\" />\n }\n </div>\n\n <!-- ⚠️ La primitive de popup ENVELOPPE la surcouche, et non l'inverse (exemple\n de la documentation d'Aria). Enfermee dans la surcouche, elle ne\n s'enregistre qu'a l'ouverture : liste fermee, le champ annonce\n aria-autocomplete=\"none\" et aucun aria-haspopup, et le lecteur d'ecran\n ignore qu'une liste existe. -->\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <ng-template\n [cdkConnectedOverlay]=\"{ origin: combobox.element, usePopover: 'inline', matchWidth: true }\"\n [cdkConnectedOverlayOpen]=\"ouvert()\"\n >\n <div class=\"st-multiselect__popup\">\n <div\n #liste=\"ngListbox\"\n [id]=\"idListe\"\n class=\"st-multiselect__liste\"\n ngListbox\n ngComboboxWidget\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"true\"\n [tabindex]=\"-1\"\n [attr.aria-label]=\"libelle()\"\n [activeDescendant]=\"liste.activeDescendant()\"\n [value]=\"valeursDeListe()\"\n (valueChange)=\"surChoix($event)\"\n >\n @for (bloc of blocs(); track bloc.cle; let indiceDuBloc = $index) {\n @if (bloc.groupe === null) {\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-multiselect__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n >\n <span class=\"st-multiselect__case\" aria-hidden=\"true\">\n <st-icon class=\"st-multiselect__coche\" nom=\"coche\" taille=\"xs\" />\n </span>\n <span dir=\"auto\">{{ affichable(option.libelle) }}</span>\n </div>\n }\n } @else {\n <div role=\"group\" [attr.aria-labelledby]=\"idDuGroupe(indiceDuBloc)\">\n <p class=\"st-multiselect__groupe\" [id]=\"idDuGroupe(indiceDuBloc)\">\n {{ bloc.groupe }}\n </p>\n @for (option of bloc.options; track option.valeur) {\n <div\n class=\"st-multiselect__option\"\n ngOption\n [value]=\"option.valeur\"\n [label]=\"affichable(option.libelle)\"\n [disabled]=\"option.desactivee === true\"\n >\n <span class=\"st-multiselect__case\" aria-hidden=\"true\">\n <st-icon class=\"st-multiselect__coche\" nom=\"coche\" taille=\"xs\" />\n </span>\n <span dir=\"auto\">{{ affichable(option.libelle) }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n </ng-template>\n </ng-template>\n\n @if (puces() && choisies().length > 0) {\n <!-- `role=\"list\"` : sans puces, Safari ne lit plus une liste comme une liste (D-1). -->\n <ul class=\"st-multiselect__choix\" role=\"list\" [attr.aria-label]=\"libelles().choixRetenus\">\n @for (option of choisies(); track option.valeur; let indice = $index) {\n <li class=\"st-multiselect__puce\">\n <span dir=\"auto\">{{ affichable(option.libelle) }}</span>\n @if (!readonly()) {\n <button\n class=\"st-multiselect__retrait\"\n stIconButton\n type=\"button\"\n icone=\"croix\"\n taille=\"sm\"\n [etiquette]=\"libelles().retirerLeChoix(affichable(option.libelle))\"\n [disabled]=\"desactive()\"\n (click)=\"retirer(option.valeur, indice)\"\n ></button>\n }\n </li>\n }\n </ul>\n @if (toutRetirer() && choisies().length > 1 && !readonly()) {\n <button\n class=\"st-multiselect__tout-retirer\"\n stButton\n type=\"button\"\n variante=\"discret\"\n [disabled]=\"desactive()\"\n (click)=\"retirerTout()\"\n >\n {{ libelles().toutRetirer }}\n </button>\n }\n }\n</st-form-field>\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\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}.st-multiselect__declencheur:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-multiselect__declencheur{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-multiselect__declencheur::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-multiselect__declencheur:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-multiselect__declencheur:focus-visible{border-color:var(--st-couleur-primaire)}.st-multiselect__declencheur[aria-invalid=true]{border-color:var(--st-couleur-danger);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-multiselect__declencheur[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-danger)}.st-multiselect__declencheur:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-multiselect__declencheur:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-multiselect__declencheur:is(input,textarea):read-only:not(:disabled),.st-multiselect__declencheur[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;cursor:pointer}.st-multiselect__declencheur[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur[data-readonly]{cursor:default;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__resume{min-inline-size:0;overflow-wrap:break-word}[data-vide]>.st-multiselect__resume{color:var(--st-couleur-texte-discret)}.st-multiselect__chevron{flex:none;color:var(--st-couleur-texte-discret)}.st-multiselect__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-multiselect__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-multiselect__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-multiselect__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-multiselect__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-multiselect__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-multiselect__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-multiselect__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-multiselect__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-multiselect__option{justify-content:flex-start}.st-multiselect__option[aria-selected=true]:not([data-active=true]){background:transparent}.st-multiselect__case{display:inline-flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-cible-min);block-size:var(--st-cible-min);color:var(--st-couleur-sur-primaire);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-xs)}.st-multiselect__coche{visibility:hidden}[aria-selected=true]>.st-multiselect__case{background:var(--st-couleur-primaire);border-color:var(--st-couleur-primaire)}[aria-selected=true] .st-multiselect__coche{visibility:visible}.st-multiselect__choix{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2);padding:0;margin:var(--st-espacement-2) 0 0;list-style:none}.st-multiselect__puce{display:inline-flex;gap:var(--st-espacement-1);align-items:center;padding-inline-start:var(--st-espacement-3);background:var(--st-couleur-surface-enfoncee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-pleine)}.st-multiselect__tout-retirer{margin-block-start:var(--st-espacement-2)}\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}.st-multiselect__declencheur:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus)}.st-multiselect__declencheur{box-sizing:border-box;inline-size:100%;min-block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur:is(input,select){block-size:var(--st-commande-hauteur, var(--st-hauteur-commande-defaut))}.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( (var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var(--st-interligne-sm)) / 2 - var(--st-epaisseur-fine) ) ) );padding-block:var(--_remplissage-bloc);padding-inline:var(--st-espacement-3-5);font-family:inherit;font-size:var(--st-taille-sm);font-weight:var(--st-graisse-normale);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-commande-rayon, var(--st-rayon-md))}@media(pointer:coarse){.st-multiselect__declencheur{--_remplissage-bloc: max( var(--st-espacement-demi), min( var(--st-espacement-2), calc( ( var(--st-commande-hauteur, var(--st-hauteur-commande-defaut)) - var( --st-interligne-md ) ) / 2 - var(--st-epaisseur-fine) ) ) );font-size:var(--st-taille-md);line-height:var(--st-interligne-md)}}.st-multiselect__declencheur::placeholder{color:var(--st-couleur-texte-attenue);opacity:1}@media(hover:hover){.st-multiselect__declencheur:hover:not(:disabled,:focus,[aria-invalid=true]){border-color:var(--st-couleur-texte-discret);transition:border-color var(--st-duree-rapide) var(--st-courbe-standard)}}.st-multiselect__declencheur:focus-visible{border-color:var(--st-couleur-primaire)}.st-multiselect__declencheur[aria-invalid=true]{border-color:var(--st-couleur-erreur);box-shadow:inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-multiselect__declencheur[aria-invalid=true]:focus-visible{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:var(--st-focus-decalage);box-shadow:0 0 0 var(--st-focus-lisere) var(--st-couleur-lisere-focus),inset 0 0 0 var(--st-epaisseur-fine) var(--st-couleur-erreur)}.st-multiselect__declencheur:disabled{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface);border-color:var(--st-couleur-bordure)}.st-multiselect__declencheur:disabled::placeholder{color:var(--st-couleur-texte-desactive)}.st-multiselect__declencheur:is(input,textarea):read-only:not(:disabled),.st-multiselect__declencheur[aria-readonly=true]:not(:disabled){font-weight:var(--st-graisse-moyenne);background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur{display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;cursor:pointer}.st-multiselect__declencheur[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__declencheur[data-readonly]{cursor:default;background:var(--st-couleur-surface-enfoncee)}.st-multiselect__resume{min-inline-size:0;overflow-wrap:break-word}[data-vide]>.st-multiselect__resume{color:var(--st-couleur-texte-discret)}.st-multiselect__chevron{flex:none;color:var(--st-couleur-texte-discret)}.st-multiselect__popup{box-sizing:border-box;inline-size:100%;max-block-size:var(--st-liste-hauteur-max, 18rem);padding-block:var(--st-espacement-1);overflow-y:auto;color:var(--st-couleur-texte);background:var(--st-couleur-surface-elevee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-md);box-shadow:var(--st-ombre-surelevee);transition:opacity var(--st-duree-normale) linear,translate var(--st-duree-normale) var(--st-courbe-entrant)}@starting-style{.st-multiselect__popup{opacity:0;translate:0 calc(-1 * var(--st-deplacement-court))}}.st-multiselect__groupe{font-size:var(--st-taille-xs);line-height:var(--st-interligne-xs);font-weight:var(--st-graisse-moyenne);letter-spacing:var(--st-interlettrage-large);padding:var(--st-espacement-2) var(--st-espacement-3) var(--st-espacement-1);margin:0;color:var(--st-couleur-texte-discret)}.st-multiselect__option{box-sizing:border-box;display:flex;gap:var(--st-espacement-2);align-items:center;justify-content:space-between;min-block-size:var(--st-cible-tactile-min);padding:var(--st-espacement-2) var(--st-espacement-3);margin-inline:var(--st-espacement-1);border-radius:var(--st-rayon-sm);cursor:pointer}@media(hover:hover){.st-multiselect__option:hover:not([aria-disabled=true]){background:var(--st-couleur-surface-survol-elevee)}}.st-multiselect__option[aria-disabled=true]{color:var(--st-couleur-texte-desactive);cursor:not-allowed}.st-multiselect__option[aria-selected=true]{font-weight:var(--st-graisse-semi);background:var(--st-couleur-surface-selection)}.st-multiselect__option[data-active=true]{outline:var(--st-focus-epaisseur) solid var(--st-couleur-anneau-focus);outline-offset:calc(-1 * var(--st-focus-epaisseur));background:var(--st-couleur-surface-survol-elevee)}.st-multiselect__option:active:not([aria-disabled=true]){background:var(--st-couleur-surface-active)}.st-multiselect__option{justify-content:flex-start}.st-multiselect__option[aria-selected=true]:not([data-active=true]){background:transparent}.st-multiselect__case{display:inline-flex;flex:none;align-items:center;justify-content:center;inline-size:var(--st-cible-min);block-size:var(--st-cible-min);color:var(--st-couleur-sur-primaire);background:var(--st-couleur-surface);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-xs)}.st-multiselect__coche{visibility:hidden}[aria-selected=true]>.st-multiselect__case{background:var(--st-couleur-primaire);border-color:var(--st-couleur-primaire)}[aria-selected=true] .st-multiselect__coche{visibility:visible}.st-multiselect__choix{display:flex;flex-wrap:wrap;gap:var(--st-espacement-2);padding:0;margin:var(--st-espacement-2) 0 0;list-style:none}.st-multiselect__puce{display:inline-flex;gap:var(--st-espacement-1);align-items:center;padding-inline-start:var(--st-espacement-3);background:var(--st-couleur-surface-enfoncee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure-forte);border-radius:var(--st-rayon-pleine)}.st-multiselect__tout-retirer{margin-block-start:var(--st-espacement-2)}\n"]
982
982
  }]
983
983
  }],
984
984
  ctorParameters: () => [],
@@ -1042,9 +1042,9 @@ var StAddressSearch = class StAddressSearch {
1042
1042
  minimum = MINIMUM;
1043
1043
  active = this.source !== null && this.champ !== null;
1044
1044
  attribution = this.source?.attribution ?? null;
1045
- terme = signal("", ...ngDevMode ? [{ debugName: "terme" }] : /* istanbul ignore next */ []);
1046
- choix = signal("", ...ngDevMode ? [{ debugName: "choix" }] : /* istanbul ignore next */ []);
1047
- inactive = computed(() => !(this.champ?.modifiable() ?? false), ...ngDevMode ? [{ debugName: "inactive" }] : /* istanbul ignore next */ []);
1045
+ terme = signal("", ...ngDevMode ? [{ debugName: "terme" }] : /* istanbul ignore next */ []);
1046
+ choix = signal("", ...ngDevMode ? [{ debugName: "choix" }] : /* istanbul ignore next */ []);
1047
+ inactive = computed(() => !(this.champ?.modifiable() ?? false), ...ngDevMode ? [{ debugName: "inactive" }] : /* istanbul ignore next */ []);
1048
1048
  demande = computed(() => {
1049
1049
  const texte = this.terme().trim();
1050
1050
  if (!this.active || texte.length < MINIMUM) return void 0;
@@ -1055,13 +1055,13 @@ var StAddressSearch = class StAddressSearch {
1055
1055
  langue: this.locale(),
1056
1056
  limite: LIMITE
1057
1057
  };
1058
- }, ...ngDevMode ? [{ debugName: "demande" }] : /* istanbul ignore next */ []);
1058
+ }, ...ngDevMode ? [{ debugName: "demande" }] : /* istanbul ignore next */ []);
1059
1059
  suggestions = resource({
1060
- ...ngDevMode ? { debugName: "suggestions" } : /* istanbul ignore next */ {},
1060
+ ...ngDevMode ? { debugName: "suggestions" } : /* istanbul ignore next */ {},
1061
1061
  params: () => this.demande(),
1062
1062
  loader: ({ params, abortSignal }) => this.source === null ? Promise.resolve([]) : this.source.suggerer(params, abortSignal)
1063
1063
  });
1064
- servies = computed(() => this.suggestions.hasValue() ? this.suggestions.value() : [], ...ngDevMode ? [{ debugName: "servies" }] : /* istanbul ignore next */ []);
1064
+ servies = computed(() => this.suggestions.hasValue() ? this.suggestions.value() : [], ...ngDevMode ? [{ debugName: "servies" }] : /* istanbul ignore next */ []);
1065
1065
  options = computed(() => this.servies().map((suggestion) => suggestion.precision === null || suggestion.precision === "" ? {
1066
1066
  valeur: suggestion.id,
1067
1067
  libelle: suggestion.libelle
@@ -1069,8 +1069,8 @@ var StAddressSearch = class StAddressSearch {
1069
1069
  valeur: suggestion.id,
1070
1070
  libelle: suggestion.libelle,
1071
1071
  aide: suggestion.precision
1072
- }), ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
1073
- indisponible = signal(false, ...ngDevMode ? [{ debugName: "indisponible" }] : /* istanbul ignore next */ []);
1072
+ }), ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
1073
+ indisponible = signal(false, ...ngDevMode ? [{ debugName: "indisponible" }] : /* istanbul ignore next */ []);
1074
1074
  arret = new AbortController();
1075
1075
  constructor() {
1076
1076
  inject(DestroyRef).onDestroy(() => {
@@ -1101,7 +1101,7 @@ var StAddressSearch = class StAddressSearch {
1101
1101
  }
1102
1102
  static ɵfac = i0.ɵɵngDeclareFactory({
1103
1103
  minVersion: "12.0.0",
1104
- version: "22.2.0",
1104
+ version: "22.2.1",
1105
1105
  ngImport: i0,
1106
1106
  type: StAddressSearch,
1107
1107
  deps: [],
@@ -1109,7 +1109,7 @@ var StAddressSearch = class StAddressSearch {
1109
1109
  });
1110
1110
  static ɵcmp = i0.ɵɵngDeclareComponent({
1111
1111
  minVersion: "17.0.0",
1112
- version: "22.2.0",
1112
+ version: "22.2.1",
1113
1113
  type: StAddressSearch,
1114
1114
  isStandalone: true,
1115
1115
  selector: "st-address-search",
@@ -1164,7 +1164,7 @@ var StAddressSearch = class StAddressSearch {
1164
1164
  };
1165
1165
  i0.ɵɵngDeclareClassMetadata({
1166
1166
  minVersion: "12.0.0",
1167
- version: "22.2.0",
1167
+ version: "22.2.1",
1168
1168
  ngImport: i0,
1169
1169
  type: StAddressSearch,
1170
1170
  decorators: [{
@@ -1187,14 +1187,14 @@ i0.ɵɵngDeclareClassMetadata({
1187
1187
  var StCountryCombobox = class StCountryCombobox extends ControleDeSaisie {
1188
1188
  libelles = inject(ST_LIBELLES);
1189
1189
  locale = inject(ST_LOCALE);
1190
- codes = input(null, ...ngDevMode ? [{ debugName: "codes" }] : /* istanbul ignore next */ []);
1191
- enTete = input([], ...ngDevMode ? [{ debugName: "enTete" }] : /* istanbul ignore next */ []);
1190
+ codes = input(null, ...ngDevMode ? [{ debugName: "codes" }] : /* istanbul ignore next */ []);
1191
+ enTete = input([], ...ngDevMode ? [{ debugName: "enTete" }] : /* istanbul ignore next */ []);
1192
1192
  effacable = input(false, {
1193
- ...ngDevMode ? { debugName: "effacable" } : /* istanbul ignore next */ {},
1193
+ ...ngDevMode ? { debugName: "effacable" } : /* istanbul ignore next */ {},
1194
1194
  transform: booleanAttribute
1195
1195
  });
1196
- presentation = input("libelle", ...ngDevMode ? [{ debugName: "presentation" }] : /* istanbul ignore next */ []);
1197
- liste = viewChild.required(StCombobox, ...ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []);
1196
+ presentation = input("libelle", ...ngDevMode ? [{ debugName: "presentation" }] : /* istanbul ignore next */ []);
1197
+ liste = viewChild.required(StCombobox, ...ngDevMode ? [{ debugName: "liste" }] : /* istanbul ignore next */ []);
1198
1198
  options = computed(() => optionsDesPays({
1199
1199
  locale: this.locale(),
1200
1200
  codes: this.codes(),
@@ -1204,13 +1204,13 @@ var StCountryCombobox = class StCountryCombobox extends ControleDeSaisie {
1204
1204
  frequents: this.libelles().paysFrequents,
1205
1205
  tous: this.libelles().tousLesPays
1206
1206
  }
1207
- }), ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
1207
+ }), ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
1208
1208
  focus(options) {
1209
1209
  this.liste().focus(options);
1210
1210
  }
1211
1211
  static ɵfac = i0.ɵɵngDeclareFactory({
1212
1212
  minVersion: "12.0.0",
1213
- version: "22.2.0",
1213
+ version: "22.2.1",
1214
1214
  ngImport: i0,
1215
1215
  type: StCountryCombobox,
1216
1216
  deps: null,
@@ -1218,7 +1218,7 @@ var StCountryCombobox = class StCountryCombobox extends ControleDeSaisie {
1218
1218
  });
1219
1219
  static ɵcmp = i0.ɵɵngDeclareComponent({
1220
1220
  minVersion: "17.2.0",
1221
- version: "22.2.0",
1221
+ version: "22.2.1",
1222
1222
  type: StCountryCombobox,
1223
1223
  isStandalone: true,
1224
1224
  selector: "st-country-combobox",
@@ -1284,7 +1284,7 @@ var StCountryCombobox = class StCountryCombobox extends ControleDeSaisie {
1284
1284
  };
1285
1285
  i0.ɵɵngDeclareClassMetadata({
1286
1286
  minVersion: "12.0.0",
1287
- version: "22.2.0",
1287
+ version: "22.2.1",
1288
1288
  ngImport: i0,
1289
1289
  type: StCountryCombobox,
1290
1290
  decorators: [{