@starterlib/ui 0.9.0 → 0.10.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 (38) hide show
  1. package/README.md +44 -32
  2. package/assets/icones/catalogue.json +1 -1
  3. package/fesm2022/starterlib-ui-donnees.mjs +200 -3
  4. package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
  5. package/fesm2022/starterlib-ui-etats.mjs +1158 -0
  6. package/fesm2022/starterlib-ui-etats.mjs.map +1 -0
  7. package/fesm2022/starterlib-ui-formulaires.mjs +3 -2
  8. package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
  9. package/fesm2022/starterlib-ui-indicateurs.mjs +1013 -0
  10. package/fesm2022/starterlib-ui-indicateurs.mjs.map +1 -0
  11. package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -1
  12. package/fesm2022/starterlib-ui-listes.mjs +5 -2
  13. package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
  14. package/fesm2022/starterlib-ui-messagerie.mjs +2 -2
  15. package/fesm2022/starterlib-ui-messagerie.mjs.map +1 -1
  16. package/fesm2022/starterlib-ui-mise-en-page.mjs +892 -0
  17. package/fesm2022/starterlib-ui-mise-en-page.mjs.map +1 -0
  18. package/fesm2022/starterlib-ui-onglets.mjs.map +1 -1
  19. package/fesm2022/starterlib-ui-parcours.mjs +222 -4
  20. package/fesm2022/starterlib-ui-parcours.mjs.map +1 -1
  21. package/fesm2022/starterlib-ui-saisie.mjs +131 -3
  22. package/fesm2022/starterlib-ui-saisie.mjs.map +1 -1
  23. package/fesm2022/starterlib-ui-surfaces.mjs +2 -1
  24. package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -1
  25. package/fesm2022/starterlib-ui.mjs +3510 -7105
  26. package/fesm2022/starterlib-ui.mjs.map +1 -1
  27. package/package.json +15 -3
  28. package/types/starterlib-ui-donnees.d.ts +95 -1
  29. package/types/starterlib-ui-etats.d.ts +486 -0
  30. package/types/starterlib-ui-formulaires.d.ts +1 -1
  31. package/types/starterlib-ui-indicateurs.d.ts +463 -0
  32. package/types/starterlib-ui-listes.d.ts +2 -1
  33. package/types/starterlib-ui-mise-en-page.d.ts +355 -0
  34. package/types/starterlib-ui-onglets.d.ts +6 -0
  35. package/types/starterlib-ui-parcours.d.ts +123 -3
  36. package/types/starterlib-ui-saisie.d.ts +72 -2
  37. package/types/starterlib-ui-selection.d.ts +3 -2
  38. package/types/starterlib-ui.d.ts +52 -1605
package/README.md CHANGED
@@ -14,10 +14,12 @@ des dependances de pair : c'est l'application qui les installe, et elles doivent
14
14
  etre **identiques dans l'hote et dans chaque remote**. Deux versions du socle
15
15
  dans le meme navigateur, ce sont deux jeux de jetons d'injection.
16
16
 
17
- ## Quinze points d'entree
17
+ ## Dix-huit points d'entree
18
18
 
19
19
  Deux criteres, dans cet ordre (le douzieme, `sens`, le treizieme, `parcours`, et le
20
- quatorzieme, `qr`, et le quinzieme, `messagerie`, depuis la 0.9.0 : lots 228, 243, 264 et 266).
20
+ quatorzieme, `qr`, et le quinzieme, `messagerie`, depuis la 0.9.0 : lots 228, 243, 264 et 266 ;
21
+ `etats`, `indicateurs` et `mise-en-page` depuis la 0.10.0 : greffe 268c, ce que la coquille ne peint
22
+ pas sort du tronc).
21
23
 
22
24
  1. **La dependance** (ADR 0003) : un composant sort du tronc quand il traine un
23
25
  pair lourd, et le point d'entree ou il va se choisit par ce qu'il EST pour
@@ -28,23 +30,26 @@ quatorzieme, `qr`, et le quinzieme, `messagerie`, depuis la 0.9.0 : lots 228, 24
28
30
  lui coute plein tarif au premier ecran, et ne coute RIEN au remote qui
29
31
  l'affiche, puisque le tronc y est deja charge.
30
32
 
