@starterlib/ui 0.7.2 → 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 +163 -56
  3. package/assets/icones/catalogue.json +3296 -0
  4. package/assets/icones/sprite.svg +235 -35
  5. package/fesm2022/starterlib-ui-arbre.mjs +475 -0
  6. package/fesm2022/starterlib-ui-arbre.mjs.map +1 -0
  7. package/fesm2022/starterlib-ui-donnees.mjs +3561 -0
  8. package/fesm2022/starterlib-ui-donnees.mjs.map +1 -0
  9. package/fesm2022/starterlib-ui-formulaires.mjs +3186 -442
  10. package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
  11. package/fesm2022/starterlib-ui-libelles-en.mjs +383 -0
  12. package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -0
  13. package/fesm2022/starterlib-ui-listes.mjs +5367 -0
  14. package/fesm2022/starterlib-ui-listes.mjs.map +1 -0
  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 +509 -0
  18. package/fesm2022/starterlib-ui-navigation.mjs.map +1 -0
  19. package/fesm2022/starterlib-ui-onglets.mjs +371 -0
  20. package/fesm2022/starterlib-ui-onglets.mjs.map +1 -0
  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 +8609 -0
  26. package/fesm2022/starterlib-ui-saisie.mjs.map +1 -0
  27. package/fesm2022/starterlib-ui-selection.mjs +1341 -0
  28. package/fesm2022/starterlib-ui-selection.mjs.map +1 -0
  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 +10729 -5689
  34. package/fesm2022/starterlib-ui.mjs.map +1 -1
  35. package/package.json +58 -17
  36. package/styles/amorce.css +69 -0
  37. package/styles/couches.css +178 -0
  38. package/types/starterlib-ui-arbre.d.ts +225 -0
  39. package/types/starterlib-ui-donnees.d.ts +1489 -0
  40. package/types/starterlib-ui-formulaires.d.ts +1174 -138
  41. package/types/starterlib-ui-libelles-en.d.ts +5 -0
  42. package/types/starterlib-ui-listes.d.ts +2487 -0
  43. package/types/starterlib-ui-messagerie.d.ts +317 -0
  44. package/types/starterlib-ui-navigation.d.ts +242 -0
  45. package/types/starterlib-ui-onglets.d.ts +212 -0
  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 +3806 -0
  49. package/types/starterlib-ui-selection.d.ts +488 -0
  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 +4731 -2678
  53. package/fesm2022/starterlib-ui-interactions.mjs +0 -598
  54. package/fesm2022/starterlib-ui-interactions.mjs.map +0 -1
  55. package/types/starterlib-ui-interactions.d.ts +0 -316
@@ -0,0 +1,212 @@
1
+ import { Icone } from "@starterlib/ui";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/aria/tabs";
4
+ /** Un onglet, decrit par l'appelant. */
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;
25
+ }
26
+ export type ActivationDOnglet = 'manuelle' | 'automatique';
27
+ export type OrientationDOnglets = 'horizontale' | 'verticale';
28
+ /**
29
+ * Onglets, sur les primitives `@angular/aria/tabs`.
30
+ *
31
+ * ```html
32
+ * <st-tabs etiquette="Compte" identifiant="compte" [onglets]="onglets" [(selection)]="onglet">
33
+ * <st-tab-panel valeur="operations">
34
+ * <ng-template stTabContent><app-operations /></ng-template>
35
+ * </st-tab-panel>
36
+ * <st-tab-panel valeur="virements" contenuConserve>
37
+ * <ng-template stTabContent><app-saisie-du-virement /></ng-template>
38
+ * </st-tab-panel>
39
+ * </st-tabs>
40
+ * ```
41
+ *
42
+ * ⚠️ **La liste d'onglets est rendue par le composant, a partir de donnees**, et
43
+ * non projetee. Les primitives d'Aria relient un onglet a sa liste par
44
+ * INJECTION, et un contenu projete garde l'injecteur de l'endroit ou il est
45
+ * ecrit : c'est la lecon de `st-menu`, ou des elements projetes ne
46
+ * s'enregistraient jamais. Rendue ici, la liste est a coup sur sous la bonne
47
+ * primitive — et ses valeurs peuvent etre dites en francais.
48
+ *
49
+ * Les PANNEAUX, eux, sont projetes : ecrits directement sous `st-tabs`, leur
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.
53
+ *
54
+ * ⚠️ **Activation manuelle par defaut.** En activation automatique, chaque
55
+ * fleche SELECTIONNE l'onglet atteint ; son contenu differe se rend, et charge
56
+ * ses donnees. Parcourir cinq onglets au clavier lancerait cinq requetes pour en
57
+ * lire un. En manuelle, les fleches deplacent le focus et Entree ou Espace
58
+ * selectionne. `automatique` reste le bon choix quand les panneaux sont deja la
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.
66
+ */
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
+ }]>;
140
+ }
141
+ /**
142
+ * Panneau d'un onglet, relie par sa `valeur`.
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
+ *
150
+ * ⚠️ La primitive d'Aria ne masque RIEN : elle pose `inert` sur le panneau
151
+ * inactif, ce qui le retire de l'arbre d'accessibilite et du clavier, mais le
152
+ * laisse a l'ecran. Sa documentation le dit en une ligne. Sans le style de ce
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.
159
+ */
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
+ }]>;
192
+ }
193
+ /**
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`.
196
+ *
197
+ * Un ecran a cinq onglets ne charge ainsi que celui qu'on regarde. Voir
198
+ * l'activation manuelle de `st-tabs` : c'est ce qui empeche qu'un simple
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.
202
+ */
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
+ }]>;
210
+ }
211
+
212
+ export {};