@starterlib/ui 0.8.0 → 0.9.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 (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 +10737 -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 +166 -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 +4739 -1120
  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,25 +1,40 @@
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
  * ```
@@ -32,7 +47,9 @@ type OrientationDOnglets = 'horizontale' | 'verticale';
32
47
  * primitive — et ses valeurs peuvent etre dites en francais.
33
48
  *
34
49
  * Les PANNEAUX, eux, sont projetes : ecrits directement sous `st-tabs`, leur
35
- * injecteur parent est celui de l'hote, qui porte la primitive `Tabs`.
50
+ * injecteur parent est celui de l'hote, qui porte la primitive `Tabs`. Un panneau
51
+ * ecrit ailleurs (un composant intermediaire) ne trouve pas `Tabs` : la creation
52
+ * echoue, avec l'erreur d'injection d'Angular.
36
53
  *
37
54
  * ⚠️ **Activation manuelle par defaut.** En activation automatique, chaque
38
55
  * fleche SELECTIONNE l'onglet atteint ; son contenu differe se rend, et charge
@@ -40,50 +57,156 @@ type OrientationDOnglets = 'horizontale' | 'verticale';
40
57
  * lire un. En manuelle, les fleches deplacent le focus et Entree ou Espace
41
58
  * selectionne. `automatique` reste le bon choix quand les panneaux sont deja la
42
59
  * et s'affichent sans delai.
60
+ *
61
+ * **Une ligne, qui defile** (EA-22) : un libelle ne passe jamais a la ligne et
62
+ * n'est jamais tronque ; la liste defile, une ombre dit de quel cote il reste des
63
+ * onglets, et l'onglet choisi est amene en vue. Le chargement d'un panneau est
64
+ * dit par un `st-state` DANS son gabarit (`aria-busy` compris), jamais par
65
+ * l'onglet.
43
66
  */
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: {}; }]>;
67
+ export declare class StTabs {
68
+ private readonly hote;
69
+ private readonly locale;
70
+ private readonly baseParDefaut;
71
+ readonly onglets: import("@angular/core").InputSignal<readonly Onglet[]>;
72
+ /** Nom accessible de la liste : sans lui, plusieurs listes d'onglets se confondent. */
73
+ readonly etiquette: import("@angular/core").InputSignal<string>;
74
+ readonly activation: import("@angular/core").InputSignal<ActivationDOnglet>;
75
+ readonly orientation: import("@angular/core").InputSignal<OrientationDOnglets>;
76
+ /**
77
+ * Base des ids des onglets, `<identifiant>-onglet-<valeur>` : l'application synchronise
78
+ * `selection` avec l'adresse, et une ancre ou un essai designe l'onglet sans deviner. Absent :
79
+ * une base unique dans le document. Les panneaux gardent l'id de la primitive, que leur onglet
80
+ * suit dans `aria-controls`.
81
+ */
82
+ readonly identifiant: import("@angular/core").InputSignal<string | undefined>;
83
+ /**
84
+ * Valeur de l'onglet selectionne, ecrite par le composant des le rendu : absente, inconnue ou
85
+ * desactivee, elle recoit le premier onglet disponible (une valeur fournie est signalee en
86
+ * developpement). Elle ne vaut `undefined` que si aucun onglet n'est selectionnable.
87
+ */
88
+ readonly selection: import("@angular/core").ModelSignal<string | undefined>;
89
+ /**
90
+ * ⚠️ Toujours un onglet selectionne. Le motif ARIA l'exige : une liste sans
91
+ * selection n'affiche aucun panneau, et la page parait vide sans raison.
92
+ */
93
+ protected readonly selectionEffective: import("@angular/core").Signal<string | undefined>;
94
+ protected readonly modeAria: import("@angular/core").Signal<"follow" | "explicit">;
95
+ protected readonly orientationAria: import("@angular/core").Signal<"vertical" | "horizontal">;
96
+ private readonly formatDesComptes;
97
+ constructor();
98
+ /** Id d'un onglet : stable avec `identifiant`, unique dans le document sans lui. */
99
+ protected idDOnglet(valeur: string): string;
100
+ protected compteDe(compte: number): string;
101
+ static ɵfac: i0.ɵɵFactoryDeclaration<StTabs, never>;
102
+ static ɵcmp: i0.ɵɵComponentDeclaration<StTabs, "st-tabs", never, {
103
+ "onglets": {
104
+ "alias": "onglets";
105
+ "required": true;
106
+ "isSignal": true;
107
+ };
108
+ "etiquette": {
109
+ "alias": "etiquette";
110
+ "required": true;
111
+ "isSignal": true;
112
+ };
113
+ "activation": {
114
+ "alias": "activation";
115
+ "required": false;
116
+ "isSignal": true;
117
+ };
118
+ "orientation": {
119
+ "alias": "orientation";
120
+ "required": false;
121
+ "isSignal": true;
122
+ };
123
+ "identifiant": {
124
+ "alias": "identifiant";
125
+ "required": false;
126
+ "isSignal": true;
127
+ };
128
+ "selection": {
129
+ "alias": "selection";
130
+ "required": false;
131
+ "isSignal": true;
132
+ };
133
+ }, {
134
+ "selection": "selectionChange";
135
+ }, never, ["*"], true, [{
136
+ directive: typeof i1.Tabs;
137
+ inputs: {};
138
+ outputs: {};
139
+ }]>;
61
140
  }
62
-
63
141
  /**
64
142
  * Panneau d'un onglet, relie par sa `valeur`.
65
143
  *
144
+ * ```html
145
+ * <st-tab-panel valeur="virement" contenuConserve>
146
+ * <ng-template stTabContent><app-saisie-du-virement /></ng-template>
147
+ * </st-tab-panel>
148
+ * ```
149
+ *
66
150
  * ⚠️ La primitive d'Aria ne masque RIEN : elle pose `inert` sur le panneau
67
151
  * inactif, ce qui le retire de l'arbre d'accessibilite et du clavier, mais le
68
152
  * laisse a l'ecran. Sa documentation le dit en une ligne. Sans le style de ce
69
153
  * composant, tous les panneaux s'affichaient empiles, muets et intouchables.
154
+ *
155
+ * Transparent, sans padding en ligne : la premiere ligne du contenu affleure le
156
+ * premier onglet ; 16 px le separent de la liste horizontale. Un panneau qui
157
+ * CHARGE le dit par un `st-state` dans son gabarit (`aria-busy` compris) : le
158
+ * panneau lui-meme ne montre rien.
70
159
  */
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: {}; }]>;
160
+ export declare class StTabPanel {
161
+ /**
162
+ * Garde le contenu differe (`stTabContent`) quand l'onglet est quitte : masque et inerte, mais
163
+ * vivant. Une saisie commencee dans l'onglet survit au retour. Recommande pour tout panneau qui
164
+ * contient un formulaire. Sans lui, le contenu est detruit a la deselection et recree au retour.
165
+ *
166
+ * ⚠️ La primitive expose aussi, par sa propre composition, son entree anglaise `preserveContent`
167
+ * sur cet element ; le socle ne peut pas la masquer sans quitter `TabPanel`. Elle est ecrasee par
168
+ * celle-ci : n'employer que `contenuConserve`.
169
+ */
170
+ readonly contenuConserve: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
171
+ /**
172
+ * Le `st-tabs` du panneau, par injection et non par un ancetre du DOM : en colonne, l'ecart de
173
+ * l'hote separe deja la liste du panneau, et un jeu d'onglets imbrique dans un panneau ne doit
174
+ * pas prendre l'orientation d'un ancetre.
175
+ */
176
+ protected readonly onglets: StTabs | null;
177
+ constructor();
178
+ static ɵfac: i0.ɵɵFactoryDeclaration<StTabPanel, never>;
179
+ static ɵcmp: i0.ɵɵComponentDeclaration<StTabPanel, "st-tab-panel", never, {
180
+ "contenuConserve": {
181
+ "alias": "contenuConserve";
182
+ "required": false;
183
+ "isSignal": true;
184
+ };
185
+ }, {}, never, ["*"], true, [{
186
+ directive: typeof i1.TabPanel;
187
+ inputs: {
188
+ "value": "valeur";
189
+ };
190
+ outputs: {};
191
+ }]>;
74
192
  }
75
-
76
193
  /**
77
- * Contenu differe d'un panneau : rendu a la premiere selection de son onglet.
194
+ * Contenu differe d'un panneau : rendu a la premiere selection de son onglet,
195
+ * detruit a la deselection, sauf `contenuConserve` sur le `st-tab-panel`.
78
196
  *
79
197
  * Un ecran a cinq onglets ne charge ainsi que celui qu'on regarde. Voir
80
198
  * l'activation manuelle de `st-tabs` : c'est ce qui empeche qu'un simple
81
- * parcours au clavier les rende tous.
199
+ * parcours au clavier les rende tous. Un contenu qui charge des donnees pose son
200
+ * `st-state` DANS ce gabarit : l'attente (200 ms, puis 400 ms tenues) se regle
201
+ * la, pas ici.
82
202
  */
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: {}; }]>;
203
+ export declare class StTabContent {
204
+ static ɵfac: i0.ɵɵFactoryDeclaration<StTabContent, never>;
205
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StTabContent, "ng-template[stTabContent]", never, {}, {}, never, never, true, [{
206
+ directive: typeof i1.TabContent;
207
+ inputs: {};
208
+ outputs: {};
209
+ }]>;
86
210
  }
87
211
 
88
- export { StTabContent, StTabPanel, StTabs };
89
- export type { ActivationDOnglet, Onglet, OrientationDOnglets };
212
+ export {};