31
- | Point d'entree | Contenu | Pairs lourds importes statiquement |
32
- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
33
- | `@starterlib/ui` | le TRONC : noyau, icone, texte, actions, etats, retour, indicateurs (dont `st-tag-group`), structure, transverses, `st-code` | aucun |
34
- | `@starterlib/ui/saisie` | les champs de formulaire, les groupes de cases et de radios, la matrice de cases, la rangee de champs, les consentements, les cartes de choix, le calendrier, le televersement, les etiquettes libres (`st-tag-input`), le champ d'adresse et la liste des pays (`st-address-fieldset`, `st-country-field`) | aucun (des TYPES d'`@angular/forms`) |
35
- | `@starterlib/ui/listes` | liste, liste de description, liste a verifier (`st-review-list`), table de donnees, pagination, tri, filtres, sections repliables (`st-disclosure`, `st-accordion`), documents stockes (`st-document-list`, `st-attachment`), chronologie (`st-timeline`), avant et apres (`st-value-change`, `st-change-list`), actions de masse (`st-selection-bar`), export (`st-export-action`) | aucun |
36
- | `@starterlib/ui/donnees` | montant, date, date relative, compte, nombre (`st-number`), duree (`st-duration`), valeur masquee, indicateur chiffre, recapitulatif de montants (`st-amount-summary`), jauge (`st-meter`), echeance (`st-deadline`), personnes (`st-person`, `st-avatar-group`), groupe d'indicateurs (`st-stat-group`), barres et repartition (`st-bar-list`, `st-repartition`) | aucun |
37
- | `@starterlib/ui/libelles-en` | le catalogue anglais | aucun |
38
- | `@starterlib/ui/surfaces` | ce qui se pose AU-DESSUS de la page : menu, dialogues, tiroirs, messages ephemeres, aide contextuelle (`st-help-button`), bouton scinde (`st-split-button`), menu de compte (`st-user-menu`), confirmation legere (`[stPopconfirm]`) | `@angular/cdk/{a11y,dialog,keycodes,overlay,portal}`, `@angular/aria/menu` |
39
- | `@starterlib/ui/navigation` | la navigation laterale, les onglets de navigation par routes (`st-nav-tabs`), le sommaire d'ancres (`st-page-nav`) | `@angular/cdk/layout` — et rien d'autre |
40
- | `@starterlib/ui/onglets` | les onglets et leurs panneaux | `@angular/aria/tabs` |
41
- | `@starterlib/ui/selection` | liste deroulante filtrante, choix multiple, recherche d'adresse (`st-address-search`), liste des pays filtrable (`st-country-combobox`) | `@angular/aria/{combobox,listbox}`, `@angular/cdk/overlay` |
42
- | `@starterlib/ui/arbre` | l'arborescence | `@angular/aria/tree` |
43
- | `@starterlib/ui/formulaires` | les champs qui LISENT leur saisie : montant, date, plage de dates, heure (`st-time-field`), plage de montants (`st-amount-range`), recurrence d'un virement (`st-recurrence-field`) | le code d'`@angular/forms` (`transformedValue`) |
44
- | `@starterlib/ui/sens` | le sens d'ecriture du CDK tenu a jour avec `dir` (`provideSensDuDocument`, pose par l'hote) | `@angular/cdk/bidi` — et rien d'autre |
45
- | `@starterlib/ui/parcours` | les patrons composites d'un parcours : refus du serveur (`st-refusal`), issue d'une operation (`st-outcome`), assistant par etapes (`st-wizard`, `st-wizard-step`), dossier a completer (`st-task-list`), ceremonie de second facteur (`st-challenge`) et codes de secours (`st-recovery-codes`) | aucun |
46
- | `@starterlib/ui/qr` | le code QR : l'encodeur pur (`encoderQr`, ISO/IEC 18004) et son dessin (`st-qr-code`), pour l'enrolement d'un authentificateur et le virement a scanner | aucun |
47
- | `@starterlib/ui/messagerie` | les echanges d'un dossier : le fil (`st-message-thread`), le message (`st-message`), le composeur (`st-message-composer`), en texte brut ; ses libelles avec lui (AD-10) | aucun |
33
+ | Point d'entree | Contenu | Pairs lourds importes statiquement |
34
+ | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
35
+ | `@starterlib/ui` | le TRONC, ce que la coquille peint : noyau, icone, titre, actions (bouton, bouton-icone, lien, segmente), etats de page (erreur, vide, attente, progression, hors ligne), retour, avatar, structure de la coquille (en-tete, pied, cartes, fil d'Ariane, titre et en-tete de page), transverses | aucun |
36
+ | `@starterlib/ui/saisie` | les champs de formulaire, les groupes de cases et de radios, la matrice de cases, la rangee de champs, les consentements, les cartes de choix, le calendrier, le televersement, les etiquettes libres (`st-tag-input`), le champ d'adresse et la liste des pays (`st-address-fieldset`, `st-country-field`), la barre d'actions d'un formulaire (`st-form-actions`) | aucun (des TYPES d'`@angular/forms`) |
37
+ | `@starterlib/ui/listes` | liste, liste de description, liste a verifier (`st-review-list`), table de donnees, pagination, tri, filtres, sections repliables (`st-disclosure`, `st-accordion`), documents stockes (`st-document-list`, `st-attachment`), chronologie (`st-timeline`), avant et apres (`st-value-change`, `st-change-list`), actions de masse (`st-selection-bar`), export (`st-export-action`) | aucun |
38
+ | `@starterlib/ui/donnees` | montant, date, date relative, compte, nombre (`st-number`), duree (`st-duration`), valeur masquee, indicateur chiffre, recapitulatif de montants (`st-amount-summary`), jauge (`st-meter`), echeance (`st-deadline`), personnes (`st-person`, `st-avatar-group`), groupe d'indicateurs (`st-stat-group`), barres et repartition (`st-bar-list`, `st-repartition`), valeur de reference a copier (`st-code`) | aucun |
39
+ | `@starterlib/ui/libelles-en` | le catalogue anglais | aucun |
40
+ | `@starterlib/ui/surfaces` | ce qui se pose AU-DESSUS de la page : menu, dialogues, tiroirs, messages ephemeres, aide contextuelle (`st-help-button`), bouton scinde (`st-split-button`), menu de compte (`st-user-menu`), confirmation legere (`[stPopconfirm]`) | `@angular/cdk/{a11y,dialog,keycodes,overlay,portal}`, `@angular/aria/menu` |
41
+ | `@starterlib/ui/navigation` | la navigation laterale, les onglets de navigation par routes (`st-nav-tabs`), le sommaire d'ancres (`st-page-nav`) | `@angular/cdk/layout` — et rien d'autre |
42
+ | `@starterlib/ui/onglets` | les onglets et leurs panneaux | `@angular/aria/tabs` |
43
+ | `@starterlib/ui/selection` | liste deroulante filtrante, choix multiple, recherche d'adresse (`st-address-search`), liste des pays filtrable (`st-country-combobox`) | `@angular/aria/{combobox,listbox}`, `@angular/cdk/overlay` |
44
+ | `@starterlib/ui/arbre` | l'arborescence | `@angular/aria/tree` |
45
+ | `@starterlib/ui/formulaires` | les champs qui LISENT leur saisie : montant, date, plage de dates, heure (`st-time-field`), plage de montants (`st-amount-range`), recurrence d'un virement (`st-recurrence-field`) | le code d'`@angular/forms` (`transformedValue`) |
46
+ | `@starterlib/ui/sens` | le sens d'ecriture du CDK tenu a jour avec `dir` (`provideSensDuDocument`, pose par l'hote) | `@angular/cdk/bidi` — et rien d'autre |
47
+ | `@starterlib/ui/parcours` | les patrons composites d'un parcours : refus du serveur (`st-refusal`), issue d'une operation (`st-outcome`), assistant par etapes et son indicateur (`st-wizard`, `st-wizard-step`, `st-stepper`), dossier a completer (`st-task-list`), ceremonie de second facteur (`st-challenge`) et codes de secours (`st-recovery-codes`) | aucun |
48
+ | `@starterlib/ui/qr` | le code QR : l'encodeur pur (`encoderQr`, ISO/IEC 18004) et son dessin (`st-qr-code`), pour l'enrolement d'un authentificateur et le virement a scanner | aucun |
49
+ | `@starterlib/ui/messagerie` | les echanges d'un dossier : le fil (`st-message-thread`), le message (`st-message`), le composeur (`st-message-composer`), en texte brut ; ses libelles avec lui (AD-10) | aucun |
50
+ | `@starterlib/ui/etats` | l'etat d'un bloc de donnees et ses gabarits (`st-state`, `GABARITS_D_ETAT`), le squelette de chargement (`st-skeleton`), l'ecran d'attente d'une application (`st-splash-screen`) | aucun |
51
+ | `@starterlib/ui/indicateurs` | pastille de statut (`st-status-pill`), badge et compteur ancre (`st-badge`, `st-badge-ancre`), etiquettes et groupes d'etiquettes (`st-tag`, `st-tag-group`, `st-groupe-d-etiquettes`) | aucun |
52
+ | `@starterlib/ui/mise-en-page` | section, separateur, texte long (`st-text`), rangee de reglage (`st-settings-row`), groupe de boutons (`st-button-group`) | aucun |
48
53
 
