@starterlib/ui 0.10.3 → 0.10.5
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/assets/icones/catalogue.json +1 -1
- package/fesm2022/starterlib-ui-donnees.mjs +117 -3
- package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
- package/fesm2022/starterlib-ui-listes.mjs +2 -2
- package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
- package/fesm2022/starterlib-ui-navigation.mjs +134 -26
- package/fesm2022/starterlib-ui-navigation.mjs.map +1 -1
- package/fesm2022/starterlib-ui.mjs +53 -20
- package/fesm2022/starterlib-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/starterlib-ui-donnees.d.ts +63 -1
- package/types/starterlib-ui-navigation.d.ts +130 -48
- package/types/starterlib-ui.d.ts +63 -24
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnnonceLocale, Icone, TailleDAvatar, TailleDIconeFixe, TonDAvatar } from "@starterlib/ui";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import { Ton, TonSemantique } from "@starterlib/util";
|
|
4
|
-
import { Montant } from "@starterlib/util/valeurs";
|
|
4
|
+
import { BlocDeDocument, DocumentStructure, EmphaseDeDocument, LienDeDocument, Montant, MorceauDeTexte } from "@starterlib/util/valeurs";
|
|
5
5
|
export type TypeMasque = 'iban' | 'carte' | 'telephone' | 'reference';
|
|
6
6
|
/**
|
|
7
7
|
* `ligne` : dans le flux d'une phrase ou d'une cellule. `tuile` : la tuile de la planche 2
|
|
@@ -1579,5 +1579,67 @@ export declare class StCode {
|
|
|
1579
1579
|
"copie": "copie";
|
|
1580
1580
|
}, never, never, true, never>;
|
|
1581
1581
|
}
|
|
1582
|
+
/** Un titre de page va de 1 a 6 ; un document en occupe trois, decales. */
|
|
1583
|
+
type NiveauDeTitre = 2 | 3 | 4 | 5;
|
|
1584
|
+
/**
|
|
1585
|
+
* Un document structure (`DocumentStructure` de `@starterlib/util/valeurs`) rendu PAR GABARIT :
|
|
1586
|
+
* aide, mentions legales, confidentialite, declaration d'accessibilite, message de maintenance
|
|
1587
|
+
* (lot 280, N11).
|
|
1588
|
+
*
|
|
1589
|
+
* ```html
|
|
1590
|
+
* <st-document [document]="mentions()" />
|
|
1591
|
+
* ```
|
|
1592
|
+
*
|
|
1593
|
+
* ⚠️ **Aucun HTML, aucun puits DOM.** Chaque noeud a son element dans le gabarit (`@for`,
|
|
1594
|
+
* `@switch`) : titres, paragraphes, listes, `<strong>`, `<em>`, liens. Le texte est interpole,
|
|
1595
|
+
* jamais interprete — `require-trusted-types-for 'script'` n'a rien a refuser, et un catalogue
|
|
1596
|
+
* forge ne peut rien injecter.
|
|
1597
|
+
*
|
|
1598
|
+
* ⚠️ **Des liens internes seulement**, suivis par le routeur : le document ne mene jamais a une
|
|
1599
|
+
* autre origine. `validerLeDocument` (et le schema publie) refuse deja un lien qui n'est pas un
|
|
1600
|
+
* chemin `/...` ; le composant, lui, ne rend qu'un document ainsi valide.
|
|
1601
|
+
*
|
|
1602
|
+
* ⚠️ **Des liens legers.** Un `<a>` natif par lien — `href` prepare par `Location` (la base de
|
|
1603
|
+
* l'application comprise), l'apparence du lien de phrase du socle — et UN ecouteur de clic sur
|
|
1604
|
+
* l'hote, qui confie la navigation au routeur. Un `stLink` et un `routerLink` par lien coutaient
|
|
1605
|
+
* 464 ms pour 2 000 liens au banc (lot 280) : une page d'aide ne doit pas figer l'ecran.
|
|
1606
|
+
*
|
|
1607
|
+
* ⚠️ **Les titres suivent la page.** Un document commence au niveau 2 (sous le `h1` de la page) ;
|
|
1608
|
+
* `niveauDeDepart` le decale quand il vit plus bas (dans une section `h2`, il commence a 3). Un
|
|
1609
|
+
* niveau ne saute jamais.
|
|
1610
|
+
*/
|
|
1611
|
+
export declare class StDocument {
|
|
1612
|
+
readonly document: import("@angular/core").InputSignal<DocumentStructure>;
|
|
1613
|
+
/** Le niveau du premier titre du document dans la page : 2 (defaut) ou 3. */
|
|
1614
|
+
readonly niveauDeDepart: import("@angular/core").InputSignal<2 | 3>;
|
|
1615
|
+
private readonly decalage;
|
|
1616
|
+
private readonly routeur;
|
|
1617
|
+
private readonly emplacement;
|
|
1618
|
+
/** L'adresse d'un lien interne, telle que le navigateur l'ouvrira (base de l'application comprise). */
|
|
1619
|
+
protected adresse(chemin: string): string;
|
|
1620
|
+
/**
|
|
1621
|
+
* Un clic sur un lien du document : le routeur navigue, sans recharger. Un clic du milieu ou
|
|
1622
|
+
* avec une touche (nouvel onglet, nouvelle fenetre) reste au navigateur, comme pour `routerLink`.
|
|
1623
|
+
*/
|
|
1624
|
+
protected suivre(evenement: MouseEvent): void;
|
|
1625
|
+
protected niveau(bloc: Extract<BlocDeDocument, {
|
|
1626
|
+
type: 'titre';
|
|
1627
|
+
}>): NiveauDeTitre;
|
|
1628
|
+
protected estLien(morceau: MorceauDeTexte): morceau is LienDeDocument;
|
|
1629
|
+
protected estEmphase(morceau: MorceauDeTexte): morceau is EmphaseDeDocument;
|
|
1630
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StDocument, never>;
|
|
1631
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StDocument, "st-document", never, {
|
|
1632
|
+
"document": {
|
|
1633
|
+
"alias": "document";
|
|
1634
|
+
"required": true;
|
|
1635
|
+
"isSignal": true;
|
|
1636
|
+
};
|
|
1637
|
+
"niveauDeDepart": {
|
|
1638
|
+
"alias": "niveauDeDepart";
|
|
1639
|
+
"required": false;
|
|
1640
|
+
"isSignal": true;
|
|
1641
|
+
};
|
|
1642
|
+
}, {}, never, never, true, never>;
|
|
1643
|
+
}
|
|
1582
1644
|
|
|
1583
1645
|
export {};
|
|
@@ -1,95 +1,164 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
import { InjectionToken, Provider, Signal } from "@angular/core";
|
|
3
|
+
import { CatalogueDuPointDEntree } from "@starterlib/ui";
|
|
4
|
+
import { StDialog } from "@starterlib/ui/surfaces";
|
|
2
5
|
/**
|
|
3
|
-
* `
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
+
* Les libelles de `@starterlib/ui/navigation` (lot 235) : le catalogue par point d'entree (AD-10,
|
|
7
|
+
* D154), comme ceux de l'arbre et des formulaires. La langue suit celle du dictionnaire du tronc ;
|
|
8
|
+
* le nom du repere de navigation (`navigationPrincipale`), lui, reste au tronc.
|
|
9
|
+
*/
|
|
10
|
+
export interface LibellesNavigation {
|
|
11
|
+
/** Le titre visible du tiroir, qui le nomme (« Menu ») : distinct du nom du `<nav>` qu'il contient. */
|
|
12
|
+
readonly menu: string;
|
|
13
|
+
/** La fermeture visible du tiroir, obligatoire au tactile (APG dialog). */
|
|
14
|
+
readonly fermerLeMenu: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const LIBELLES_NAVIGATION_FR: LibellesNavigation;
|
|
17
|
+
export declare const LIBELLES_NAVIGATION_EN: LibellesNavigation;
|
|
18
|
+
/**
|
|
19
|
+
* Les catalogues de la navigation par langue (sous-etiquette primaire : `fr`, `en`). Une
|
|
20
|
+
* application qui ajoute une langue au dictionnaire du tronc ajoute la sienne ici, par
|
|
21
|
+
* `fournirLibellesNavigation({ de: ... })`.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ST_LIBELLES_NAVIGATION: InjectionToken<Readonly<Record<string, LibellesNavigation>>>;
|
|
24
|
+
/** Ajoute (ou remplace) des catalogues de la navigation, par langue. */
|
|
25
|
+
export declare function fournirLibellesNavigation(catalogues: Readonly<Record<string, LibellesNavigation>>): Provider;
|
|
26
|
+
/**
|
|
27
|
+
* Le catalogue de la langue du dictionnaire du tronc ; le francais quand la langue n'en a pas, un
|
|
28
|
+
* repli signale en developpement (D-29). A appeler dans un contexte d'injection.
|
|
29
|
+
*/
|
|
30
|
+
export declare function libellesDeLaNavigation(): Signal<LibellesNavigation>;
|
|
31
|
+
/**
|
|
32
|
+
* Le catalogue de la navigation ET la langue de son repli (`catalogueDuPointDEntree`) : `lang` de
|
|
33
|
+
* ce qu'il ecrit seul (D-29). A appeler dans un contexte d'injection.
|
|
34
|
+
*/
|
|
35
|
+
export declare function catalogueDeLaNavigation(): Signal<CatalogueDuPointDEntree<LibellesNavigation>>;
|
|
36
|
+
/**
|
|
37
|
+
* `auto` suit D22 (planche 6) : tiroir sous `md`, rail de `md` a `xl`, colonne des `xl`.
|
|
38
|
+
* `rail` (lot 235) : une colonne de 72 px (`--st-largeur-rail`) qui ne montre que les icones des
|
|
39
|
+
* liens ; le libelle de chacun parait en infobulle au survol et au focus, et reste son nom.
|
|
6
40
|
*/
|
|
7
41
|
export type ModeDeNavigation = 'auto' | 'persistant' | 'modal' | 'rail';
|
|
42
|
+
/** Ce que la navigation rend REELLEMENT : `repli` est le tiroir ouvert sans couche. */
|
|
43
|
+
export type DispositionDeNavigation = 'colonne' | 'rail' | 'tiroir' | 'repli';
|
|
8
44
|
/**
|
|
9
|
-
* Navigation laterale : une
|
|
10
|
-
* sur petit ecran.
|
|
45
|
+
* Navigation laterale : une colonne a cote du contenu sur grand ecran, un rail d'icones entre
|
|
46
|
+
* `md` et `xl`, un tiroir sur petit ecran (D22).
|
|
11
47
|
*
|
|
12
48
|
* ```html
|
|
13
49
|
* <st-app-shell>
|
|
14
|
-
* <
|
|
15
|
-
*
|
|
16
|
-
* <
|
|
50
|
+
* <st-header entete>
|
|
51
|
+
* <button bascule stIconButton icone="menu" etiquette="Menu" [stSidenavToggle]="navigation"></button>
|
|
52
|
+
* <st-lang-switch secondaire … />
|
|
53
|
+
* </st-header>
|
|
54
|
+
* <st-sidenav navigation #navigation>
|
|
55
|
+
* <a stNavLink="/comptes"><st-icon nom="portefeuille" taille="24" />Comptes</a>
|
|
56
|
+
* <st-lang-switch secondaire … />
|
|
57
|
+
* <a pied stNavLink="/deconnexion"><st-icon nom="deconnexion" taille="24" />Se deconnecter</a>
|
|
17
58
|
* </st-sidenav>
|
|
18
59
|
* …
|
|
19
60
|
* </st-app-shell>
|
|
20
61
|
* ```
|
|
21
62
|
*
|
|
22
|
-
* ⚠️ **
|
|
23
|
-
*
|
|
24
|
-
* piegeage du focus, Echap, retour du focus au bouton —
|
|
25
|
-
*
|
|
26
|
-
*
|
|
63
|
+
* ⚠️ **Des modes jamais confondus.** En colonne et en rail, c'est une REGION de la page : aucun
|
|
64
|
+
* piege, rien a ouvrir ; la colonne est COLLANTE sous l'en-tete et defile en elle-meme. En tiroir,
|
|
65
|
+
* c'est un `StDialog` — role, piegeage du focus, Echap, retour du focus au bouton — nomme par son
|
|
66
|
+
* titre visible « Menu », avec sa fermeture « Fermer le menu » ; le `<nav>` qu'il contient garde
|
|
67
|
+
* son nom. Jamais une region glissee par-dessus la page avec un peu de CSS, qui laisserait le
|
|
68
|
+
* clavier parcourir la page cachee dessous.
|
|
69
|
+
*
|
|
70
|
+
* ⚠️ **Elle porte son propre `<nav>`, et un seul a la fois.** En tiroir, la region en ligne
|
|
71
|
+
* DISPARAIT : laissee en place, elle resterait un repere vide.
|
|
27
72
|
*
|
|
28
|
-
* ⚠️ **
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* proposerait sans rien y trouver.
|
|
73
|
+
* ⚠️ **Aucun echec silencieux.** Si le module des surfaces ne se charge pas (hors ligne, cache
|
|
74
|
+
* vide), le tiroir s'ouvre EN LIGNE, sous l'en-tete, sans voile ni piege (`data-mode="repli"`) :
|
|
75
|
+
* un simple depliant, qu'Echap et toute navigation referment.
|
|
32
76
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
77
|
+
* Deux creneaux : `[pied]` en bas de la navigation (deconnexion, aide, version), `[secondaire]`
|
|
78
|
+
* pour les actions que l'en-tete retire sous `md` (langue, theme), reproposees par le tiroir.
|
|
79
|
+
* Un lien suivi dans le tiroir le ferme : `StDialog` se ferme a toute navigation du routeur.
|
|
35
80
|
*/
|
|
36
81
|
export declare class StSidenav {
|
|
37
82
|
private readonly injecteur;
|
|
38
83
|
private readonly libelles;
|
|
84
|
+
/** « Menu » et « Fermer le menu » : le catalogue du point d'entree (D154), et sa langue de repli. */
|
|
85
|
+
protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/navigation").LibellesNavigation>>;
|
|
39
86
|
/**
|
|
40
|
-
* Nom du repere. `null` : « Navigation principale », du dictionnaire. A
|
|
41
|
-
* renseigner des qu'une page compte deux navigations, qui doivent se
|
|
42
|
-
*
|
|
87
|
+
* Nom du repere de navigation. `null` : « Navigation principale », du dictionnaire. A
|
|
88
|
+
* renseigner des qu'une page compte deux navigations, qui doivent se distinguer. Le tiroir,
|
|
89
|
+
* lui, se nomme toujours « Menu ».
|
|
43
90
|
*/
|
|
44
91
|
readonly etiquette: import("@angular/core").InputSignal<string | null>;
|
|
45
92
|
protected readonly etiquetteLue: import("@angular/core").Signal<string>;
|
|
46
|
-
/** `auto` :
|
|
93
|
+
/** `auto` : colonne des `xl`, rail de `md` a `xl`, tiroir en dessous (D22). */
|
|
47
94
|
readonly mode: import("@angular/core").InputSignal<ModeDeNavigation>;
|
|
48
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Identifiant du `<nav>` : celui que le bouton de bascule vise par `aria-controls` (lot 234),
|
|
97
|
+
* present en ligne ou dans le tiroir ouvert. Tiroir ferme, le `<nav>` n'existe pas encore, et
|
|
98
|
+
* `aria-expanded="false"` dit pourquoi.
|
|
99
|
+
*/
|
|
100
|
+
readonly identifiant: string;
|
|
101
|
+
protected readonly identifiantDuTitre: string;
|
|
102
|
+
private readonly ecranMoyen;
|
|
49
103
|
private readonly ecranLarge;
|
|
50
104
|
/** Mode reellement applique. Lu par le bouton, qui ne s'affiche qu'en tiroir. */
|
|
51
105
|
readonly modeEffectif: import("@angular/core").Signal<"persistant" | "modal" | "rail">;
|
|
52
106
|
private readonly ouvertInterne;
|
|
53
107
|
readonly ouvert: import("@angular/core").Signal<boolean>;
|
|
108
|
+
private readonly repliInterne;
|
|
109
|
+
/** Tiroir ouvert SANS couche : le module des surfaces n'a pas pu etre charge. */
|
|
110
|
+
readonly repli: import("@angular/core").Signal<boolean>;
|
|
111
|
+
/** Ce que la navigation rend, pose en `data-disposition` sur le `<nav>` : la feuille le lit. */
|
|
112
|
+
protected readonly disposition: import("@angular/core").Signal<DispositionDeNavigation>;
|
|
54
113
|
private readonly chargementDuTiroir;
|
|
55
114
|
/**
|
|
56
115
|
* Le module du tiroir se charge encore, passe `rythme.delai.attente` (03 §3.9,
|
|
57
|
-
* MV-12). Lu par le bouton de bascule, qui pose `aria-busy` : sans
|
|
58
|
-
* l'ouverture differee etait INVISIBLE, et un second clic semblait necessaire.
|
|
59
|
-
* Pas d'indicateur dans un bouton-icone de 44 px : le curseur d'attente suffit.
|
|
116
|
+
* MV-12). Lu par le bouton de bascule, qui pose `aria-busy` et le curseur d'attente : sans
|
|
117
|
+
* lui, l'ouverture differee etait INVISIBLE, et un second clic semblait necessaire.
|
|
60
118
|
*/
|
|
61
119
|
readonly enAttente: import("@angular/core").Signal<boolean>;
|
|
62
120
|
private readonly gabarit;
|
|
63
121
|
private reference;
|
|
64
122
|
private ouvertureEnCours;
|
|
123
|
+
private demande;
|
|
65
124
|
private detruit;
|
|
66
125
|
/**
|
|
67
126
|
* Le service de dialogue, charge a la PREMIERE ouverture et garde ensuite.
|
|
68
|
-
* Rend `null` si le composant a ete detruit pendant l'attente
|
|
127
|
+
* Rend `null` si le composant a ete detruit pendant l'attente ; LEVE si le module ne se charge
|
|
128
|
+
* pas (le repli s'en charge).
|
|
69
129
|
*
|
|
70
130
|
* ⚠️ Le specificateur etant dans la carte d'importation de l'application
|
|
71
131
|
* federee, cet import dynamique resout vers l'INSTANCE PARTAGEE du point
|
|
72
132
|
* d'entree : le tiroir emploie le meme `StDialog`, le meme recouvrement et la
|
|
73
|
-
* meme pile que le reste de l'application.
|
|
74
|
-
* rien ; il decale seulement le moment du telechargement.
|
|
133
|
+
* meme pile que le reste de l'application.
|
|
75
134
|
*
|
|
76
|
-
* ⚠️ **Le controle de destruction est ICI, avant `injecteur.get
|
|
77
|
-
*
|
|
78
|
-
* (NG0205). Le controle place apres la resolution du service arrivait donc
|
|
79
|
-
* trop tard, et une navigation pendant le chargement du module produisait un
|
|
80
|
-
* rejet non gere — invisible en developpement, remonte comme erreur
|
|
81
|
-
* applicative en production, puisque `basculer()` appelle `ouvrir()` sans
|
|
82
|
-
* attendre sa promesse.
|
|
135
|
+
* ⚠️ **Le controle de destruction est ICI, avant `injecteur.get`.** Un injecteur detruit ne rend
|
|
136
|
+
* pas `undefined` : il LEVE (NG0205).
|
|
83
137
|
*/
|
|
138
|
+
/**
|
|
139
|
+
* Le module des surfaces, charge a la demande (ADR 0031, decision 3). Une methode a part : un
|
|
140
|
+
* essai y simule le module injoignable (hors ligne), que le repli doit rattraper.
|
|
141
|
+
*/
|
|
142
|
+
protected chargerLesSurfaces(): Promise<{
|
|
143
|
+
readonly StDialog: typeof StDialog;
|
|
144
|
+
}>;
|
|
84
145
|
private serviceDeDialogue;
|
|
85
146
|
constructor();
|
|
86
147
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
148
|
+
* Charge le module du tiroir sans rien montrer : le bouton de bascule l'appelle a l'INTENTION
|
|
149
|
+
* (survol, focus, appui), et le clic trouve le module deja la. Sans effet s'il l'est deja ; un
|
|
150
|
+
* echec est rattrape par l'ouverture, qui bascule alors en repli.
|
|
151
|
+
*/
|
|
152
|
+
precharger(): void;
|
|
153
|
+
/**
|
|
154
|
+
* Ouvre le tiroir. Asynchrone : le module du dialogue se charge a la demande. La promesse est
|
|
155
|
+
* tenue quand le tiroir est a l'ecran (ou le repli en ligne) — un test l'attend, l'appelant
|
|
156
|
+
* ordinaire n'a rien a en faire. Elle ne rejette jamais.
|
|
90
157
|
*/
|
|
91
158
|
ouvrir(): Promise<void>;
|
|
92
159
|
fermer(): void;
|
|
160
|
+
/** Echap et la navigation referment le repli ; le tiroir, lui, a les siens. */
|
|
161
|
+
protected fermerLeRepli(): void;
|
|
93
162
|
/** Reste synchrone : c'est ce que lit la liaison de clic du bouton. */
|
|
94
163
|
basculer(): void;
|
|
95
164
|
static ɵfac: i0.ɵɵFactoryDeclaration<StSidenav, never>;
|
|
@@ -104,25 +173,38 @@ export declare class StSidenav {
|
|
|
104
173
|
"required": false;
|
|
105
174
|
"isSignal": true;
|
|
106
175
|
};
|
|
107
|
-
}, {}, never, ["*"], true, never>;
|
|
176
|
+
}, {}, never, ["*", "[secondaire]", "[pied]"], true, never>;
|
|
108
177
|
}
|
|
109
178
|
/**
|
|
110
179
|
* Bouton qui ouvre la navigation en tiroir.
|
|
111
180
|
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
181
|
+
* ```html
|
|
182
|
+
* <button stIconButton icone="menu" etiquette="Menu" [stSidenavToggle]="navigation"></button>
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* ⚠️ **Sur un `<button>` natif, et nulle part ailleurs** (lot 234) : le selecteur
|
|
186
|
+
* est `button[stSidenavToggle]`. Pose sur un `<div>` ou un `<a>`, il ne s'applique
|
|
187
|
+
* pas et le gabarit ne compile plus — un contrat d'hote impose plutot que
|
|
188
|
+
* documente : clavier (Entree, Espace), role et focus viennent du bouton.
|
|
189
|
+
*
|
|
190
|
+
* ⚠️ **Masque quand la navigation n'est pas un tiroir** (colonne, rail). Un bouton
|
|
191
|
+
* « Menu » qui ne fait rien, parce que la navigation est deja affichee a cote, est
|
|
192
|
+
* un arret de tabulation inutile et une promesse non tenue.
|
|
115
193
|
*
|
|
116
194
|
* ⚠️ `aria-expanded` suit l'ouverture du tiroir : sans lui, rien ne dit a qui
|
|
117
|
-
* n'en voit pas l'effet que le bouton a agi.
|
|
195
|
+
* n'en voit pas l'effet que le bouton a agi. `aria-controls` vise le `<nav>` de
|
|
196
|
+
* la navigation (`StSidenav.identifiant`), present des que le tiroir est ouvert.
|
|
197
|
+
* En repli sans couche (lot 235), ce n'est plus un dialogue : `aria-haspopup` tombe.
|
|
118
198
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
199
|
+
* **Chargement a l'intention** (lot 235) : survol, focus et appui prechargent le
|
|
200
|
+
* module du tiroir ; le clic le trouve le plus souvent deja la. Sinon, `aria-busy`
|
|
201
|
+
* et le curseur d'attente, passe le delai d'attente (MV-12) : le clic a ete pris,
|
|
202
|
+
* la navigation arrive ; un second clic, pendant ce temps, ne fait rien.
|
|
121
203
|
*/
|
|
122
204
|
export declare class StSidenavToggle {
|
|
123
205
|
readonly stSidenavToggle: import("@angular/core").InputSignal<StSidenav>;
|
|
124
206
|
static ɵfac: i0.ɵɵFactoryDeclaration<StSidenavToggle, never>;
|
|
125
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<StSidenavToggle, "[stSidenavToggle]", never, {
|
|
207
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<StSidenavToggle, "button[stSidenavToggle]", never, {
|
|
126
208
|
"stSidenavToggle": {
|
|
127
209
|
"alias": "stSidenavToggle";
|
|
128
210
|
"required": true;
|
package/types/starterlib-ui.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import { AnimationCallbackEvent, DestroyRef, EnvironmentProviders, InjectionToken, Provider, Signal } from "@angular/core";
|
|
2
|
+
import { AnimationCallbackEvent, DestroyRef, EnvironmentProviders, InjectionToken, OnInit, Provider, Signal } from "@angular/core";
|
|
3
3
|
import { ChoixDeTheme, ETATS_DE_BLOC, EtatDeBloc, Langue, MoyenDeCeremonie, Ton, TonSemantique, VarianteDErreur, VarianteDErreur as VarianteDErreur$1, sansCommandesDeDirection } from "@starterlib/util";
|
|
4
4
|
import { EtatDeDocument, ListesDAdresses, NatureDeRegion, RechercheDAdresses } from "@starterlib/util/valeurs";
|
|
5
5
|
import * as i1 from "@angular/router";
|
|
@@ -2531,8 +2531,9 @@ export declare class StLienEtendu {
|
|
|
2531
2531
|
*/
|
|
2532
2532
|
export type TailleDeTitreDePage = 'xl' | '2xl' | '3xl' | '4xl';
|
|
2533
2533
|
/**
|
|
2534
|
-
* Titre de page : le `h1`, ses puces, sa precision et
|
|
2535
|
-
* attachees.
|
|
2534
|
+
* Titre de page : le `h1`, son aide contextuelle (`[aide]`, lot 280), ses puces, sa precision et
|
|
2535
|
+
* les actions qui lui sont attachees. L'aide et les puces vont sur la rangee du titre, HORS de la
|
|
2536
|
+
* balise : leur texte n'entre pas dans le nom du titre.
|
|
2536
2537
|
*
|
|
2537
2538
|
* ⚠️ Il rend une **vraie balise de titre**, un `h1` par defaut : `StNavigation`
|
|
2538
2539
|
* de `@starterlib/core` vise le titre de niveau 1 pour y poser le focus apres
|
|
@@ -2596,7 +2597,7 @@ export declare class StPageTitle {
|
|
|
2596
2597
|
"required": false;
|
|
2597
2598
|
"isSignal": true;
|
|
2598
2599
|
};
|
|
2599
|
-
}, {}, never, ["*", "[puces]", "[precision]", "[actions]"], true, never>;
|
|
2600
|
+
}, {}, never, ["*", "[aide]", "[puces]", "[precision]", "[actions]"], true, never>;
|
|
2600
2601
|
}
|
|
2601
2602
|
/** Un maillon du fil. Sans `lien`, il n'est pas cliquable. */
|
|
2602
2603
|
export interface MaillonDeFil {
|
|
@@ -2905,9 +2906,10 @@ export declare class StAppShell {
|
|
|
2905
2906
|
* que l'hote charge). Des `md`, la ligne ne se replie jamais ; dessous, les actions passent sur
|
|
2906
2907
|
* une ligne de plus plutot que de deborder (WCAG 1.4.10).
|
|
2907
2908
|
*
|
|
2908
|
-
* ⚠️ `secondaire` (langue, theme) marque ce qui
|
|
2909
|
-
*
|
|
2910
|
-
*
|
|
2909
|
+
* ⚠️ `secondaire` (langue, theme) marque ce qui QUITTE l'en-tete sous `md` (lot 235) : le tiroir
|
|
2910
|
+
* de navigation le repropose, a condition que l'application l'y projette aussi
|
|
2911
|
+
* (`<st-lang-switch secondaire … />` dans `st-sidenav`). Sans ce second exemplaire, l'action
|
|
2912
|
+
* serait inatteignable sur un telephone : ne rien marquer `secondaire` garde tout dans l'en-tete.
|
|
2911
2913
|
*
|
|
2912
2914
|
* ```html
|
|
2913
2915
|
* <st-header>
|
|
@@ -2973,15 +2975,18 @@ export declare class StFooter {
|
|
|
2973
2975
|
}
|
|
2974
2976
|
/**
|
|
2975
2977
|
* Lien de navigation principale, pose en attribut sur un `<a>` natif :
|
|
2976
|
-
* `routerLink`, etat
|
|
2978
|
+
* `routerLink`, etat courant, icone et pastille, en un seul geste.
|
|
2977
2979
|
*
|
|
2978
2980
|
* ```html
|
|
2979
2981
|
* <st-sidenav navigation>
|
|
2980
|
-
* <a stNavLink="/
|
|
2982
|
+
* <a stNavLink="/"><st-icon nom="maison" taille="24" />Accueil</a>
|
|
2983
|
+
* <a stNavLink="/comptes"><st-icon nom="portefeuille" taille="24" />Comptes</a>
|
|
2981
2984
|
* <a [stNavLink]="['/messages']">
|
|
2982
|
-
*
|
|
2985
|
+
* <st-icon nom="messages" taille="24" />
|
|
2986
|
+
* Messagerie<span class="st-vh">, 5 non lus</span>
|
|
2983
2987
|
* <st-badge [valeur]="5" />
|
|
2984
2988
|
* </a>
|
|
2989
|
+
* <a stNavLink="/aide"><st-icon nom="casque" taille="24" />Aide<st-icon fin nom="lien-externe" /></a>
|
|
2985
2990
|
* </st-sidenav>
|
|
2986
2991
|
* ```
|
|
2987
2992
|
*
|
|
@@ -2992,32 +2997,60 @@ export declare class StFooter {
|
|
|
2992
2997
|
* l'observateur de rupture pour un lien. Et la coquille le PEINT : le second
|
|
2993
2998
|
* critere de l'ADR 0031 le garde au tronc pour la meme raison.
|
|
2994
2999
|
*
|
|
2995
|
-
*
|
|
3000
|
+
* **Une grille, une colonne d'icone reservee** (lot 234) : l'icone de tete dans
|
|
3001
|
+
* une colonne de 24 px, TOUJOURS reservee — un lien sans icone garde son libelle
|
|
3002
|
+
* aligne sur les autres —, le libelle, puis la pastille (`st-badge`) ou une icone
|
|
3003
|
+
* de fin (`st-icon fin` : `lien-externe`, `chevron-droite`), l'une ou l'autre.
|
|
3004
|
+
* L'ordre du DOM est celui de l'ecran (icone, libelle, fin), quel que soit
|
|
3005
|
+
* l'ordre d'ecriture. Le libelle tient sur UNE ligne et se tronque par une
|
|
3006
|
+
* ellipse : une navigation ne se replie jamais, et le nom accessible, lui, reste
|
|
3007
|
+
* entier.
|
|
3008
|
+
*
|
|
3009
|
+
* ⚠️ **L'etat courant est porte par `aria-current="page"`**, pose par le routeur,
|
|
2996
3010
|
* et c'est sur lui que la feuille se branche — jamais sur la seule couleur : le
|
|
2997
|
-
* lien courant se lit a sa graisse et au marqueur sur son bord de depart,
|
|
2998
|
-
* survivent au contraste force
|
|
2999
|
-
*
|
|
3011
|
+
* lien courant se lit a sa graisse et au marqueur de 3 px sur son bord de depart,
|
|
3012
|
+
* qui survivent au contraste force (D22 : fond `surface-conteneur-bas`, texte
|
|
3013
|
+
* `texte-primaire` 600, marqueur et icone `primaire`). La classe
|
|
3014
|
+
* `st-nav-link--actif` accompagne, pour qui veut y accrocher un style.
|
|
3015
|
+
*
|
|
3016
|
+
* ⚠️ **Le lien racine est exact par defaut.** `stNavLink="/"` sans
|
|
3017
|
+
* `optionsDActivation` ne s'allume que sur `/` : en inclusion, il serait courant
|
|
3018
|
+
* sur TOUTES les pages. Poser `optionsDActivation` l'emporte toujours.
|
|
3000
3019
|
*
|
|
3001
3020
|
* ⚠️ La pastille est `aria-hidden` : le compte qu'elle affiche doit entrer
|
|
3002
3021
|
* dans le nom du lien, par un texte lisible par lecteur seulement (`.st-vh`),
|
|
3003
|
-
* compose par l'appelant.
|
|
3022
|
+
* compose par l'appelant. En developpement, un `st-badge` sans `.st-vh` dans le
|
|
3023
|
+
* lien est signale.
|
|
3004
3024
|
*
|
|
3005
3025
|
* Un composant et non une directive, parce qu'il RANGE ce qu'on lui projette :
|
|
3006
|
-
* l'icone devant, la pastille derriere, le libelle entre les deux
|
|
3007
|
-
*
|
|
3008
|
-
|
|
3009
|
-
|
|
3026
|
+
* l'icone devant, la pastille derriere, le libelle entre les deux. Un lien qu'on
|
|
3027
|
+
* ne peut pas suivre ne se rend pas (`@if` cote application) : jamais
|
|
3028
|
+
* `aria-disabled` sur un lien de navigation.
|
|
3029
|
+
*/
|
|
3030
|
+
export declare class StNavLink implements OnInit {
|
|
3031
|
+
private readonly lien;
|
|
3032
|
+
private readonly actif;
|
|
3033
|
+
private readonly routeur;
|
|
3034
|
+
/** L'objet d'options de `RouterLinkActive` avant toute liaison : `optionsDActivation` le remplace. */
|
|
3035
|
+
private readonly optionsParDefaut;
|
|
3010
3036
|
constructor();
|
|
3037
|
+
ngOnInit(): void;
|
|
3011
3038
|
static ɵfac: i0.ɵɵFactoryDeclaration<StNavLink, never>;
|
|
3012
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<StNavLink, "a[stNavLink]", never, {}, {}, never, ["st-icon", "*", "st-badge"], true, [{
|
|
3039
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StNavLink, "a[stNavLink]", never, {}, {}, never, ["st-icon:not([fin])", "*", "st-badge, st-icon[fin]"], true, [{
|
|
3013
3040
|
directive: typeof i1.RouterLink;
|
|
3014
3041
|
inputs: {
|
|
3015
3042
|
"routerLink": "stNavLink";
|
|
3043
|
+
"target": "target";
|
|
3016
3044
|
"queryParams": "queryParams";
|
|
3017
3045
|
"fragment": "fragment";
|
|
3018
3046
|
"queryParamsHandling": "queryParamsHandling";
|
|
3019
|
-
"replaceUrl": "replaceUrl";
|
|
3020
3047
|
"state": "state";
|
|
3048
|
+
"info": "info";
|
|
3049
|
+
"relativeTo": "relativeTo";
|
|
3050
|
+
"preserveFragment": "preserveFragment";
|
|
3051
|
+
"skipLocationChange": "skipLocationChange";
|
|
3052
|
+
"replaceUrl": "replaceUrl";
|
|
3053
|
+
"browserUrl": "browserUrl";
|
|
3021
3054
|
};
|
|
3022
3055
|
outputs: {};
|
|
3023
3056
|
}, {
|
|
@@ -3037,6 +3070,7 @@ export declare class StNavLink {
|
|
|
3037
3070
|
* <st-breadcrumb forme="compacte" separateur="/" [maillons]="maillons" />
|
|
3038
3071
|
* <st-tag surtitre ton="primaire" variante="attenuee" casse="capitales" point libelle="Tresorerie" />
|
|
3039
3072
|
* Mes operations
|
|
3073
|
+
* <st-help-button aide sujet="Mes operations">{{ t('tresorerie.aide.operations') }}</st-help-button>
|
|
3040
3074
|
* <st-tag puces casse="capitales" taille="sm" libelle="ISO-20022" />
|
|
3041
3075
|
* <button stButton variante="primaire" actions>Exporter</button>
|
|
3042
3076
|
* <st-tabs etiquette="Vue" [onglets]="onglets" [(selection)]="vue" />
|
|
@@ -3044,10 +3078,15 @@ export declare class StNavLink {
|
|
|
3044
3078
|
* ```
|
|
3045
3079
|
*
|
|
3046
3080
|
* Emplacements : `st-breadcrumb` (par element), `[surtitre]` et `[meta]` au-dessus du titre,
|
|
3047
|
-
* contenu par defaut = TEXTE du titre, `[puces]` sur sa rangee, `[precision]` (texte
|
|
3048
|
-
* codes) sous lui, `[actions]` a droite des `lg` et dessous avant, `st-tabs` ou
|
|
3081
|
+
* contenu par defaut = TEXTE du titre, `[aide]` puis `[puces]` sur sa rangee, `[precision]` (texte
|
|
3082
|
+
* riche, a codes) sous lui, `[actions]` a droite des `lg` et dessous avant, `st-tabs` ou
|
|
3049
3083
|
* `st-segmented-control` (par element) en bas.
|
|
3050
3084
|
*
|
|
3085
|
+
* L'aide contextuelle de la page (lot 280) : un `st-help-button` (`@starterlib/ui/surfaces`) dans
|
|
3086
|
+
* `[aide]`, juste apres le titre et HORS de lui. Son texte est la cle `<perimetre>.aide.<page>`,
|
|
3087
|
+
* soeur du titre de la route `<perimetre>.pages.<page>` : l'etape `i18n` de `starter-web verify`
|
|
3088
|
+
* exige cette cle pour chaque route du manifeste, et refuse une aide sans page.
|
|
3089
|
+
*
|
|
3051
3090
|
* ⚠️ Le fil et les onglets se reconnaissent a leur ELEMENT (`st-breadcrumb`,
|
|
3052
3091
|
* `st-tabs`), pas a un attribut : `onglets` est deja le nom d'une entree de
|
|
3053
3092
|
* `st-tabs`, et un attribut nu du meme nom lui passerait une chaine vide. Un
|
|
@@ -3115,7 +3154,7 @@ export declare class StPageHeader {
|
|
|
3115
3154
|
"required": false;
|
|
3116
3155
|
"isSignal": true;
|
|
3117
3156
|
};
|
|
3118
|
-
}, {}, never, ["st-breadcrumb", "[surtitre]", "[meta]", "*", "[puces]", "[precision]", "[actions]", "st-tabs, st-nav-tabs, st-segmented-control"], true, never>;
|
|
3157
|
+
}, {}, never, ["st-breadcrumb", "[surtitre]", "[meta]", "*", "[aide]", "[puces]", "[precision]", "[actions]", "st-tabs, st-nav-tabs, st-segmented-control"], true, never>;
|
|
3119
3158
|
}
|
|
3120
3159
|
/**
|
|
3121
3160
|
* Barre fine de progression d'une navigation, sous l'en-tete.
|