@starterlib/ui 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENCES-TIERCES.md +236 -0
  2. package/README.md +101 -47
  3. package/assets/icones/catalogue.json +3296 -0
  4. package/assets/icones/sprite.svg +235 -35
  5. package/fesm2022/starterlib-ui-arbre.mjs +473 -80
  6. package/fesm2022/starterlib-ui-arbre.mjs.map +1 -1
  7. package/fesm2022/starterlib-ui-donnees.mjs +3551 -522
  8. package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
  9. package/fesm2022/starterlib-ui-formulaires.mjs +3186 -443
  10. package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
  11. package/fesm2022/starterlib-ui-libelles-en.mjs +380 -139
  12. package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -1
  13. package/fesm2022/starterlib-ui-listes.mjs +5354 -658
  14. package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
  15. package/fesm2022/starterlib-ui-messagerie.mjs +737 -0
  16. package/fesm2022/starterlib-ui-messagerie.mjs.map +1 -0
  17. package/fesm2022/starterlib-ui-navigation.mjs +506 -243
  18. package/fesm2022/starterlib-ui-navigation.mjs.map +1 -1
  19. package/fesm2022/starterlib-ui-onglets.mjs +369 -135
  20. package/fesm2022/starterlib-ui-onglets.mjs.map +1 -1
  21. package/fesm2022/starterlib-ui-parcours.mjs +2449 -0
  22. package/fesm2022/starterlib-ui-parcours.mjs.map +1 -0
  23. package/fesm2022/starterlib-ui-qr.mjs +907 -0
  24. package/fesm2022/starterlib-ui-qr.mjs.map +1 -0
  25. package/fesm2022/starterlib-ui-saisie.mjs +8566 -1589
  26. package/fesm2022/starterlib-ui-saisie.mjs.map +1 -1
  27. package/fesm2022/starterlib-ui-selection.mjs +1340 -268
  28. package/fesm2022/starterlib-ui-selection.mjs.map +1 -1
  29. package/fesm2022/starterlib-ui-sens.mjs +59 -0
  30. package/fesm2022/starterlib-ui-sens.mjs.map +1 -0
  31. package/fesm2022/starterlib-ui-surfaces.mjs +5140 -1387
  32. package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -1
  33. package/fesm2022/starterlib-ui.mjs +10721 -2871
  34. package/fesm2022/starterlib-ui.mjs.map +1 -1
  35. package/package.json +27 -18
  36. package/styles/amorce.css +69 -0
  37. package/styles/couches.css +178 -0
  38. package/types/starterlib-ui-arbre.d.ts +199 -25
  39. package/types/starterlib-ui-donnees.d.ts +1441 -180
  40. package/types/starterlib-ui-formulaires.d.ts +1174 -139
  41. package/types/starterlib-ui-libelles-en.d.ts +3 -23
  42. package/types/starterlib-ui-listes.d.ts +2310 -255
  43. package/types/starterlib-ui-messagerie.d.ts +317 -0
  44. package/types/starterlib-ui-navigation.d.ts +201 -63
  45. package/types/starterlib-ui-onglets.d.ts +172 -43
  46. package/types/starterlib-ui-parcours.d.ts +916 -0
  47. package/types/starterlib-ui-qr.d.ts +105 -0
  48. package/types/starterlib-ui-saisie.d.ts +3431 -549
  49. package/types/starterlib-ui-selection.d.ts +441 -65
  50. package/types/starterlib-ui-sens.d.ts +44 -0
  51. package/types/starterlib-ui-surfaces.d.ts +1899 -510
  52. package/types/starterlib-ui.d.ts +4749 -1115
  53. package/fesm2022/starterlib-ui-interactions.mjs +0 -43
  54. package/fesm2022/starterlib-ui-interactions.mjs.map +0 -1
  55. package/types/starterlib-ui-interactions.d.ts +0 -4
@@ -1,29 +1,50 @@
1
- import * as _angular_core from '@angular/core';
2
- import * as i1 from '@angular/aria/tabs';
3
-
1
+ import { Icone } from "@starterlib/ui";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/aria/tabs";
4
4
  /** Un onglet, decrit par l'appelant. */