49
54
  ```ts
50
55
  import { StButton, StCard, StError } from '@starterlib/ui';
@@ -58,6 +63,9 @@ import { StCombobox, StMultiselect } from '@starterlib/ui/selection';
58
63
  import { StTree } from '@starterlib/ui/arbre';
59
64
  import { StAmountField, StDateField } from '@starterlib/ui/formulaires';
60
65
  import { provideSensDuDocument } from '@starterlib/ui/sens';
66
+ import { GABARITS_D_ETAT, StState } from '@starterlib/ui/etats';
67
+ import { StStatusPill, StTag } from '@starterlib/ui/indicateurs';
68
+ import { StSection, StText } from '@starterlib/ui/mise-en-page';
61
69
  ```
62
70
 
63
71
  `sens` ne porte aucun composant : il remplace le `Directionality` du CDK, qui ne lit `dir` qu'a sa
@@ -68,11 +76,14 @@ de `provideStarterUi` (recette `docs/recettes/assembler-une-spa.md` §3).
68
76
 
69
77
  Les aretes internes admises, et elles seules (`DEPENDANCES_ADMISES` de
70
78
  `tools/verifier-paquets.mjs`) : `saisie`, `listes`, `donnees`, `surfaces`,
71
- `navigation`, `onglets` (ses icones, depuis le lot 236), `arbre` et `qr`
72
- importent le tronc ; `formulaires` et `selection` importent en plus `saisie`,
73
- parce qu'une liste deroulante et un champ de montant sont d'abord des CHAMPS ;
74
- `parcours` et `messagerie` composent le tronc, `saisie`, `listes` et `donnees`,
75
- et aucun point d'entree n'importe `parcours`, `messagerie` ni `qr`.
79
+ `navigation`, `onglets` (ses icones, depuis le lot 236), `arbre`, `qr`, `etats`,
80
+ `indicateurs` et `mise-en-page` importent le tronc ; `formulaires` et `selection`
81
+ importent en plus `saisie`, parce qu'une liste deroulante et un champ de montant sont
82
+ d'abord des CHAMPS ; `parcours` et `messagerie` composent le tronc, `saisie`, `listes` et
83
+ `donnees`, et aucun point d'entree n'importe `parcours`, `messagerie` ni `qr`. Depuis la
84
+ 0.10.0, ce qui est sorti du tronc est importe la ou il se compose : `listes` importe `etats` (le
85
+ squelette) et `indicateurs` (la pastille de statut), `saisie` et `parcours` importent
86
+ `indicateurs`, `formulaires` et `surfaces` importent `mise-en-page`.
76
87
  `libelles-en` et `sens` n'importent aucun autre point d'entree : le catalogue
