@starterlib/ui 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/fesm2022/starterlib-ui-surfaces.mjs +244 -0
- package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -0
- package/fesm2022/starterlib-ui.mjs +575 -158
- package/fesm2022/starterlib-ui.mjs.map +1 -1
- package/package.json +8 -6
- package/types/starterlib-ui-surfaces.d.ts +108 -0
- package/types/starterlib-ui.d.ts +384 -118
package/types/starterlib-ui.d.ts
CHANGED
|
@@ -1,7 +1,81 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, Provider, TemplateRef } from '@angular/core';
|
|
3
|
-
import { Montant } from '@starterlib/util';
|
|
2
|
+
import { InjectionToken, Signal, Provider, Resource, TemplateRef } from '@angular/core';
|
|
3
|
+
import { Ton, Montant, TonSemantique, EtatDeBloc } from '@starterlib/util';
|
|
4
|
+
export { ETATS_DE_BLOC, EtatDeBloc } from '@starterlib/util';
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Les textes que les composants portent eux-memes.
|
|
8
|
+
*
|
|
9
|
+
* ⚠️ Ce ne sont pas « les textes de l'application » : le socle ne connait aucun
|
|
10
|
+
* ecran. Ce sont les quelques mots qu'un composant doit dire sans que
|
|
11
|
+
* l'appelant ait a les fournir a chaque usage — le nom d'un bouton de copie,
|
|
12
|
+
* l'annonce d'un chargement, la mention d'une ouverture dans une autre fenetre.
|
|
13
|
+
* Tout le reste est un `input` de l'appelant.
|
|
14
|
+
*
|
|
15
|
+
* Les entrees a trou sont des FONCTIONS, et non des gabarits a interpoler :
|
|
16
|
+
* l'ordre des mots change d'une langue a l'autre (« IBAN se terminant par
|
|
17
|
+
* 2606 » contre « IBAN ending in 2606 »), et une fonction laisse la langue
|
|
18
|
+
* decider, sans inventer un mini-langage de gabarit dans la librairie.
|
|
19
|
+
*/
|
|
20
|
+
interface LibellesUi {
|
|
21
|
+
/** Indicateur d'activite, et etat de chargement d'un bloc. */
|
|
22
|
+
readonly chargementEnCours: string;
|
|
23
|
+
readonly erreurSurvenue: string;
|
|
24
|
+
readonly aucunResultat: string;
|
|
25
|
+
readonly horsConnexion: string;
|
|
26
|
+
/** Erreur : action de rejeu, et etiquette de l'identifiant technique. */
|
|
27
|
+
readonly reessayer: string;
|
|
28
|
+
readonly identifiantDeTrace: string;
|
|
29
|
+
/** Etiquette du code machine affiche a cote du message. */
|
|
30
|
+
readonly codeTechnique: string;
|
|
31
|
+
/** Valeur technique copiable. */
|
|
32
|
+
readonly copier: string;
|
|
33
|
+
readonly copieEffectuee: string;
|
|
34
|
+
/** Valeur masquee. */
|
|
35
|
+
readonly afficher: string;
|
|
36
|
+
readonly masquer: string;
|
|
37
|
+
readonly valeurMasqueeANouveau: string;
|
|
38
|
+
readonly natureIban: string;
|
|
39
|
+
readonly natureCarte: string;
|
|
40
|
+
readonly natureTelephone: string;
|
|
41
|
+
readonly seTerminantPar: (nature: string, quatreDerniers: string) => string;
|
|
42
|
+
/** Lien sortant, etiquette de retrait, temps relatif. */
|
|
43
|
+
readonly nouvelleFenetre: string;
|
|
44
|
+
readonly retirer: string;
|
|
45
|
+
readonly aLInstant: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Defaut francais, identique mot pour mot aux textes ecrits en dur jusqu'a la
|
|
49
|
+
* 0.1.1 : une application qui ne fournit rien ne change pas de comportement.
|
|
50
|
+
*
|
|
51
|
+
* Il existe pour que le socle reste utilisable sans i18n, pas pour dispenser
|
|
52
|
+
* d'en avoir une. Une application bilingue DOIT fournir son propre dictionnaire
|
|
53
|
+
* sous forme de signal — sinon la moitie de l'interface reste en francais quand
|
|
54
|
+
* l'utilisateur passe a l'anglais, et rien ne le signale.
|
|
55
|
+
*/
|
|
56
|
+
declare const LIBELLES_FR: LibellesUi;
|
|
57
|
+
/** Traduction anglaise du meme dictionnaire. La paire est obligatoire. */
|
|
58
|
+
declare const LIBELLES_EN: LibellesUi;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Locale de formatage des montants, des dates et des nombres, **sous forme de
|
|
62
|
+
* signal**.
|
|
63
|
+
*
|
|
64
|
+
* ⚠️ Pourquoi pas `LOCALE_ID` : il est fige au demarrage de l'application. Or
|
|
65
|
+
* l'ADR 0014 du backend exige de changer de langue SANS recharger — la coquille
|
|
66
|
+
* detient la langue, et tout doit basculer d'un coup. Un composant qui lit
|
|
67
|
+
* `LOCALE_ID` continuerait d'afficher « 1 234,50 € » dans une interface passee
|
|
68
|
+
* a l'anglais.
|
|
69
|
+
*
|
|
70
|
+
* Le defaut lit `LOCALE_ID` : une application qui ne fournit rien garde le
|
|
71
|
+
* comportement d'avant, simplement sans pouvoir changer de langue a chaud.
|
|
72
|
+
*/
|
|
73
|
+
declare const ST_LOCALE: InjectionToken<Signal<string>>;
|
|
74
|
+
/**
|
|
75
|
+
* Textes portes par les composants eux-memes, sous forme de signal pour la
|
|
76
|
+
* meme raison que la locale.
|
|
77
|
+
*/
|
|
78
|
+
declare const ST_LIBELLES: InjectionToken<Signal<LibellesUi>>;
|
|
5
79
|
/**
|
|
6
80
|
* Chemin du sprite SVG des icones, **fourni par l'application**.
|
|
7
81
|
*
|
|
@@ -28,6 +102,29 @@ declare const CHEMIN_DU_SPRITE: InjectionToken<string>;
|
|
|
28
102
|
* pourraient viser deux sprites differents.
|
|
29
103
|
*/
|
|
30
104
|
declare function fournirCheminDuSprite(chemin: string): Provider;
|
|
105
|
+
/** Ce que l'application fournit a `@starterlib/ui`, et rien d'autre. */
|
|
106
|
+
interface ConfigurationUi {
|
|
107
|
+
/** Obligatoire : voir `CHEMIN_DU_SPRITE`. */
|
|
108
|
+
readonly cheminDuSprite: string;
|
|
109
|
+
/**
|
|
110
|
+
* Locale de formatage. Un signal quand la langue change a l'execution, ce
|
|
111
|
+
* qui est le cas des que la coquille porte un selecteur de langue.
|
|
112
|
+
*/
|
|
113
|
+
readonly locale?: Signal<string> | string;
|
|
114
|
+
/** Textes portes par les composants. Un signal, pour la meme raison. */
|
|
115
|
+
readonly libelles?: Signal<LibellesUi> | LibellesUi;
|
|
116
|
+
/** Fuseau de rendu des dates. Vient de la personne connectee, pas du poste. */
|
|
117
|
+
readonly fuseau?: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Configure `@starterlib/ui` pour toute l'application.
|
|
121
|
+
*
|
|
122
|
+
* ⚠️ A appeler dans l'HOTE uniquement. Dans un assemblage federe, un remote qui
|
|
123
|
+
* la rappellerait poserait un second jeu de valeurs dans son injecteur de
|
|
124
|
+
* route : deux locales, deux dictionnaires, et la moitie de l'ecran resterait
|
|
125
|
+
* dans l'ancienne langue apres une bascule.
|
|
126
|
+
*/
|
|
127
|
+
declare function provideStarterUi(configuration: ConfigurationUi): Provider[];
|
|
31
128
|
/**
|
|
32
129
|
* Marque la presence d'une region vivante possedee par un ancetre, en pratique
|
|
33
130
|
* le composant `st-state`.
|
|
@@ -46,15 +143,9 @@ declare const REGION_VIVANTE_PARENTE: InjectionToken<true>;
|
|
|
46
143
|
*/
|
|
47
144
|
declare const FUSEAU_PAR_DEFAUT: InjectionToken<string>;
|
|
48
145
|
|
|
49
|
-
/**
|
|
50
|
-
* Les cinq etats que tout bloc consommant l'API doit traiter. Le type les
|
|
51
|
-
* enumere pour qu'aucun ne s'oublie : un `switch` non exhaustif ne compile pas.
|
|
52
|
-
*/
|
|
53
|
-
type EtatDeBloc = 'chargement' | 'erreur' | 'vide' | 'hors-ligne' | 'succes';
|
|
54
|
-
declare const ETATS_DE_BLOC: readonly EtatDeBloc[];
|
|
55
|
-
|
|
56
146
|
type TailleDIcone = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
57
|
-
|
|
147
|
+
/** Une icone prend n'importe quel ton sauf `inverse`, qui vise un fond plein. */
|
|
148
|
+
type TonDIcone = Exclude<Ton, 'inverse'>;
|
|
58
149
|
/**
|
|
59
150
|
* Icone tiree d'un sprite SVG servi en meme origine.
|
|
60
151
|
*
|
|
@@ -69,13 +160,13 @@ type TonDIcone = 'courant' | 'discret' | 'primaire' | 'succes' | 'avertissement'
|
|
|
69
160
|
*/
|
|
70
161
|
declare class StIcon {
|
|
71
162
|
private readonly cheminDuSprite;
|
|
72
|
-
readonly nom: _angular_core.InputSignal<"
|
|
163
|
+
readonly nom: _angular_core.InputSignal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur">;
|
|
73
164
|
readonly taille: _angular_core.InputSignal<TailleDIcone>;
|
|
74
165
|
readonly ton: _angular_core.InputSignal<TonDIcone>;
|
|
75
166
|
/** `null` : l'icone est decorative et reste muette pour les lecteurs. */
|
|
76
167
|
readonly etiquette: _angular_core.InputSignal<string | null>;
|
|
77
|
-
readonly estDecorative: _angular_core.Signal<boolean>;
|
|
78
|
-
readonly reference: _angular_core.Signal<string>;
|
|
168
|
+
protected readonly estDecorative: _angular_core.Signal<boolean>;
|
|
169
|
+
protected readonly reference: _angular_core.Signal<string>;
|
|
79
170
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StIcon, never>;
|
|
80
171
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StIcon, "st-icon", never, { "nom": { "alias": "nom"; "required": true; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
81
172
|
}
|
|
@@ -103,7 +194,7 @@ type GraisseDeTexte = 'normale' | 'moyenne' | 'semi';
|
|
|
103
194
|
declare class StText {
|
|
104
195
|
readonly variante: _angular_core.InputSignal<VarianteDeTexte>;
|
|
105
196
|
readonly graisse: _angular_core.InputSignal<GraisseDeTexte>;
|
|
106
|
-
readonly enLigne: _angular_core.
|
|
197
|
+
readonly enLigne: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
107
198
|
/**
|
|
108
199
|
* Nombre de lignes au-dela duquel le texte est coupe.
|
|
109
200
|
*
|
|
@@ -134,13 +225,13 @@ declare class StHeading {
|
|
|
134
225
|
readonly taille: _angular_core.InputSignal<TailleDeTitre | null>;
|
|
135
226
|
/** Cible d'un `aria-labelledby` : une region se nomme par son titre. */
|
|
136
227
|
readonly identifiant: _angular_core.InputSignal<string | null>;
|
|
137
|
-
readonly tailleEffective: _angular_core.Signal<TailleDeTitre>;
|
|
228
|
+
protected readonly tailleEffective: _angular_core.Signal<TailleDeTitre>;
|
|
138
229
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StHeading, never>;
|
|
139
230
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StHeading, "st-heading", never, { "niveau": { "alias": "niveau"; "required": true; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "identifiant": { "alias": "identifiant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
140
231
|
}
|
|
141
232
|
|
|
142
233
|
type TailleDeSpinner = 'sm' | 'md' | 'lg';
|
|
143
|
-
type TonDeSpinner = '
|
|
234
|
+
type TonDeSpinner = Extract<Ton, 'neutre' | 'primaire' | 'inverse'>;
|
|
144
235
|
/**
|
|
145
236
|
* Indicateur d'activite indeterminee.
|
|
146
237
|
*
|
|
@@ -156,15 +247,18 @@ type TonDeSpinner = 'courant' | 'primaire' | 'inverse';
|
|
|
156
247
|
*/
|
|
157
248
|
declare class StSpinner {
|
|
158
249
|
private readonly regionParente;
|
|
250
|
+
private readonly libelles;
|
|
159
251
|
readonly taille: _angular_core.InputSignal<TailleDeSpinner>;
|
|
160
252
|
readonly ton: _angular_core.InputSignal<TonDeSpinner>;
|
|
161
|
-
|
|
162
|
-
readonly
|
|
253
|
+
/** `null` : le texte vient du dictionnaire de l'application. */
|
|
254
|
+
readonly etiquette: _angular_core.InputSignal<string | null>;
|
|
255
|
+
protected readonly etiquetteLue: _angular_core.Signal<string>;
|
|
256
|
+
protected readonly sAnnonce: _angular_core.Signal<boolean>;
|
|
163
257
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StSpinner, never>;
|
|
164
258
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StSpinner, "st-spinner", never, { "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
165
259
|
}
|
|
166
260
|
|
|
167
|
-
type TonDeProgression = 'primaire' | 'succes' | 'danger'
|
|
261
|
+
type TonDeProgression = Extract<Ton, 'primaire' | 'succes' | 'danger'>;
|
|
168
262
|
/**
|
|
169
263
|
* Barre de progression, determinee ou indeterminee.
|
|
170
264
|
*
|
|
@@ -181,10 +275,10 @@ declare class StProgress {
|
|
|
181
275
|
readonly ton: _angular_core.InputSignal<TonDeProgression>;
|
|
182
276
|
/** Texte lu a la place du pourcentage quand celui-ci n'est pas parlant. */
|
|
183
277
|
readonly texteDeValeur: _angular_core.InputSignal<string | null>;
|
|
184
|
-
readonly estIndeterminee: _angular_core.Signal<boolean>;
|
|
278
|
+
protected readonly estIndeterminee: _angular_core.Signal<boolean>;
|
|
185
279
|
/** Omis quand la progression est indeterminee : l'annoncer serait faux. */
|
|
186
|
-
readonly valeurAnnoncee: _angular_core.Signal<number | null>;
|
|
187
|
-
readonly pourcentage: _angular_core.Signal<number>;
|
|
280
|
+
protected readonly valeurAnnoncee: _angular_core.Signal<number | null>;
|
|
281
|
+
protected readonly pourcentage: _angular_core.Signal<number>;
|
|
188
282
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StProgress, never>;
|
|
189
283
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StProgress, "st-progress", never, { "valeur": { "alias": "valeur"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": true; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; "texteDeValeur": { "alias": "texteDeValeur"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
190
284
|
}
|
|
@@ -204,14 +298,20 @@ declare class StSkeleton {
|
|
|
204
298
|
readonly variante: _angular_core.InputSignal<VarianteDeSquelette>;
|
|
205
299
|
readonly lignes: _angular_core.InputSignal<number>;
|
|
206
300
|
readonly colonnes: _angular_core.InputSignal<number>;
|
|
207
|
-
readonly anime: _angular_core.
|
|
208
|
-
readonly indicesDeLigne: _angular_core.Signal<number[]>;
|
|
209
|
-
readonly indicesDeColonne: _angular_core.Signal<number[]>;
|
|
301
|
+
readonly anime: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
302
|
+
protected readonly indicesDeLigne: _angular_core.Signal<number[]>;
|
|
303
|
+
protected readonly indicesDeColonne: _angular_core.Signal<number[]>;
|
|
210
304
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StSkeleton, never>;
|
|
211
305
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StSkeleton, "st-skeleton", never, { "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "lignes": { "alias": "lignes"; "required": false; "isSignal": true; }; "colonnes": { "alias": "colonnes"; "required": false; "isSignal": true; }; "anime": { "alias": "anime"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
212
306
|
}
|
|
213
307
|
|
|
214
|
-
|
|
308
|
+
/**
|
|
309
|
+
* ⚠️ Une variante dit quel FOND le bouton prend, pas ce qu'il signifie ; c'est
|
|
310
|
+
* un axe distinct du ton, et il le reste. Mais son quatrieme membre s'appelle
|
|
311
|
+
* `danger` comme partout ailleurs : il n'y a aucune raison qu'un bouton rouge
|
|
312
|
+
* et une pastille rouge portent deux mots differents.
|
|
313
|
+
*/
|
|
314
|
+
type VarianteDeBouton = 'primaire' | 'secondaire' | 'discret' | 'danger';
|
|
215
315
|
type TailleDeBouton = 'sm' | 'md' | 'lg';
|
|
216
316
|
/**
|
|
217
317
|
* Bouton du socle, pose en ATTRIBUT sur un `<button>` natif.
|
|
@@ -235,15 +335,15 @@ type TailleDeBouton = 'sm' | 'md' | 'lg';
|
|
|
235
335
|
declare class StButton {
|
|
236
336
|
readonly variante: _angular_core.InputSignal<VarianteDeBouton>;
|
|
237
337
|
readonly taille: _angular_core.InputSignal<TailleDeBouton>;
|
|
238
|
-
readonly pleineLargeur: _angular_core.
|
|
239
|
-
readonly iconeAvant: _angular_core.InputSignal<"
|
|
240
|
-
readonly iconeApres: _angular_core.InputSignal<"
|
|
338
|
+
readonly pleineLargeur: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
339
|
+
readonly iconeAvant: _angular_core.InputSignal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur" | null>;
|
|
340
|
+
readonly iconeApres: _angular_core.InputSignal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur" | null>;
|
|
241
341
|
/**
|
|
242
342
|
* Action en cours. Tant qu'il vaut vrai, les clics sont avales : c'est le
|
|
243
343
|
* mecanisme d'anti double soumission. L'appelant doit le lever DES la
|
|
244
344
|
* soumission, pas a l'arrivee de la reponse.
|
|
245
345
|
*/
|
|
246
|
-
readonly chargement: _angular_core.
|
|
346
|
+
readonly chargement: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
247
347
|
/**
|
|
248
348
|
* Le ton suit le FOND du bouton, et non le bouton en general : sur une
|
|
249
349
|
* variante posee sur la surface (`secondaire`, qui est le defaut, et
|
|
@@ -255,7 +355,7 @@ declare class StButton {
|
|
|
255
355
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StButton, "button[stButton]", never, { "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "pleineLargeur": { "alias": "pleineLargeur"; "required": false; "isSignal": true; }; "iconeAvant": { "alias": "iconeAvant"; "required": false; "isSignal": true; }; "iconeApres": { "alias": "iconeApres"; "required": false; "isSignal": true; }; "chargement": { "alias": "chargement"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
256
356
|
}
|
|
257
357
|
|
|
258
|
-
type VarianteDeBoutonIcone = 'discret' | 'secondaire' | '
|
|
358
|
+
type VarianteDeBoutonIcone = Extract<VarianteDeBouton, 'discret' | 'secondaire' | 'danger'>;
|
|
259
359
|
/**
|
|
260
360
|
* Bouton reduit a une icone, pose en attribut sur un `<button>` natif.
|
|
261
361
|
*
|
|
@@ -264,15 +364,22 @@ type VarianteDeBoutonIcone = 'discret' | 'secondaire' | 'destructeur';
|
|
|
264
364
|
* de facon fiable.
|
|
265
365
|
*/
|
|
266
366
|
declare class StIconButton {
|
|
267
|
-
readonly icone: _angular_core.InputSignal<"
|
|
367
|
+
readonly icone: _angular_core.InputSignal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur">;
|
|
268
368
|
/** Nom accessible du controle. Sans lui, l'icone ne dit rien. */
|
|
269
369
|
readonly etiquette: _angular_core.InputSignal<string>;
|
|
270
370
|
readonly variante: _angular_core.InputSignal<VarianteDeBoutonIcone>;
|
|
271
371
|
readonly taille: _angular_core.InputSignal<"sm" | "md">;
|
|
272
|
-
/**
|
|
273
|
-
|
|
372
|
+
/**
|
|
373
|
+
* `null` : le bouton n'est pas a deux etats et n'annonce aucune pression.
|
|
374
|
+
*
|
|
375
|
+
* ⚠️ Une ENTREE, et non un `model`. Le composant ne bascule rien de lui-meme :
|
|
376
|
+
* l'etat enfonce reflete une donnee que l'appelant detient. En `model`,
|
|
377
|
+
* `[(enfonce)]` compilait et ne remontait jamais — une liaison bidirectionnelle
|
|
378
|
+
* muette est pire qu'absente, puisqu'elle se relit comme fonctionnelle.
|
|
379
|
+
*/
|
|
380
|
+
readonly enfonce: _angular_core.InputSignal<boolean | null>;
|
|
274
381
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StIconButton, never>;
|
|
275
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StIconButton, "button[stIconButton]", never, { "icone": { "alias": "icone"; "required": true; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": true; "isSignal": true; }; "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "enfonce": { "alias": "enfonce"; "required": false; "isSignal": true; }; }, {
|
|
382
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StIconButton, "button[stIconButton]", never, { "icone": { "alias": "icone"; "required": true; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": true; "isSignal": true; }; "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "enfonce": { "alias": "enfonce"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
276
383
|
}
|
|
277
384
|
|
|
278
385
|
type VarianteDeLien = 'texte' | 'autonome' | 'discret';
|
|
@@ -287,11 +394,16 @@ type VarianteDeLien = 'texte' | 'autonome' | 'discret';
|
|
|
287
394
|
* quiconque regarde l'ecran.
|
|
288
395
|
*/
|
|
289
396
|
declare class StLink {
|
|
397
|
+
private readonly libelles;
|
|
290
398
|
readonly variante: _angular_core.InputSignal<VarianteDeLien>;
|
|
291
399
|
/** Ouvre dans un nouvel onglet, et l'annonce dans le nom accessible. */
|
|
292
|
-
readonly externe: _angular_core.
|
|
293
|
-
/**
|
|
294
|
-
|
|
400
|
+
readonly externe: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
401
|
+
/**
|
|
402
|
+
* Mention lue par les lecteurs d'ecran quand le lien sort du site.
|
|
403
|
+
* `null` : le texte vient du dictionnaire de l'application.
|
|
404
|
+
*/
|
|
405
|
+
readonly mentionExterne: _angular_core.InputSignal<string | null>;
|
|
406
|
+
protected readonly mentionExterneLue: _angular_core.Signal<string>;
|
|
295
407
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StLink, never>;
|
|
296
408
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StLink, "a[stLink]", never, { "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "externe": { "alias": "externe"; "required": false; "isSignal": true; }; "mentionExterne": { "alias": "mentionExterne"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
297
409
|
}
|
|
@@ -309,7 +421,7 @@ declare class StButtonGroup {
|
|
|
309
421
|
readonly etiquette: _angular_core.InputSignal<string>;
|
|
310
422
|
readonly orientation: _angular_core.InputSignal<"horizontale" | "verticale">;
|
|
311
423
|
/** Boutons jointifs, rayons fusionnes. */
|
|
312
|
-
readonly attache: _angular_core.
|
|
424
|
+
readonly attache: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
313
425
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StButtonGroup, never>;
|
|
314
426
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StButtonGroup, "st-button-group", never, { "etiquette": { "alias": "etiquette"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "attache": { "alias": "attache"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
315
427
|
}
|
|
@@ -326,24 +438,28 @@ declare class StButtonGroup {
|
|
|
326
438
|
declare class StCode {
|
|
327
439
|
private readonly document;
|
|
328
440
|
private readonly destruction;
|
|
441
|
+
private readonly libelles;
|
|
329
442
|
readonly valeur: _angular_core.InputSignal<string>;
|
|
330
|
-
readonly
|
|
331
|
-
|
|
332
|
-
readonly
|
|
333
|
-
readonly
|
|
443
|
+
readonly copiable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
444
|
+
/** `null` : les textes viennent du dictionnaire de l'application. */
|
|
445
|
+
readonly etiquette: _angular_core.InputSignal<string | null>;
|
|
446
|
+
readonly libelleCopier: _angular_core.InputSignal<string | null>;
|
|
447
|
+
readonly messageDeConfirmation: _angular_core.InputSignal<string | null>;
|
|
448
|
+
protected readonly etiquetteLue: _angular_core.Signal<string>;
|
|
449
|
+
protected readonly libelleCopierLu: _angular_core.Signal<string>;
|
|
334
450
|
readonly copie: _angular_core.OutputEmitterRef<string>;
|
|
335
451
|
private readonly confirmation;
|
|
336
452
|
private minuterie;
|
|
337
|
-
readonly texteDeConfirmation: _angular_core.Signal<string>;
|
|
453
|
+
protected readonly texteDeConfirmation: _angular_core.Signal<string>;
|
|
338
454
|
/**
|
|
339
455
|
* Le bouton n'apparait que si le navigateur sait copier. Sans presse-papiers,
|
|
340
456
|
* un bouton qui ne fait rien vaut moins que la selection manuelle, que la
|
|
341
457
|
* feuille garde possible (`user-select: all`).
|
|
342
458
|
*/
|
|
343
|
-
readonly copiePossible: _angular_core.Signal<boolean>;
|
|
459
|
+
protected readonly copiePossible: _angular_core.Signal<boolean>;
|
|
344
460
|
protected auClicDeCopie(): Promise<void>;
|
|
345
461
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StCode, never>;
|
|
346
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StCode, "st-code", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "
|
|
462
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StCode, "st-code", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "copiable": { "alias": "copiable"; "required": false; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": false; "isSignal": true; }; "libelleCopier": { "alias": "libelleCopier"; "required": false; "isSignal": true; }; "messageDeConfirmation": { "alias": "messageDeConfirmation"; "required": false; "isSignal": true; }; }, { "copie": "copie"; }, never, never, true, never>;
|
|
347
463
|
}
|
|
348
464
|
|
|
349
465
|
type TypeMasque = 'iban' | 'carte' | 'telephone';
|
|
@@ -359,24 +475,31 @@ type TypeMasque = 'iban' | 'carte' | 'telephone';
|
|
|
359
475
|
* journal.
|
|
360
476
|
*/
|
|
361
477
|
declare class StMasked {
|
|
478
|
+
private readonly libelles;
|
|
362
479
|
private readonly destruction;
|
|
363
480
|
readonly valeur: _angular_core.InputSignal<string>;
|
|
364
481
|
readonly type: _angular_core.InputSignal<TypeMasque>;
|
|
365
482
|
readonly revele: _angular_core.ModelSignal<boolean>;
|
|
366
|
-
readonly revelationAutorisee: _angular_core.
|
|
483
|
+
readonly revelationAutorisee: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
367
484
|
readonly dureeDeRevelationEnSecondes: _angular_core.InputSignal<number>;
|
|
368
|
-
|
|
369
|
-
readonly
|
|
485
|
+
/** `null` : les textes viennent du dictionnaire de l'application. */
|
|
486
|
+
readonly libelleAfficher: _angular_core.InputSignal<string | null>;
|
|
487
|
+
readonly libelleMasquer: _angular_core.InputSignal<string | null>;
|
|
370
488
|
readonly revelation: _angular_core.OutputEmitterRef<{
|
|
371
489
|
type: TypeMasque;
|
|
372
490
|
}>;
|
|
373
491
|
private readonly annonce;
|
|
374
|
-
readonly texteDAnnonce: _angular_core.Signal<string>;
|
|
492
|
+
protected readonly texteDAnnonce: _angular_core.Signal<string>;
|
|
375
493
|
private minuterie;
|
|
376
|
-
readonly valeurMasquee: _angular_core.Signal<string>;
|
|
377
|
-
readonly valeurAffichee: _angular_core.Signal<string>;
|
|
378
|
-
|
|
379
|
-
|
|
494
|
+
protected readonly valeurMasquee: _angular_core.Signal<string>;
|
|
495
|
+
protected readonly valeurAffichee: _angular_core.Signal<string>;
|
|
496
|
+
/**
|
|
497
|
+
* La nature et la tournure viennent du dictionnaire : l'ordre des mots change
|
|
498
|
+
* d'une langue a l'autre, « IBAN se terminant par 2606 » contre « IBAN ending
|
|
499
|
+
* in 2606 ». Une chaine a trous ne suffirait pas.
|
|
500
|
+
*/
|
|
501
|
+
protected readonly nomAccessible: _angular_core.Signal<string>;
|
|
502
|
+
protected readonly libelleDuBouton: _angular_core.Signal<string>;
|
|
380
503
|
private valeurLisible;
|
|
381
504
|
protected basculer(): void;
|
|
382
505
|
private masquer;
|
|
@@ -398,11 +521,11 @@ declare class StMasked {
|
|
|
398
521
|
declare class StMoney {
|
|
399
522
|
private readonly locale;
|
|
400
523
|
readonly valeur: _angular_core.InputSignal<Montant>;
|
|
401
|
-
readonly signeExplicite: _angular_core.
|
|
402
|
-
readonly sansDevise: _angular_core.
|
|
524
|
+
readonly signeExplicite: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
525
|
+
readonly sansDevise: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
403
526
|
readonly taille: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl">;
|
|
404
|
-
readonly signe: _angular_core.Signal<"negatif" | "positif" | "nul">;
|
|
405
|
-
readonly texte: _angular_core.Signal<string>;
|
|
527
|
+
protected readonly signe: _angular_core.Signal<"negatif" | "positif" | "nul">;
|
|
528
|
+
protected readonly texte: _angular_core.Signal<string>;
|
|
406
529
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StMoney, never>;
|
|
407
530
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StMoney, "st-money", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "signeExplicite": { "alias": "signeExplicite"; "required": false; "isSignal": true; }; "sansDevise": { "alias": "sansDevise"; "required": false; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
408
531
|
}
|
|
@@ -425,12 +548,33 @@ declare class StDate {
|
|
|
425
548
|
readonly valeur: _angular_core.InputSignal<string | Date>;
|
|
426
549
|
readonly format: _angular_core.InputSignal<FormatDeDate>;
|
|
427
550
|
readonly fuseau: _angular_core.InputSignal<string | null>;
|
|
551
|
+
/**
|
|
552
|
+
* Une DATE DE CALENDRIER (`2026-09-12`) n'est pas un instant : une date de
|
|
553
|
+
* naissance, une echeance ou un jour de valeur n'ont pas d'heure, et ne
|
|
554
|
+
* doivent pas changer de jour selon le fuseau de qui les regarde.
|
|
555
|
+
*
|
|
556
|
+
* ⚠️ Le piege est dans la norme : `new Date('2026-09-12')` vaut minuit UTC,
|
|
557
|
+
* donc le 11 septembre partout a l'ouest de Greenwich. Une echeance affichee
|
|
558
|
+
* la veille est un defaut que personne ne voit depuis l'Europe.
|
|
559
|
+
*/
|
|
560
|
+
private readonly estDateDeCalendrier;
|
|
428
561
|
private readonly date;
|
|
429
|
-
readonly estValide: _angular_core.Signal<boolean>;
|
|
430
|
-
|
|
431
|
-
|
|
562
|
+
protected readonly estValide: _angular_core.Signal<boolean>;
|
|
563
|
+
/**
|
|
564
|
+
* Le fuseau de rendu. Pour une date de calendrier, c'est UTC : la valeur a
|
|
565
|
+
* ete construite a minuit UTC, la relire en UTC rend donc le jour ecrit.
|
|
566
|
+
*/
|
|
567
|
+
private readonly fuseauDeRendu;
|
|
568
|
+
/**
|
|
569
|
+
* Une date de calendrier porte `2026-09-12`, sans heure ni decalage : c'est
|
|
570
|
+
* la forme que la norme HTML attend, et la seule qui ne mente pas.
|
|
571
|
+
*/
|
|
572
|
+
protected readonly iso: _angular_core.Signal<string | null>;
|
|
573
|
+
/** Une date sans heure ne peut pas en afficher une. */
|
|
574
|
+
private readonly optionsDeFormat;
|
|
575
|
+
protected readonly texte: _angular_core.Signal<string>;
|
|
432
576
|
/** Forme longue, lue par les technologies d'assistance. */
|
|
433
|
-
readonly texteAccessible: _angular_core.Signal<string | null>;
|
|
577
|
+
protected readonly texteAccessible: _angular_core.Signal<string | null>;
|
|
434
578
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StDate, never>;
|
|
435
579
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StDate, "st-date", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "fuseau": { "alias": "fuseau"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
436
580
|
}
|
|
@@ -447,20 +591,21 @@ declare class StDate {
|
|
|
447
591
|
*/
|
|
448
592
|
declare class StRelativeTime {
|
|
449
593
|
private readonly locale;
|
|
594
|
+
private readonly libelles;
|
|
450
595
|
private readonly fuseau;
|
|
451
596
|
readonly valeur: _angular_core.InputSignal<string | Date>;
|
|
452
|
-
readonly rafraichir: _angular_core.
|
|
597
|
+
readonly rafraichir: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
453
598
|
/** Au-dela de ce nombre de jours, la date absolue est plus parlante. */
|
|
454
599
|
readonly seuilAbsoluEnJours: _angular_core.InputSignal<number>;
|
|
455
600
|
private readonly destruction;
|
|
456
601
|
private readonly maintenant;
|
|
457
602
|
constructor();
|
|
458
603
|
private dateEnMillisecondes;
|
|
459
|
-
readonly estValide: _angular_core.Signal<boolean>;
|
|
460
|
-
readonly iso: _angular_core.Signal<string | null>;
|
|
461
|
-
readonly depasseLeSeuil: _angular_core.Signal<boolean>;
|
|
462
|
-
readonly texte: _angular_core.Signal<string>;
|
|
463
|
-
readonly texteAccessible: _angular_core.Signal<string>;
|
|
604
|
+
protected readonly estValide: _angular_core.Signal<boolean>;
|
|
605
|
+
protected readonly iso: _angular_core.Signal<string | null>;
|
|
606
|
+
protected readonly depasseLeSeuil: _angular_core.Signal<boolean>;
|
|
607
|
+
protected readonly texte: _angular_core.Signal<string>;
|
|
608
|
+
protected readonly texteAccessible: _angular_core.Signal<string>;
|
|
464
609
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StRelativeTime, never>;
|
|
465
610
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StRelativeTime, "st-relative-time", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "rafraichir": { "alias": "rafraichir"; "required": false; "isSignal": true; }; "seuilAbsoluEnJours": { "alias": "seuilAbsoluEnJours"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
466
611
|
}
|
|
@@ -477,17 +622,22 @@ declare class StRelativeTime {
|
|
|
477
622
|
declare class StCount {
|
|
478
623
|
private readonly locale;
|
|
479
624
|
readonly valeur: _angular_core.InputSignal<number>;
|
|
480
|
-
readonly ton: _angular_core.InputSignal<"
|
|
625
|
+
readonly ton: _angular_core.InputSignal<"neutre" | "discret">;
|
|
481
626
|
/** `null` : jamais d'abreviation. */
|
|
482
627
|
readonly abregerAuDela: _angular_core.InputSignal<number | null>;
|
|
483
|
-
readonly estAbrege: _angular_core.Signal<boolean>;
|
|
484
|
-
readonly texteComplet: _angular_core.Signal<string>;
|
|
485
|
-
readonly texte: _angular_core.Signal<string>;
|
|
628
|
+
protected readonly estAbrege: _angular_core.Signal<boolean>;
|
|
629
|
+
protected readonly texteComplet: _angular_core.Signal<string>;
|
|
630
|
+
protected readonly texte: _angular_core.Signal<string>;
|
|
486
631
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StCount, never>;
|
|
487
632
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StCount, "st-count", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; "abregerAuDela": { "alias": "abregerAuDela"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
488
633
|
}
|
|
489
634
|
|
|
490
|
-
|
|
635
|
+
/**
|
|
636
|
+
* ⚠️ `primaire` et non « info » : les deux designaient deja la meme couleur
|
|
637
|
+
* d'accent, et rien ne distinguait un statut « info » d'un statut « primaire »
|
|
638
|
+
* ailleurs dans le socle.
|
|
639
|
+
*/
|
|
640
|
+
type TonDeStatut = TonSemantique;
|
|
491
641
|
/**
|
|
492
642
|
* Pastille de statut.
|
|
493
643
|
*
|
|
@@ -505,13 +655,13 @@ declare class StStatusPill {
|
|
|
505
655
|
readonly statut: _angular_core.InputSignal<string>;
|
|
506
656
|
/** Texte deja traduit par l'appelant : le socle ne traduit rien. */
|
|
507
657
|
readonly libelle: _angular_core.InputSignal<string>;
|
|
508
|
-
readonly icone: _angular_core.InputSignal<"
|
|
509
|
-
readonly ton: _angular_core.InputSignal<
|
|
658
|
+
readonly icone: _angular_core.InputSignal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur">;
|
|
659
|
+
readonly ton: _angular_core.InputSignal<TonSemantique>;
|
|
510
660
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StStatusPill, never>;
|
|
511
661
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StStatusPill, "st-status-pill", never, { "statut": { "alias": "statut"; "required": true; "isSignal": true; }; "libelle": { "alias": "libelle"; "required": true; "isSignal": true; }; "icone": { "alias": "icone"; "required": true; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
512
662
|
}
|
|
513
663
|
|
|
514
|
-
type TonDeBadge =
|
|
664
|
+
type TonDeBadge = TonSemantique;
|
|
515
665
|
/**
|
|
516
666
|
* Pastille de comptage superposee a un autre element.
|
|
517
667
|
*
|
|
@@ -524,10 +674,10 @@ type TonDeBadge = 'neutre' | 'primaire' | 'succes' | 'avertissement' | 'danger';
|
|
|
524
674
|
declare class StBadge {
|
|
525
675
|
readonly valeur: _angular_core.InputSignal<string | number | null>;
|
|
526
676
|
readonly max: _angular_core.InputSignal<number>;
|
|
527
|
-
readonly ton: _angular_core.InputSignal<
|
|
677
|
+
readonly ton: _angular_core.InputSignal<TonSemantique>;
|
|
528
678
|
/** Point seul, sans chiffre : signale une nouveaute sans la quantifier. */
|
|
529
|
-
readonly point: _angular_core.
|
|
530
|
-
readonly texte: _angular_core.Signal<string>;
|
|
679
|
+
readonly point: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
680
|
+
protected readonly texte: _angular_core.Signal<string>;
|
|
531
681
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StBadge, never>;
|
|
532
682
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StBadge, "st-badge", never, { "valeur": { "alias": "valeur"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; "point": { "alias": "point"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
533
683
|
}
|
|
@@ -542,12 +692,14 @@ declare class StBadge {
|
|
|
542
692
|
*/
|
|
543
693
|
declare class StTag {
|
|
544
694
|
private readonly element;
|
|
695
|
+
private readonly libelles;
|
|
545
696
|
readonly libelle: _angular_core.InputSignal<string>;
|
|
546
|
-
readonly supprimable: _angular_core.
|
|
547
|
-
readonly ton: _angular_core.InputSignal<"
|
|
548
|
-
|
|
697
|
+
readonly supprimable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
698
|
+
readonly ton: _angular_core.InputSignal<"neutre" | "primaire">;
|
|
699
|
+
/** `null` : le texte vient du dictionnaire de l'application. */
|
|
700
|
+
readonly prefixeDeSuppression: _angular_core.InputSignal<string | null>;
|
|
549
701
|
readonly supprime: _angular_core.OutputEmitterRef<void>;
|
|
550
|
-
readonly libelleDeSuppression: _angular_core.Signal<string>;
|
|
702
|
+
protected readonly libelleDeSuppression: _angular_core.Signal<string>;
|
|
551
703
|
protected auRetrait(): void;
|
|
552
704
|
/**
|
|
553
705
|
* Cible, dans l'ordre : le bouton de l'etiquette suivante, celui de la
|
|
@@ -575,12 +727,12 @@ declare class StAvatar {
|
|
|
575
727
|
* `true` quand le nom figure deja a cote de l'avatar, ce qui est le cas
|
|
576
728
|
* courant : l'avatar devient alors decoratif et se tait.
|
|
577
729
|
*/
|
|
578
|
-
readonly nomAdjacent: _angular_core.
|
|
730
|
+
readonly nomAdjacent: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
579
731
|
private readonly imageEchouee;
|
|
580
|
-
readonly afficheLImage: _angular_core.Signal<boolean>;
|
|
581
|
-
readonly initiales: _angular_core.Signal<string>;
|
|
732
|
+
protected readonly afficheLImage: _angular_core.Signal<boolean>;
|
|
733
|
+
protected readonly initiales: _angular_core.Signal<string>;
|
|
582
734
|
/** Vide quand le nom est deja lisible a cote : eviter la double lecture. */
|
|
583
|
-
readonly texteAlternatif: _angular_core.Signal<string>;
|
|
735
|
+
protected readonly texteAlternatif: _angular_core.Signal<string>;
|
|
584
736
|
protected auxEchecsDImage(): void;
|
|
585
737
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StAvatar, never>;
|
|
586
738
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StAvatar, "st-avatar", never, { "nom": { "alias": "nom"; "required": true; "isSignal": true; }; "sourceImage": { "alias": "sourceImage"; "required": false; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; "forme": { "alias": "forme"; "required": false; "isSignal": true; }; "nomAdjacent": { "alias": "nomAdjacent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -596,7 +748,7 @@ declare class StAvatar {
|
|
|
596
748
|
declare class StEmpty {
|
|
597
749
|
readonly titre: _angular_core.InputSignal<string>;
|
|
598
750
|
readonly description: _angular_core.InputSignal<string | null>;
|
|
599
|
-
readonly icone: _angular_core.InputSignal<"
|
|
751
|
+
readonly icone: _angular_core.InputSignal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur">;
|
|
600
752
|
readonly niveauDuTitre: _angular_core.InputSignal<NiveauDeTitre>;
|
|
601
753
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StEmpty, never>;
|
|
602
754
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StEmpty, "st-empty", never, { "titre": { "alias": "titre"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icone": { "alias": "icone"; "required": false; "isSignal": true; }; "niveauDuTitre": { "alias": "niveauDuTitre"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
@@ -617,6 +769,7 @@ type VarianteDErreur = 'hors-ligne' | 'serveur' | 'client';
|
|
|
617
769
|
*/
|
|
618
770
|
declare class StError {
|
|
619
771
|
private readonly regionParente;
|
|
772
|
+
private readonly libelles;
|
|
620
773
|
readonly variante: _angular_core.InputSignal<VarianteDErreur>;
|
|
621
774
|
/** Code machine stable, tel que rendu par le backend. */
|
|
622
775
|
readonly code: _angular_core.InputSignal<string>;
|
|
@@ -624,15 +777,19 @@ declare class StError {
|
|
|
624
777
|
readonly message: _angular_core.InputSignal<string>;
|
|
625
778
|
readonly traceId: _angular_core.InputSignal<string | null>;
|
|
626
779
|
readonly niveauDuTitre: _angular_core.InputSignal<NiveauDeTitre>;
|
|
627
|
-
readonly rejouable: _angular_core.
|
|
628
|
-
readonly
|
|
629
|
-
|
|
630
|
-
readonly
|
|
780
|
+
readonly rejouable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
781
|
+
readonly rejeuEnCours: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
782
|
+
/** `null` : les textes viennent du dictionnaire de l'application. */
|
|
783
|
+
readonly libelleRejeu: _angular_core.InputSignal<string | null>;
|
|
784
|
+
readonly etiquetteDeTrace: _angular_core.InputSignal<string | null>;
|
|
631
785
|
readonly rejeu: _angular_core.OutputEmitterRef<void>;
|
|
632
|
-
readonly
|
|
633
|
-
readonly
|
|
786
|
+
protected readonly libelleRejeuLu: _angular_core.Signal<string>;
|
|
787
|
+
protected readonly etiquetteDeTraceLue: _angular_core.Signal<string>;
|
|
788
|
+
protected readonly etiquetteDuCode: _angular_core.Signal<string>;
|
|
789
|
+
protected readonly icone: _angular_core.Signal<"boite-vide" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "triangle-alerte" | "utilisateur">;
|
|
790
|
+
protected readonly sAnnonce: _angular_core.Signal<boolean>;
|
|
634
791
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StError, never>;
|
|
635
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StError, "st-error", never, { "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "code": { "alias": "code"; "required": true; "isSignal": true; }; "titre": { "alias": "titre"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": true; "isSignal": true; }; "traceId": { "alias": "traceId"; "required": false; "isSignal": true; }; "niveauDuTitre": { "alias": "niveauDuTitre"; "required": false; "isSignal": true; }; "rejouable": { "alias": "rejouable"; "required": false; "isSignal": true; }; "
|
|
792
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StError, "st-error", never, { "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "code": { "alias": "code"; "required": true; "isSignal": true; }; "titre": { "alias": "titre"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": true; "isSignal": true; }; "traceId": { "alias": "traceId"; "required": false; "isSignal": true; }; "niveauDuTitre": { "alias": "niveauDuTitre"; "required": false; "isSignal": true; }; "rejouable": { "alias": "rejouable"; "required": false; "isSignal": true; }; "rejeuEnCours": { "alias": "rejeuEnCours"; "required": false; "isSignal": true; }; "libelleRejeu": { "alias": "libelleRejeu"; "required": false; "isSignal": true; }; "etiquetteDeTrace": { "alias": "etiquetteDeTrace"; "required": false; "isSignal": true; }; }, { "rejeu": "rejeu"; }, never, never, true, never>;
|
|
636
793
|
}
|
|
637
794
|
|
|
638
795
|
/**
|
|
@@ -650,7 +807,7 @@ declare class StError {
|
|
|
650
807
|
declare class StOfflineBanner {
|
|
651
808
|
readonly message: _angular_core.InputSignal<string>;
|
|
652
809
|
readonly libelleRejeu: _angular_core.InputSignal<string | null>;
|
|
653
|
-
readonly rejeuEnCours: _angular_core.
|
|
810
|
+
readonly rejeuEnCours: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
654
811
|
readonly rejeu: _angular_core.OutputEmitterRef<void>;
|
|
655
812
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StOfflineBanner, never>;
|
|
656
813
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StOfflineBanner, "st-offline-banner", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "libelleRejeu": { "alias": "libelleRejeu"; "required": false; "isSignal": true; }; "rejeuEnCours": { "alias": "rejeuEnCours"; "required": false; "isSignal": true; }; }, { "rejeu": "rejeu"; }, never, never, true, never>;
|
|
@@ -660,29 +817,73 @@ declare class StOfflineBanner {
|
|
|
660
817
|
* Impose les cinq etats a un bloc qui consomme l'API, et centralise leur
|
|
661
818
|
* annonce.
|
|
662
819
|
*
|
|
820
|
+
* Deux usages. Le plus courant passe la ressource, et l'etat s'en deduit :
|
|
821
|
+
*
|
|
822
|
+
* ```html
|
|
823
|
+
* <st-state [ressource]="operations">
|
|
824
|
+
* <ng-template [stSucces]="operations" let-page>…</ng-template>
|
|
825
|
+
* <ng-template stErreur let-erreur><st-error … /></ng-template>
|
|
826
|
+
* <ng-template stVide><st-empty … /></ng-template>
|
|
827
|
+
* </st-state>
|
|
828
|
+
* ```
|
|
829
|
+
*
|
|
830
|
+
* L'autre pose `[etat]` a la main, pour un bloc qui ne vient pas d'une
|
|
831
|
+
* ressource — une soumission de formulaire, par exemple.
|
|
832
|
+
*
|
|
833
|
+
* ⚠️ Un RECHARGEMENT garde le contenu affiche. Revenir a la silhouette a chaque
|
|
834
|
+
* changement de filtre fait clignoter la page entiere et perd la position de
|
|
835
|
+
* lecture ; seul le premier chargement n'a rien a montrer.
|
|
836
|
+
*
|
|
663
837
|
* ⚠️ L'hote ne porte PAS `role="status"`, contrairement a ce qu'on attendrait :
|
|
664
838
|
* un remplacement de contenu A L'INTERIEUR d'une region vivante fait relire
|
|
665
839
|
* tout le sous-arbre par le lecteur d'ecran a chaque bascule d'etat. Seule une
|
|
666
|
-
* petite zone masquee porte l'annonce, qui tient en quelques mots.
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
*/
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
readonly succes: _angular_core.InputSignal<TemplateRef<unknown>>;
|
|
677
|
-
readonly chargement: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
678
|
-
readonly erreur: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
679
|
-
readonly vide: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
680
|
-
readonly horsLigne: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
840
|
+
* petite zone masquee porte l'annonce, qui tient en quelques mots.
|
|
841
|
+
*/
|
|
842
|
+
declare class StState<T> {
|
|
843
|
+
private readonly libelles;
|
|
844
|
+
/** La ressource dont l'etat se deduit. */
|
|
845
|
+
readonly ressource: _angular_core.InputSignal<Resource<T> | null>;
|
|
846
|
+
/** Etat pose a la main. Il prime sur la ressource quand les deux existent. */
|
|
847
|
+
readonly etat: _angular_core.InputSignal<EtatDeBloc | null>;
|
|
848
|
+
/** Ce qui compte comme « vide » : par defaut, une collection sans element. */
|
|
849
|
+
readonly estVide: _angular_core.InputSignal<(valeur: T) => boolean>;
|
|
681
850
|
/** Silhouette par defaut du chargement. `null` : un indicateur tournant. */
|
|
682
851
|
readonly squelette: _angular_core.InputSignal<VarianteDeSquelette | null>;
|
|
683
852
|
readonly lignesDeSquelette: _angular_core.InputSignal<number>;
|
|
684
|
-
|
|
685
|
-
readonly
|
|
853
|
+
/** `null` : les annonces viennent du dictionnaire de l'application. */
|
|
854
|
+
readonly annonces: _angular_core.InputSignal<Readonly<Record<EtatDeBloc, string>> | null>;
|
|
855
|
+
private readonly gabaritSucces;
|
|
856
|
+
private readonly gabaritErreur;
|
|
857
|
+
private readonly gabaritVide;
|
|
858
|
+
private readonly gabaritHorsLigne;
|
|
859
|
+
private readonly gabaritChargement;
|
|
860
|
+
private readonly instantane;
|
|
861
|
+
/**
|
|
862
|
+
* La derniere valeur connue, gardee pendant qu'une autre se charge.
|
|
863
|
+
*
|
|
864
|
+
* ⚠️ Necessaire, et pas seulement confortable : un changement de PARAMETRE
|
|
865
|
+
* n'est pas un `reload`. Angular traite le premier comme une nouvelle
|
|
866
|
+
* requete — statut « loading », valeur videe. Sans cette memoire, changer un
|
|
867
|
+
* filtre ou tourner une page ferait donc disparaitre le tableau, clignoter la
|
|
868
|
+
* page, et perdre la position de lecture. Une erreur, elle, ne garde rien :
|
|
869
|
+
* afficher des donnees perimees sous un message d'erreur serait mentir.
|
|
870
|
+
*/
|
|
871
|
+
private readonly valeurRetenue;
|
|
872
|
+
/** Etat deduit de la ressource, valeur retenue comprise. */
|
|
873
|
+
private readonly etatDeLaRessource;
|
|
874
|
+
readonly etatEffectif: _angular_core.Signal<EtatDeBloc>;
|
|
875
|
+
/**
|
|
876
|
+
* Une valeur est affichee, et une autre arrive — par rappel explicite ou par
|
|
877
|
+
* changement de parametre.
|
|
878
|
+
*/
|
|
879
|
+
protected readonly enRechargement: _angular_core.Signal<boolean>;
|
|
880
|
+
protected readonly enAttente: _angular_core.Signal<boolean>;
|
|
881
|
+
private readonly annoncesLues;
|
|
882
|
+
protected readonly annonce: _angular_core.Signal<string>;
|
|
883
|
+
/** Contexte passe au gabarit : la valeur en succes, l'erreur en erreur. */
|
|
884
|
+
readonly contexte: _angular_core.Signal<{
|
|
885
|
+
$implicit: unknown;
|
|
886
|
+
}>;
|
|
686
887
|
/**
|
|
687
888
|
* Les etats degrades n'ont pas de rendu par defaut : afficher un texte
|
|
688
889
|
* generique a la place d'un vrai ecran vide ou d'une vraie erreur donnerait
|
|
@@ -690,11 +891,76 @@ declare class StState {
|
|
|
690
891
|
* voie, en developpement.
|
|
691
892
|
*/
|
|
692
893
|
readonly gabaritDeLEtat: _angular_core.Signal<TemplateRef<unknown> | null>;
|
|
693
|
-
readonly
|
|
894
|
+
private readonly chargementVisible;
|
|
895
|
+
/** La silhouette par defaut, une fois le delai anti-clignotement passe. */
|
|
896
|
+
protected readonly montreLaSilhouetteParDefaut: _angular_core.Signal<boolean>;
|
|
897
|
+
constructor();
|
|
694
898
|
private signalerSiAbsent;
|
|
695
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StState
|
|
696
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StState
|
|
899
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StState<any>, never>;
|
|
900
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StState<any>, "st-state", never, { "ressource": { "alias": "ressource"; "required": false; "isSignal": true; }; "etat": { "alias": "etat"; "required": false; "isSignal": true; }; "estVide": { "alias": "estVide"; "required": false; "isSignal": true; }; "squelette": { "alias": "squelette"; "required": false; "isSignal": true; }; "lignesDeSquelette": { "alias": "lignesDeSquelette"; "required": false; "isSignal": true; }; "annonces": { "alias": "annonces"; "required": false; "isSignal": true; }; }, {}, ["gabaritSucces", "gabaritErreur", "gabaritVide", "gabaritHorsLigne", "gabaritChargement"], never, true, never>;
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
/**
|
|
904
|
+
* Les gabarits des cinq etats, declares DANS `<st-state>`.
|
|
905
|
+
*
|
|
906
|
+
* ⚠️ Pourquoi des directives de contenu plutot que des entrees `TemplateRef` :
|
|
907
|
+
* un `<ng-template>` declare a l'exterieur du composant appartient a
|
|
908
|
+
* l'injecteur de l'endroit ou il est ECRIT, pas de celui qui le rend. Les
|
|
909
|
+
* fournisseurs de `st-state` — dont `REGION_VIVANTE_PARENTE`, qui fait taire
|
|
910
|
+
* les annonces en double — ne l'atteignaient donc pas, et l'erreur etait
|
|
911
|
+
* annoncee deux fois. Passer par le contenu rend la declaration a l'exterieur
|
|
912
|
+
* impossible : le defaut ne peut plus revenir.
|
|
913
|
+
*/
|
|
914
|
+
declare class StSucces<T> {
|
|
915
|
+
readonly gabarit: TemplateRef<{
|
|
916
|
+
$implicit: Exclude<T, undefined>;
|
|
917
|
+
}>;
|
|
918
|
+
/**
|
|
919
|
+
* La ressource n'est lue nulle part : elle porte le TYPE de la valeur, pour
|
|
920
|
+
* que `let-valeur` soit type dans le gabarit au lieu d'etre `unknown`.
|
|
921
|
+
*/
|
|
922
|
+
readonly stSucces: _angular_core.InputSignal<Resource<T> | undefined>;
|
|
923
|
+
/**
|
|
924
|
+
* `Exclude<T, undefined>` : une ressource sans valeur initiale se type
|
|
925
|
+
* `T | undefined`, mais st-state ne rend ce gabarit QUE lorsqu'une valeur
|
|
926
|
+
* existe. Sans cela, chaque gabarit de succes devrait ecrire `page?.length`
|
|
927
|
+
* pour un cas qui ne se produit pas.
|
|
928
|
+
*/
|
|
929
|
+
static ngTemplateContextGuard<T>(_directive: StSucces<T>, _contexte: unknown): _contexte is {
|
|
930
|
+
$implicit: Exclude<T, undefined>;
|
|
931
|
+
};
|
|
932
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StSucces<any>, never>;
|
|
933
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StSucces<any>, "ng-template[stSucces]", never, { "stSucces": { "alias": "stSucces"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
934
|
+
}
|
|
935
|
+
/** Erreur. Le contexte porte l'erreur elle-meme, pour l'afficher ou la traduire. */
|
|
936
|
+
declare class StErreur {
|
|
937
|
+
readonly gabarit: TemplateRef<{
|
|
938
|
+
$implicit: unknown;
|
|
939
|
+
}>;
|
|
940
|
+
static ngTemplateContextGuard(_directive: StErreur, _contexte: unknown): _contexte is {
|
|
941
|
+
$implicit: unknown;
|
|
942
|
+
};
|
|
943
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StErreur, never>;
|
|
944
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StErreur, "ng-template[stErreur]", never, {}, {}, never, never, true, never>;
|
|
945
|
+
}
|
|
946
|
+
declare class StVide {
|
|
947
|
+
readonly gabarit: TemplateRef<void>;
|
|
948
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StVide, never>;
|
|
949
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StVide, "ng-template[stVide]", never, {}, {}, never, never, true, never>;
|
|
950
|
+
}
|
|
951
|
+
declare class StHorsLigne {
|
|
952
|
+
readonly gabarit: TemplateRef<void>;
|
|
953
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StHorsLigne, never>;
|
|
954
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StHorsLigne, "ng-template[stHorsLigne]", never, {}, {}, never, never, true, never>;
|
|
955
|
+
}
|
|
956
|
+
/** Chargement sur mesure. Sans lui, `st-state` rend sa silhouette par defaut. */
|
|
957
|
+
declare class StChargement {
|
|
958
|
+
readonly gabarit: TemplateRef<void>;
|
|
959
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StChargement, never>;
|
|
960
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StChargement, "ng-template[stChargement]", never, {}, {}, never, never, true, never>;
|
|
697
961
|
}
|
|
962
|
+
/** Toutes les directives de gabarit, a importer d'un coup. */
|
|
963
|
+
declare const GABARITS_D_ETAT: readonly [typeof StSucces, typeof StErreur, typeof StVide, typeof StHorsLigne, typeof StChargement];
|
|
698
964
|
|
|
699
|
-
export { CHEMIN_DU_SPRITE,
|
|
700
|
-
export type {
|
|
965
|
+
export { CHEMIN_DU_SPRITE, FUSEAU_PAR_DEFAUT, GABARITS_D_ETAT, LIBELLES_EN, LIBELLES_FR, NOMS_DICONE, REGION_VIVANTE_PARENTE, ST_LIBELLES, ST_LOCALE, StAvatar, StBadge, StButton, StButtonGroup, StChargement, StCode, StCount, StDate, StEmpty, StErreur, StError, StHeading, StHorsLigne, StIcon, StIconButton, StLink, StMasked, StMoney, StOfflineBanner, StProgress, StRelativeTime, StSkeleton, StSpinner, StState, StStatusPill, StSucces, StTag, StText, StVide, fournirCheminDuSprite, provideStarterUi };
|
|
966
|
+
export type { ConfigurationUi, FormatDeDate, GraisseDeTexte, LibellesUi, NiveauDeTitre, NomDIcone, TailleDIcone, TailleDeBouton, TailleDeSpinner, TailleDeTitre, TonDIcone, TonDeBadge, TonDeProgression, TonDeSpinner, TonDeStatut, TypeMasque, VarianteDErreur, VarianteDeBouton, VarianteDeBoutonIcone, VarianteDeLien, VarianteDeSquelette, VarianteDeTexte };
|