5
- interface Onglet {
6
- /** Identifiant stable, qui relie l'onglet a son `st-tab-panel`. */
7
- readonly valeur: string;
8
- readonly libelle: string;
9
- readonly desactive?: boolean;
5
+ export interface Onglet {
6
+ /**
7
+ * Identifiant stable, qui relie l'onglet a son `st-tab-panel`. Sans espace : il entre dans l'id
8
+ * de l'onglet (`<identifiant>-onglet-<valeur>`).
9
+ */
10
+ readonly valeur: string;
11
+ readonly libelle: string;
12
+ readonly desactive?: boolean;
13
+ /** Icone de 18 px devant le libelle, decorative : le libelle dit deja la vue. */
14
+ readonly icone?: Icone;
15
+ /**
16
+ * Nombre d'elements de la vue, en pastille apres le libelle. Formate par `Intl` dans la langue
17
+ * de la page, et repete dans le nom de l'onglet (« Operations, 42 ») : la pastille est muette.
18
+ */
19
+ readonly compte?: number;
20
+ /**
21
+ * Complement de fin de ligne (code devise d'un compte). Lu apres le libelle, comme le compte
22
+ * (« Portefeuille titres, CHF ») ; le complement visible est muet.
23
+ */
24
+ readonly complement?: string;
10
25
  }
11
- type ActivationDOnglet = 'manuelle' | 'automatique';
12
- type OrientationDOnglets = 'horizontale' | 'verticale';
26
+ export type ActivationDOnglet = 'manuelle' | 'automatique';
27
+ export type OrientationDOnglets = 'horizontale' | 'verticale';
13
28
  /**
14
29
  * Onglets, sur les primitives `@angular/aria/tabs`.
15
30
  *
16
31
  * ```html
17
- * <st-tabs etiquette="Compte" [onglets]="onglets" [(selection)]="onglet">
32
+ * <st-tabs etiquette="Compte" identifiant="compte" [onglets]="onglets" [(selection)]="onglet">
18
33
  * <st-tab-panel valeur="operations">
19
34
  * <ng-template stTabContent><app-operations /></ng-template>
20
35
  * </st-tab-panel>
21
- * <st-tab-panel valeur="virements">
22
- * <ng-template stTabContent><app-virements /></ng-template>
36
+ * <st-tab-panel valeur="virements" contenuConserve>
37
+ * <ng-template stTabContent><app-saisie-du-virement /></ng-template>
23
38
  * </st-tab-panel>
24
39
  * </st-tabs>
25
40
  * ```
26
41
  *
42
+ * ⚠️ **Un `st-tab-panel` par onglet, son contenu dans `stTabContent`** : depuis Angular 22.2,
43
+ * `@angular/aria` signale en developpement un onglet sans panneau et un panneau sans contenu
44
+ * differe (deux avertissements par element). Le contenu direct d'un panneau reste rendu, et
45
+ * masque au repos, mais il est signale ; des vues d'un meme contenu, sans panneau, se disent par
46
+ * `st-segmented-control`.
47
+ *
27
48
  * ⚠️ **La liste d'onglets est rendue par le composant, a partir de donnees**, et
28
49
  * non projetee. Les primitives d'Aria relient un onglet a sa liste par
29
50
  * INJECTION, et un contenu projete garde l'injecteur de l'endroit ou il est
@@ -32,7 +53,9 @@ type OrientationDOnglets = 'horizontale' | 'verticale';
32
53
  * primitive — et ses valeurs peuvent etre dites en francais.
33
54
  *
34
55
  * Les PANNEAUX, eux, sont projetes : ecrits directement sous `st-tabs`, leur
35
- * injecteur parent est celui de l'hote, qui porte la primitive `Tabs`.
56
+ * injecteur parent est celui de l'hote, qui porte la primitive `Tabs`. Un panneau
57
+ * ecrit ailleurs (un composant intermediaire) ne trouve pas `Tabs` : la creation
58
+ * echoue, avec l'erreur d'injection d'Angular.
36
59
  *
37
60
  * ⚠️ **Activation manuelle par defaut.** En activation automatique, chaque
38
61
  * fleche SELECTIONNE l'onglet atteint ; son contenu differe se rend, et charge
@@ -40,50 +63,156 @@ type OrientationDOnglets = 'horizontale' | 'verticale';
40
63
  * lire un. En manuelle, les fleches deplacent le focus et Entree ou Espace
41
64
  * selectionne. `automatique` reste le bon choix quand les panneaux sont deja la
42
65
  * et s'affichent sans delai.
66
+ *
67
+ * **Une ligne, qui defile** (EA-22) : un libelle ne passe jamais a la ligne et
68
+ * n'est jamais tronque ; la liste defile, une ombre dit de quel cote il reste des
69
+ * onglets, et l'onglet choisi est amene en vue. Le chargement d'un panneau est
70
+ * dit par un `st-state` DANS son gabarit (`aria-busy` compris), jamais par
71
+ * l'onglet.
43
72
  */
44
- declare class StTabs {
45
- readonly onglets: _angular_core.InputSignal<readonly Onglet[]>;
46
- /** Nom accessible de la liste : sans lui, plusieurs listes d'onglets se confondent. */
47
- readonly etiquette: _angular_core.InputSignal<string>;
48
- readonly activation: _angular_core.InputSignal<ActivationDOnglet>;
49
- readonly orientation: _angular_core.InputSignal<OrientationDOnglets>;
50
- /** Valeur de l'onglet selectionne. `undefined` : le premier onglet disponible. */
51
- readonly selection: _angular_core.ModelSignal<string | undefined>;
52
- /**
53
- * ⚠️ Toujours un onglet selectionne. Le motif ARIA l'exige : une liste sans
54
- * selection n'affiche aucun panneau, et la page parait vide sans raison.
55
- */
56
- protected readonly selectionEffective: _angular_core.Signal<string | undefined>;
57
- protected readonly modeAria: _angular_core.Signal<"follow" | "explicit">;
58
- protected readonly orientationAria: _angular_core.Signal<"vertical" | "horizontal">;
59
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<StTabs, never>;
60
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StTabs, "st-tabs", never, { "onglets": { "alias": "onglets"; "required": true; "isSignal": true; }; "etiquette": { "alias": "etiquette"; "required": true; "isSignal": true; }; "activation": { "alias": "activation"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; }, never, ["*"], true, [{ directive: typeof i1.Tabs; inputs: {}; outputs: {}; }]>;
73
+ export declare class StTabs {
74
+ private readonly hote;
75
+ private readonly locale;
76
+ private readonly baseParDefaut;
77
+ readonly onglets: import("@angular/core").InputSignal<readonly Onglet[]>;
78
+ /** Nom accessible de la liste : sans lui, plusieurs listes d'onglets se confondent. */
79
+ readonly etiquette: import("@angular/core").InputSignal<string>;
80
+ readonly activation: import("@angular/core").InputSignal<ActivationDOnglet>;
81
+ readonly orientation: import("@angular/core").InputSignal<OrientationDOnglets>;
82
+ /**
83
+ * Base des ids des onglets, `<identifiant>-onglet-<valeur>` : l'application synchronise
84
+ * `selection` avec l'adresse, et une ancre ou un essai designe l'onglet sans deviner. Absent :
85
+ * une base unique dans le document. Les panneaux gardent l'id de la primitive, que leur onglet
86
+ * suit dans `aria-controls`.
87
+ */
88
+ readonly identifiant: import("@angular/core").InputSignal<string | undefined>;
89
+ /**
90
+ * Valeur de l'onglet selectionne, ecrite par le composant des le rendu : absente, inconnue ou
91
+ * desactivee, elle recoit le premier onglet disponible (une valeur fournie est signalee en
92
+ * developpement). Elle ne vaut `undefined` que si aucun onglet n'est selectionnable.
93
+ */
94
+ readonly selection: import("@angular/core").ModelSignal<string | undefined>;
95
+ /**
96
+ * ⚠️ Toujours un onglet selectionne. Le motif ARIA l'exige : une liste sans
97
+ * selection n'affiche aucun panneau, et la page parait vide sans raison.
98
+ */
99
+ protected readonly selectionEffective: import("@angular/core").Signal<string | undefined>;
100
+ protected readonly modeAria: import("@angular/core").Signal<"follow" | "explicit">;
101
+ protected readonly orientationAria: import("@angular/core").Signal<"vertical" | "horizontal">;
102
+ private readonly formatDesComptes;
103
+ constructor();
104
+ /** Id d'un onglet : stable avec `identifiant`, unique dans le document sans lui. */
105
+ protected idDOnglet(valeur: string): string;
106
+ protected compteDe(compte: number): string;
107
+ static ɵfac: i0.ɵɵFactoryDeclaration<StTabs, never>;
108
+ static ɵcmp: i0.ɵɵComponentDeclaration<StTabs, "st-tabs", never, {
109
+ "onglets": {
110
+ "alias": "onglets";
111
+ "required": true;
112
+ "isSignal": true;
113
+ };
114
+ "etiquette": {
115
+ "alias": "etiquette";
116
+ "required": true;
117
+ "isSignal": true;
118
+ };
119
+ "activation": {
120
+ "alias": "activation";
121
+ "required": false;
122
+ "isSignal": true;
123
+ };
124
+ "orientation": {
125
+ "alias": "orientation";
126
+ "required": false;
127
+ "isSignal": true;
128
+ };
129
+ "identifiant": {
130
+ "alias": "identifiant";
131
+ "required": false;
132
+ "isSignal": true;
133
+ };
134
+ "selection": {
135
+ "alias": "selection";
136
+ "required": false;
137
+ "isSignal": true;
138
+ };
139
+ }, {
140
+ "selection": "selectionChange";
141
+ }, never, ["*"], true, [{
142
+ directive: typeof i1.Tabs;
143
+ inputs: {};
144
+ outputs: {};
145
+ }]>;
61
146
  }
62
-
63
147
  /**
64
148
  * Panneau d'un onglet, relie par sa `valeur`.
65
149
  *
150
+ * ```html
151
+ * <st-tab-panel valeur="virement" contenuConserve>
152
+ * <ng-template stTabContent><app-saisie-du-virement /></ng-template>
153
+ * </st-tab-panel>
154
+ * ```
155
+ *
66
156
  * ⚠️ La primitive d'Aria ne masque RIEN : elle pose `inert` sur le panneau
67
157
  * inactif, ce qui le retire de l'arbre d'accessibilite et du clavier, mais le
68
158
  * laisse a l'ecran. Sa documentation le dit en une ligne. Sans le style de ce
69
159
  * composant, tous les panneaux s'affichaient empiles, muets et intouchables.
160
+ *
161
+ * Transparent, sans padding en ligne : la premiere ligne du contenu affleure le
162
+ * premier onglet ; 16 px le separent de la liste horizontale. Un panneau qui
163
+ * CHARGE le dit par un `st-state` dans son gabarit (`aria-busy` compris) : le
164
+ * panneau lui-meme ne montre rien.
70
165
  */
71
- declare class StTabPanel {
72
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<StTabPanel, never>;
73
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StTabPanel, "st-tab-panel", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.TabPanel; inputs: { "value": "valeur"; }; outputs: {}; }]>;
166
+ export declare class StTabPanel {
167
+ /**
168
+ * Garde le contenu differe (`stTabContent`) quand l'onglet est quitte : masque et inerte, mais
169
+ * vivant. Une saisie commencee dans l'onglet survit au retour. Recommande pour tout panneau qui
170
+ * contient un formulaire. Sans lui, le contenu est detruit a la deselection et recree au retour.
171
+ *
172
+ * ⚠️ La primitive expose aussi, par sa propre composition, son entree anglaise `preserveContent`
173
+ * sur cet element ; le socle ne peut pas la masquer sans quitter `TabPanel`. Elle est ecrasee par
174
+ * celle-ci : n'employer que `contenuConserve`.
175
+ */
176
+ readonly contenuConserve: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
177
+ /**
178
+ * Le `st-tabs` du panneau, par injection et non par un ancetre du DOM : en colonne, l'ecart de
179
+ * l'hote separe deja la liste du panneau, et un jeu d'onglets imbrique dans un panneau ne doit
180
+ * pas prendre l'orientation d'un ancetre.
181
+ */
182
+ protected readonly onglets: StTabs | null;
183
+ constructor();
184
+ static ɵfac: i0.ɵɵFactoryDeclaration<StTabPanel, never>;
185
+ static ɵcmp: i0.ɵɵComponentDeclaration<StTabPanel, "st-tab-panel", never, {
186
+ "contenuConserve": {
187
+ "alias": "contenuConserve";
188
+ "required": false;
189
+ "isSignal": true;
190
+ };
191
+ }, {}, never, ["*"], true, [{
192
+ directive: typeof i1.TabPanel;
193
+ inputs: {
194
+ "value": "valeur";
195
+ };
196
+ outputs: {};
197
+ }]>;
74
198
  }
75
-
76
199
  /**
77
- * Contenu differe d'un panneau : rendu a la premiere selection de son onglet.
200
+ * Contenu differe d'un panneau : rendu a la premiere selection de son onglet,
201
+ * detruit a la deselection, sauf `contenuConserve` sur le `st-tab-panel`.
78
202
  *
79
203
  * Un ecran a cinq onglets ne charge ainsi que celui qu'on regarde. Voir
80
204
  * l'activation manuelle de `st-tabs` : c'est ce qui empeche qu'un simple
81
- * parcours au clavier les rende tous.
205
+ * parcours au clavier les rende tous. Un contenu qui charge des donnees pose son
206
+ * `st-state` DANS ce gabarit : l'attente (200 ms, puis 400 ms tenues) se regle
207
+ * la, pas ici.
82
208
  */
83
- declare class StTabContent {
84
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<StTabContent, never>;
85
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StTabContent, "ng-template[stTabContent]", never, {}, {}, never, never, true, [{ directive: typeof i1.TabContent; inputs: {}; outputs: {}; }]>;
209
+ export declare class StTabContent {
210
+ static ɵfac: i0.ɵɵFactoryDeclaration<StTabContent, never>;
211
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StTabContent, "ng-template[stTabContent]", never, {}, {}, never, never, true, [{
212
+ directive: typeof i1.TabContent;
213
+ inputs: {};
214
+ outputs: {};
215
+ }]>;
86
216
  }
87
217
 
88
- export { StTabContent, StTabPanel, StTabs };
89
- export type { ActivationDOnglet, Onglet, OrientationDOnglets };
218
+ export {};