77
88
  anglais ne lit du tronc que le TYPE `LibellesUi`. `navigation` atteint
78
89
  `surfaces` par `import()` seulement : le dialogue du tiroir ne pese pas sur le
@@ -88,7 +99,8 @@ importer le point d'entree etroit.
88
99
  Le tronc, lui, **ne re-exporte pas** `saisie`, `listes`, `donnees` ni
89
100
  `libelles-en` : ces points d'entree importent le tronc, et un tronc qui les
90
101
  re-exporterait fermerait un cycle entre points d'entree que ng-packagr refuse.
91
- Monter en 0.8.0 demande donc de deplacer ces imports-la, et rien d'autre.
102
+ Monter en 0.8.0 demande donc de deplacer ces imports-la, et rien d'autre ; monter en 0.10.0,
103
+ de deplacer ceux des composants sortis du tronc (table de migration du CHANGELOG).
92
104
 
93
105
  ⚠️ Un paquet partage en federation **ne s'elague pas** : declare singleton, il
94
106
  est charge en entier des qu'un remote le reference. Le decoupage ne vise donc
@@ -107,24 +119,24 @@ construit (`pnpm paquets:check`), **au specificateur exact** : `navigation` a
107
119
  droit a `@angular/cdk/layout`, et un `@angular/cdk/overlay` qui s'y glisserait
108
120
  echoue avant la publication. Une regle non outillee est une opinion.
109
121
 
110
- ⚠️ **En federation, chaque point d'entree se partage SEPAREMENT.** Ce sont quinze
122
+ ⚠️ **En federation, chaque point d'entree se partage SEPAREMENT.** Ce sont dix-huit
111
123
  specificateurs de module distincts : partager `@starterlib/ui` ne couvre aucun
112
- des quatorze autres. Omis de la configuration, chaque remote en embarque sa propre
124
+ des dix-sept autres. Omis de la configuration, chaque remote en embarque sa propre
113
125
  copie — et la regle `singleton: true, strictVersion: true` qui protege le tronc
114
126
  ne protege plus rien au-dessus. Le decoupage achete l'independance de
115
- CHARGEMENT, jamais celle de VERSION : les quinze portent le numero de leur paquet.
127
+ CHARGEMENT, jamais celle de VERSION : les dix-huit portent le numero de leur paquet.
116
128
 
117
129
  ```js
118
130
  // federation.config.mjs de l'hote ET de chaque remote
119
131
  import { partageAngular, partageDuSocle } from '@starterlib/core/federation';
120
132
 
121
- shared: { ...share({ ...partageAngular('22.2', '7.8'), ...partageDuSocle('0.9') }) }
133
+ shared: { ...share({ ...partageAngular('22.2', '7.8'), ...partageDuSocle('0.10') }) }
122
134
  ```
123
135
 
124
136
  ⚠️ **Cette liste ne se recopie plus.** Depuis la 0.8.0 elle est publiee par
125
- `@starterlib/core/federation` : `partageDuSocle(train)` rend les **dix-neuf**
126
- specificateurs du socle — les quinze de `ui`, `tokens`, `util`, `core` et
127
- `core/federation` —, chacun en `singleton: true, strictVersion: true,
137
+ `@starterlib/core/federation` : `partageDuSocle(train)` rend les **vingt-six**
138
+ specificateurs du socle — les dix-huit de `ui`, `tokens`, `tokens/moteur`, `util`,
139
+ `util/valeurs`, `core`, `core/federation`, `core/adresses` et `core/fichiers` —, chacun en `singleton: true, strictVersion: true,
128
140
  includeSecondaries: false`. La raison n'est pas la commodite : une ligne oubliee
129
141
  **n'est pas une erreur de construction**, le specificateur se duplique simplement
130
142
  dans le remote, avec son etat. Passer de quatre a douze specificateurs `ui` en
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "paquet": "@starterlib/ui",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "sprite": {
5
5
  "fichier": "sprite.svg",
6
6
  "empreinte": "A5A8196C",
@@ -1,9 +1,10 @@
1
1
  import { DOCUMENT, NgTemplateOutlet } from "@angular/common";
2
2
  import * as i0 from "@angular/core";
3
3
  import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, afterNextRender, booleanAttribute, computed, effect, inject, input, isDevMode, linkedSignal, numberAttribute, output, signal, untracked } from "@angular/core";
4
- import { ecartRelatif, formaterIban, lireInstant, masquerCarte, masquerIban, masquerTelephone, partiesDuMontant, quatreDerniers, sansCommandesDeDirection } from "@starterlib/util";
4
+ import { formaterIban, masquerCarte, masquerIban, masquerTelephone, partiesDuMontant, quatreDerniers } from "@starterlib/util/valeurs";
5
5
  import { tenue } from "@starterlib/tokens";
6
- import { AnnonceLocale, FUSEAU_PAR_DEFAUT, ST_LIBELLES, ST_LOCALE, ST_MONTANTS_MASQUES, StAvatar, StIcon, StIconButton, StIdentifiants, StLink, StTimer, partagerLaValeur } from "@starterlib/ui";
6
+ import { AnnonceLocale, FUSEAU_PAR_DEFAUT, ST_LIBELLES, ST_LOCALE, ST_MONTANTS_MASQUES, StAvatar, StIcon, StIconButton, StIdentifiants, StInlineMessage, StLink, StTimer, copierDansLePressePapiers, partagerLaValeur, pressePapiersDisponible } from "@starterlib/ui";
7
+ import { ecartRelatif, lireInstant, sansCommandesDeDirection } from "@starterlib/util";
7
8
  import { RouterLink } from "@angular/router";
8
9
  const POINT$1 = "•";
9
10
  const DUREE_MIN = 5;
@@ -3556,6 +3557,202 @@ i0.ɵɵngDeclareClassMetadata({
3556
3557
  }]
3557
3558
  }
3558
3559
  });
3559
- export { StAmountSummary, StAvatarGroup, StBarList, StCount, StDate, StDeadline, StDuration, StMasked, StMeter, StMoney, StNumber, StPerson, StRelativeTime, StRepartition, StStat, StStatGroup, zonesDeJauge };
3560
+ var StCode = class StCode {
3561
+ document = inject(DOCUMENT);
3562
+ libelles = inject(ST_LIBELLES);
3563
+ valeur = input.required(...ngDevMode ? [{ debugName: "valeur" }] : /* istanbul ignore next */ []);
3564
+ copiable = input(true, {
3565
+ ...ngDevMode ? { debugName: "copiable" } : /* istanbul ignore next */ {},
3566
+ transform: booleanAttribute
3567
+ });
3568
+ etiquette = input(null, ...ngDevMode ? [{ debugName: "etiquette" }] : /* istanbul ignore next */ []);
3569
+ libelleCopier = input(null, ...ngDevMode ? [{ debugName: "libelleCopier" }] : /* istanbul ignore next */ []);
3570
+ messageDeConfirmation = input(null, ...ngDevMode ? [{ debugName: "messageDeConfirmation" }] : /* istanbul ignore next */ []);
3571
+ valeurAffichee = computed(() => sansCommandesDeDirection(this.valeur()), ...ngDevMode ? [{ debugName: "valeurAffichee" }] : /* istanbul ignore next */ []);
3572
+ etiquetteLue = computed(() => this.etiquette() ?? this.libelles().codeTechnique, ...ngDevMode ? [{ debugName: "etiquetteLue" }] : /* istanbul ignore next */ []);
3573
+ libelleCopierLu = computed(() => this.libelleCopier() ?? this.libelles().copierLaValeur(this.etiquetteLue()), ...ngDevMode ? [{ debugName: "libelleCopierLu" }] : /* istanbul ignore next */ []);
3574
+ copie = output();
3575
+ annonce = new AnnonceLocale(inject(DestroyRef));
3576
+ copieConfirmee = signal(false, ...ngDevMode ? [{ debugName: "copieConfirmee" }] : /* istanbul ignore next */ []);
3577
+ copieRefusee = signal(false, ...ngDevMode ? [{ debugName: "copieRefusee" }] : /* istanbul ignore next */ []);
3578
+ iconeDeCopie = computed(() => this.copieConfirmee() ? "presse-papiers-coche" : "copie", ...ngDevMode ? [{ debugName: "iconeDeCopie" }] : /* istanbul ignore next */ []);
3579
+ messageDeRefus = computed(() => this.libelles().copieImpossible, ...ngDevMode ? [{ debugName: "messageDeRefus" }] : /* istanbul ignore next */ []);
3580
+ minuterieDeConfirmation;
3581
+ constructor() {
3582
+ inject(DestroyRef).onDestroy(() => {
3583
+ clearTimeout(this.minuterieDeConfirmation);
3584
+ });
3585
+ }
3586
+ copiePossible = computed(() => this.copiable() && pressePapiersDisponible(this.document), ...ngDevMode ? [{ debugName: "copiePossible" }] : /* istanbul ignore next */ []);
3587
+ async auClicDeCopie() {
3588
+ const issue = await copierDansLePressePapiers(this.document, this.valeurAffichee());
3589
+ if (issue === "copie") {
3590
+ this.copie.emit(this.valeurAffichee());
3591
+ this.annonce.annoncer(this.messageDeConfirmation() ?? this.libelles().copieEffectuee);
3592
+ clearTimeout(this.minuterieDeConfirmation);
3593
+ this.copieRefusee.set(false);
3594
+ this.copieConfirmee.set(true);
3595
+ this.minuterieDeConfirmation = setTimeout(() => {
3596
+ this.copieConfirmee.set(false);
3597
+ }, tenue.confirmation);
3598
+ } else if (issue === "refusee") {
3599
+ clearTimeout(this.minuterieDeConfirmation);
3600
+ this.copieConfirmee.set(false);
3601
+ this.copieRefusee.set(true);
3602
+ this.annonce.annoncer(this.libelles().copieImpossible);
3603
+ }
3604
+ }
3605
+ static ɵfac = i0.ɵɵngDeclareFactory({
3606
+ minVersion: "12.0.0",
3607
+ version: "22.2.0",
3608
+ ngImport: i0,
3609
+ type: StCode,
3610
+ deps: [],
3611
+ target: i0.ɵɵFactoryTarget.Component
3612
+ });
3613
+ static ɵcmp = i0.ɵɵngDeclareComponent({
3614
+ minVersion: "17.0.0",
3615
+ version: "22.2.0",
3616
+ type: StCode,
3617
+ isStandalone: true,
3618
+ selector: "st-code",
3619
+ inputs: {
3620
+ valeur: {
3621
+ classPropertyName: "valeur",
3622
+ publicName: "valeur",
3623
+ isSignal: true,
3624
+ isRequired: true,
3625
+ transformFunction: null
3626
+ },
3627
+ copiable: {
3628
+ classPropertyName: "copiable",
3629
+ publicName: "copiable",
3630
+ isSignal: true,
3631
+ isRequired: false,
3632
+ transformFunction: null
3633
+ },
3634
+ etiquette: {
3635
+ classPropertyName: "etiquette",
3636
+ publicName: "etiquette",
3637
+ isSignal: true,
3638
+ isRequired: false,
3639
+ transformFunction: null
3640
+ },
3641
+ libelleCopier: {
3642
+ classPropertyName: "libelleCopier",
3643
+ publicName: "libelleCopier",
3644
+ isSignal: true,
3645
+ isRequired: false,
3646
+ transformFunction: null
3647
+ },
3648
+ messageDeConfirmation: {
3649
+ classPropertyName: "messageDeConfirmation",
3650
+ publicName: "messageDeConfirmation",
3651
+ isSignal: true,
3652
+ isRequired: false,
3653
+ transformFunction: null
3654
+ }
3655
+ },
3656
+ outputs: { copie: "copie" },
3657
+ host: { classAttribute: "st-code" },
3658
+ ngImport: i0,
3659
+ template: "<!-- L'etiquette precede la valeur a l'oral seulement ; la valeur, elle, est lue et\n selectionnable par tout le monde. -->\n<span class=\"st-vh\">{{ etiquetteLue() }}&#160;: </span>\n<code translate=\"no\">{{ valeurAffichee() }}</code>\n\n@if (copiePossible()) {\n <button\n stIconButton\n class=\"st-code__copie\"\n type=\"button\"\n [icone]=\"iconeDeCopie()\"\n taille=\"xs\"\n [etiquette]=\"libelleCopierLu()\"\n [class.st-code__copie--faite]=\"copieConfirmee()\"\n [attr.data-copie]=\"copieConfirmee() ? '' : null\"\n (click)=\"auClicDeCopie()\"\n ></button>\n}\n\n@if (copieRefusee()) {\n <st-inline-message class=\"st-code__refus\" ton=\"danger\">{{ messageDeRefus() }}</st-inline-message>\n}\n\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n",
3660
+ 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:inline-flex;flex-wrap:wrap;gap:var(--st-espacement-1);align-items:center}.st-code__copie--faite ::ng-deep .st-icon{color:var(--st-couleur-succes)}.st-code__refus{flex-basis:100%}code{padding-block:var(--st-espacement-1);padding-inline:var(--st-espacement-2);font-family:var(--st-police-mono);font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);font-variant-numeric:var(--st-chiffres-references);color:var(--st-couleur-texte);background:var(--st-couleur-surface-enfoncee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-sm);direction:ltr;unicode-bidi:isolate;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}@media print{.st-code__copie{display:none}}\n"],
3661
+ dependencies: [{
3662
+ kind: "component",
3663
+ type: StIconButton,
3664
+ selector: "button[stIconButton]",
3665
+ inputs: [
3666
+ "icone",
3667
+ "etiquette",
3668
+ "variante",
3669
+ "taille",
3670
+ "tailleDuGlyphe",
3671
+ "enfonce",
3672
+ "iconeEnfoncee",
3673
+ "chargement",
3674
+ "indisponible",
3675
+ "raisonIndisponible"
3676
+ ]
3677
+ }, {
3678
+ kind: "component",
3679
+ type: StInlineMessage,
3680
+ selector: "st-inline-message",
3681
+ inputs: [
3682
+ "ton",
3683
+ "identifiant",
3684
+ "annonce",
3685
+ "encadre",
3686
+ "icone"
3687
+ ]
3688
+ }],
3689
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
3690
+ });
3691
+ };
3692
+ i0.ɵɵngDeclareClassMetadata({
3693
+ minVersion: "12.0.0",
3694
+ version: "22.2.0",
3695
+ ngImport: i0,
3696
+ type: StCode,
3697
+ decorators: [{
3698
+ type: Component,
3699
+ args: [{
3700
+ selector: "st-code",
3701
+ changeDetection: ChangeDetectionStrategy.OnPush,
3702
+ imports: [StIconButton, StInlineMessage],
3703
+ host: { class: "st-code" },
3704
+ template: "<!-- L'etiquette precede la valeur a l'oral seulement ; la valeur, elle, est lue et\n selectionnable par tout le monde. -->\n<span class=\"st-vh\">{{ etiquetteLue() }}&#160;: </span>\n<code translate=\"no\">{{ valeurAffichee() }}</code>\n\n@if (copiePossible()) {\n <button\n stIconButton\n class=\"st-code__copie\"\n type=\"button\"\n [icone]=\"iconeDeCopie()\"\n taille=\"xs\"\n [etiquette]=\"libelleCopierLu()\"\n [class.st-code__copie--faite]=\"copieConfirmee()\"\n [attr.data-copie]=\"copieConfirmee() ? '' : null\"\n (click)=\"auClicDeCopie()\"\n ></button>\n}\n\n@if (copieRefusee()) {\n <st-inline-message class=\"st-code__refus\" ton=\"danger\">{{ messageDeRefus() }}</st-inline-message>\n}\n\n<span class=\"st-vh\" aria-live=\"polite\">{{ annonce.texte() }}</span>\n",
3705
+ 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:inline-flex;flex-wrap:wrap;gap:var(--st-espacement-1);align-items:center}.st-code__copie--faite ::ng-deep .st-icon{color:var(--st-couleur-succes)}.st-code__refus{flex-basis:100%}code{padding-block:var(--st-espacement-1);padding-inline:var(--st-espacement-2);font-family:var(--st-police-mono);font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);font-weight:var(--st-graisse-normale);letter-spacing:var(--st-interlettrage-normal);font-variant-numeric:var(--st-chiffres-references);color:var(--st-couleur-texte);background:var(--st-couleur-surface-enfoncee);border:var(--st-epaisseur-fine) solid var(--st-couleur-bordure);border-radius:var(--st-rayon-sm);direction:ltr;unicode-bidi:isolate;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}@media print{.st-code__copie{display:none}}\n"]
3706
+ }]
3707
+ }],
3708
+ ctorParameters: () => [],
3709
+ propDecorators: {
3710
+ valeur: [{
3711
+ type: i0.Input,
3712
+ args: [{
3713
+ isSignal: true,
3714
+ alias: "valeur",
3715
+ required: true
3716
+ }]
3717
+ }],
3718
+ copiable: [{
3719
+ type: i0.Input,
3720
+ args: [{
3721
+ isSignal: true,
3722
+ alias: "copiable",
3723
+ required: false
3724
+ }]
3725
+ }],
3726
+ etiquette: [{
3727
+ type: i0.Input,
3728
+ args: [{
3729
+ isSignal: true,
3730
+ alias: "etiquette",
3731
+ required: false
3732
+ }]
3733
+ }],
3734
+ libelleCopier: [{
3735
+ type: i0.Input,
3736
+ args: [{
3737
+ isSignal: true,
3738
+ alias: "libelleCopier",
3739
+ required: false
3740
+ }]
3741
+ }],
3742
+ messageDeConfirmation: [{
3743
+ type: i0.Input,
3744
+ args: [{
3745
+ isSignal: true,
3746
+ alias: "messageDeConfirmation",
3747
+ required: false
3748
+ }]
3749
+ }],
3750
+ copie: [{
3751
+ type: i0.Output,
3752
+ args: ["copie"]
3753
+ }]
3754
+ }
3755
+ });
3756
+ export { StAmountSummary, StAvatarGroup, StBarList, StCode, StCount, StDate, StDeadline, StDuration, StMasked, StMeter, StMoney, StNumber, StPerson, StRelativeTime, StRepartition, StStat, StStatGroup, zonesDeJauge };
3560
3757
 
3561
3758
  //# sourceMappingURL=starterlib-ui-donnees.mjs.map