@starterlib/ui 0.10.13 → 0.11.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/LICENCES-TIERCES.md +9 -3
- package/README.md +167 -32
- package/assets/icones/catalogue.json +199 -4
- package/assets/icones/sprite.svg +14 -0
- package/assets/logos/starter-bank-clair.svg +1 -0
- package/assets/logos/starter-bank-monochrome.svg +1 -0
- package/assets/logos/starter-bank-sombre.svg +1 -0
- package/fesm2022/starterlib-ui-arbre.mjs +25 -25
- package/fesm2022/starterlib-ui-arbre.mjs.map +1 -1
- package/fesm2022/starterlib-ui-donnees.mjs +760 -274
- package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
- package/fesm2022/starterlib-ui-etats.mjs +82 -82
- package/fesm2022/starterlib-ui-etats.mjs.map +1 -1
- package/fesm2022/starterlib-ui-force.mjs +18 -0
- package/fesm2022/starterlib-ui-force.mjs.map +1 -0
- package/fesm2022/starterlib-ui-formulaires.mjs +580 -198
- package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
- package/fesm2022/starterlib-ui-graphiques.mjs +934 -0
- package/fesm2022/starterlib-ui-graphiques.mjs.map +1 -0
- package/fesm2022/starterlib-ui-indicateurs.mjs +59 -59
- package/fesm2022/starterlib-ui-indicateurs.mjs.map +1 -1
- package/fesm2022/starterlib-ui-libelles-en.mjs +11 -0
- package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -1
- package/fesm2022/starterlib-ui-listes.mjs +727 -315
- package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
- package/fesm2022/starterlib-ui-messagerie.mjs +45 -45
- package/fesm2022/starterlib-ui-messagerie.mjs.map +1 -1
- package/fesm2022/starterlib-ui-mise-en-page.mjs +46 -46
- package/fesm2022/starterlib-ui-mise-en-page.mjs.map +1 -1
- package/fesm2022/starterlib-ui-navigation.mjs +200 -42
- package/fesm2022/starterlib-ui-navigation.mjs.map +1 -1
- package/fesm2022/starterlib-ui-onglets.mjs +20 -20
- package/fesm2022/starterlib-ui-onglets.mjs.map +1 -1
- package/fesm2022/starterlib-ui-parcours.mjs +631 -168
- package/fesm2022/starterlib-ui-parcours.mjs.map +1 -1
- package/fesm2022/starterlib-ui-qr.mjs +11 -11
- package/fesm2022/starterlib-ui-qr.mjs.map +1 -1
- package/fesm2022/starterlib-ui-saisie.mjs +617 -511
- package/fesm2022/starterlib-ui-saisie.mjs.map +1 -1
- package/fesm2022/starterlib-ui-selection.mjs +64 -64
- package/fesm2022/starterlib-ui-selection.mjs.map +1 -1
- package/fesm2022/starterlib-ui-sens.mjs +3 -3
- package/fesm2022/starterlib-ui-surfaces.mjs +246 -242
- package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -1
- package/fesm2022/starterlib-ui-virtuel.mjs +272 -0
- package/fesm2022/starterlib-ui-virtuel.mjs.map +1 -0
- package/fesm2022/starterlib-ui.mjs +1142 -898
- package/fesm2022/starterlib-ui.mjs.map +1 -1
- package/package.json +31 -3
- package/types/starterlib-ui-donnees.d.ts +231 -5
- package/types/starterlib-ui-force.d.ts +19 -0
- package/types/starterlib-ui-formulaires.d.ts +132 -1
- package/types/starterlib-ui-graphiques.d.ts +421 -0
- package/types/starterlib-ui-indicateurs.d.ts +11 -4
- package/types/starterlib-ui-listes.d.ts +230 -13
- package/types/starterlib-ui-navigation.d.ts +82 -1
- package/types/starterlib-ui-parcours.d.ts +265 -5
- package/types/starterlib-ui-saisie.d.ts +91 -10
- package/types/starterlib-ui-selection.d.ts +1 -1
- package/types/starterlib-ui-surfaces.d.ts +10 -9
- package/types/starterlib-ui-virtuel.d.ts +103 -0
- package/types/starterlib-ui.d.ts +175 -24
- package/virtuel/README.md +46 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starterlib/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Bibliotheque de composants st-* du socle frontal starter, sur CDK et Aria.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -25,8 +25,12 @@
|
|
|
25
25
|
"@angular/forms": "^22.2.0",
|
|
26
26
|
"@angular/cdk": "^22.2.0",
|
|
27
27
|
"@angular/aria": "^22.2.0",
|
|
28
|
-
"@starterlib/tokens": "^0.
|
|
29
|
-
"@starterlib/util": "^0.
|
|
28
|
+
"@starterlib/tokens": "^0.11.0",
|
|
29
|
+
"@starterlib/util": "^0.11.0",
|
|
30
|
+
"@zxcvbn-ts/core": "^4.2.0",
|
|
31
|
+
"@zxcvbn-ts/language-common": "^4.1.3",
|
|
32
|
+
"@zxcvbn-ts/language-en": "^4.1.1",
|
|
33
|
+
"@zxcvbn-ts/language-fr": "^4.1.2"
|
|
30
34
|
},
|
|
31
35
|
"peerDependenciesMeta": {
|
|
32
36
|
"@angular/cdk": {
|
|
@@ -37,6 +41,18 @@
|
|
|
37
41
|
},
|
|
38
42
|
"@angular/forms": {
|
|
39
43
|
"optional": true
|
|
44
|
+
},
|
|
45
|
+
"@zxcvbn-ts/core": {
|
|
46
|
+
"optional": true
|
|
47
|
+
},
|
|
48
|
+
"@zxcvbn-ts/language-common": {
|
|
49
|
+
"optional": true
|
|
50
|
+
},
|
|
51
|
+
"@zxcvbn-ts/language-en": {
|
|
52
|
+
"optional": true
|
|
53
|
+
},
|
|
54
|
+
"@zxcvbn-ts/language-fr": {
|
|
55
|
+
"optional": true
|
|
40
56
|
}
|
|
41
57
|
},
|
|
42
58
|
"module": "fesm2022/starterlib-ui.mjs",
|
|
@@ -61,10 +77,18 @@
|
|
|
61
77
|
"types": "./types/starterlib-ui-etats.d.ts",
|
|
62
78
|
"default": "./fesm2022/starterlib-ui-etats.mjs"
|
|
63
79
|
},
|
|
80
|
+
"./force": {
|
|
81
|
+
"types": "./types/starterlib-ui-force.d.ts",
|
|
82
|
+
"default": "./fesm2022/starterlib-ui-force.mjs"
|
|
83
|
+
},
|
|
64
84
|
"./formulaires": {
|
|
65
85
|
"types": "./types/starterlib-ui-formulaires.d.ts",
|
|
66
86
|
"default": "./fesm2022/starterlib-ui-formulaires.mjs"
|
|
67
87
|
},
|
|
88
|
+
"./graphiques": {
|
|
89
|
+
"types": "./types/starterlib-ui-graphiques.d.ts",
|
|
90
|
+
"default": "./fesm2022/starterlib-ui-graphiques.mjs"
|
|
91
|
+
},
|
|
68
92
|
"./indicateurs": {
|
|
69
93
|
"types": "./types/starterlib-ui-indicateurs.d.ts",
|
|
70
94
|
"default": "./fesm2022/starterlib-ui-indicateurs.mjs"
|
|
@@ -116,6 +140,10 @@
|
|
|
116
140
|
"./surfaces": {
|
|
117
141
|
"types": "./types/starterlib-ui-surfaces.d.ts",
|
|
118
142
|
"default": "./fesm2022/starterlib-ui-surfaces.mjs"
|
|
143
|
+
},
|
|
144
|
+
"./virtuel": {
|
|
145
|
+
"types": "./types/starterlib-ui-virtuel.d.ts",
|
|
146
|
+
"default": "./fesm2022/starterlib-ui-virtuel.mjs"
|
|
119
147
|
}
|
|
120
148
|
},
|
|
121
149
|
"type": "module"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { AnnonceLocale, Icone, TailleDAvatar, TailleDIconeFixe, TonDAvatar } from "@starterlib/ui";
|
|
1
|
+
import { AnnonceLocale, CatalogueDuPointDEntree, Icone, TailleDAvatar, TailleDIconeFixe, TonDAvatar } from "@starterlib/ui";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import { InjectionToken, Provider, Signal } from "@angular/core";
|
|
3
4
|
import { Ton, TonSemantique } from "@starterlib/util";
|
|
4
5
|
import { BlocDeDocument, DocumentStructure, EmphaseDeDocument, LienDeDocument, Montant, MorceauDeTexte } from "@starterlib/util/valeurs";
|
|
5
6
|
export type TypeMasque = 'iban' | 'carte' | 'telephone' | 'reference';
|
|
@@ -195,11 +196,13 @@ export declare class StMasked {
|
|
|
195
196
|
export type TailleDeMontant = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'hero';
|
|
196
197
|
/**
|
|
197
198
|
* Couleur choisie par l'appelant : `discret` pour un solde nul ou clos, `primaire` pour la
|
|
198
|
-
* ligne choisie d'un tableau, `succes` et `
|
|
199
|
+
* ligne choisie d'un tableau, `succes` et `erreur` pour un statut de ligne (execute, rejete) ;
|
|
200
|
+
* `danger` reste pour une ligne a detruire ou une urgence (et pour le rejet ecrit avant le role
|
|
201
|
+
* `erreur`, P08-03, qui en a la couleur par defaut).
|
|
199
202
|
* ⚠️ Un statut, jamais un sens : un debit n'est pas une erreur (D30). Le sens d'une
|
|
200
203
|
* VARIATION se dit par `variation`, qui lit `positif` et `negatif`.
|
|
201
204
|
*/
|
|
202
|
-
export type TonDeMontant = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'danger'>;
|
|
205
|
+
export type TonDeMontant = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'erreur' | 'danger'>;
|
|
203
206
|
/** `mono` : colonne de chasse fixe des tableaux (planche 4, D19). */
|
|
204
207
|
export type PoliceDeMontant = 'base' | 'mono';
|
|
205
208
|
/** `fin` : cellule numerique, les virgules s'alignent en colonne. */
|
|
@@ -580,7 +583,7 @@ export type DecimalesDeNombre = number | {
|
|
|
580
583
|
readonly max: number;
|
|
581
584
|
};
|
|
582
585
|
/** Les tons de `st-money` : un statut choisi par l'appelant, jamais deduit du signe. */
|
|
583
|
-
export type TonDeNombre = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'danger'>;
|
|
586
|
+
export type TonDeNombre = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'erreur' | 'danger'>;
|
|
584
587
|
/**
|
|
585
588
|
* Un nombre qui n'est ni un montant (`st-money`) ni un compte (`st-count`) : un taux, un TAEG, une
|
|
586
589
|
* quantite decimale, une grandeur avec son unite (lot 256).
|
|
@@ -1565,7 +1568,7 @@ export declare class StCode {
|
|
|
1565
1568
|
protected readonly annonce: AnnonceLocale;
|
|
1566
1569
|
protected readonly copieConfirmee: import("@angular/core").WritableSignal<boolean>;
|
|
1567
1570
|
protected readonly copieRefusee: import("@angular/core").WritableSignal<boolean>;
|
|
1568
|
-
protected readonly iconeDeCopie: import("@angular/core").Signal<"iban" | "chargement" | "message" | "devise" | "cle" | "accessibilite" | "appareils" | "arborescence" | "asterisque" | "badge-coche" | "banque" | "batiment" | "bifurcation" | "billets" | "billets-envoi" | "billets-pile" | "boite" | "boite-de-reception" | "bouclier" | "bouclier-alerte" | "bouclier-coche" | "bouclier-coeur" | "bouclier-croix" | "bouclier-moitie" | "bouclier-recherche" | "bouclier-utilisateur" | "boussole" | "bouton-curseur" | "bulle-question" | "cadenas" | "cadenas-horloge" | "cadenas-ouvert" | "cadre-pied" | "cadre-texte" | "calendrier" | "calendrier-evenement" | "calendrier-horloge" | "calendrier-jour" | "calques" | "carte-bancaire" | "carte-bancaire-barre" | "carte-bancaire-cadenas" | "carte-contact" | "carte-identite" | "cartes-empilees" | "case-cochee" | "casse" | "cercle" | "cercle-alerte" | "cercle-chevron-bas" | "cercle-coche" | "cercle-coche-ouvert" | "cercle-croix" | "cercle-info" | "cercle-moins" | "cercle-plus" | "cercle-question" | "certificat" | "chandelier" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cloche" | "cloche-sonnerie" | "coche" | "code" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "connexion" | "contraste" | "copie" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "etoile" | "euro" | "fichier" | "fichier-image" | "fichier-pdf" | "fichier-texte" | "filtre" | "filtre-barre" | "filtre-lignes" | "fleche-bas" | "fleche-bas-gauche" | "fleche-bas-ligne" | "fleche-droite" | "fleche-gauche" | "fleche-haut" | "fleche-haut-droite" | "fleche-haut-ligne" | "fleche-large-haut" | "fleches-gauche-droite" | "flocon" | "flou" | "formes" | "globe" | "graphique-anneau" | "graphique-barres" | "graphique-barres-cadre" | "graphique-camembert" | "graphique-ligne" | "graphique-lignes" | "grille" | "grille-lignes" | "hexagone" | "historique" | "horloge" | "horloge-fleche" | "imprimer" | "interdit" | "jalons" | "jauge" | "lien" | "lien-externe" | "lignes" | "lignes-crayon" | "liste" | "liste-coche" | "liste-controle" | "liste-numerotee" | "luminosite" | "lune" | "maillet" | "maison" | "marque-page" | "menu" | "menu-ouvert" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "pieces" | "plus" | "pointeur" | "points" | "points-verticaux" | "portefeuille" | "portefeuille-cartes" | "presse-papiers-coche" | "presse-papiers-horloge" | "priorite-haute" | "rafraichir" | "recherche" | "recherche-barre" | "recherche-texte" | "rectangle-points" | "recu" | "redemarrer" | "reglages" | "regle" | "reseau-jauge" | "rotation-arriere" | "routeur" | "sablier" | "sablier-bas" | "sablier-haut" | "sac-argent" | "sans-contact" | "serveur" | "soleil" | "style-de-trait" | "synchro" | "synchro-probleme" | "tableau" | "tableau-de-bord" | "tableau-de-bord-plus" | "tablette" | "tabulation" | "telecharger" | "telephone-mobile" | "televerser" | "tendance-baisse" | "tendance-hausse" | "terminal" | "tirelire" | "triangle-alerte" | "triangle-bas" | "triangle-haut" | "trombone" | "utilisateur" | "utilisateur-crayon" | "utilisateurs" | "wifi" | "wifi-barre">;
|
|
1571
|
+
protected readonly iconeDeCopie: import("@angular/core").Signal<"iban" | "chargement" | "pause" | "message" | "essai" | "devise" | "cle" | "accessibilite" | "alimentation" | "appareil-photo" | "appareils" | "arborescence" | "asterisque" | "badge-coche" | "balance" | "banque" | "batiment" | "bifurcation" | "billets" | "billets-envoi" | "billets-pile" | "boite" | "boite-de-reception" | "bouclier" | "bouclier-alerte" | "bouclier-coche" | "bouclier-coeur" | "bouclier-croix" | "bouclier-moitie" | "bouclier-recherche" | "bouclier-utilisateur" | "boussole" | "bouton-curseur" | "bulle-question" | "cadenas" | "cadenas-horloge" | "cadenas-ouvert" | "cadre-pied" | "cadre-texte" | "calendrier" | "calendrier-evenement" | "calendrier-horloge" | "calendrier-jour" | "calques" | "carte-bancaire" | "carte-bancaire-barre" | "carte-bancaire-cadenas" | "carte-contact" | "carte-identite" | "cartes-empilees" | "case-cochee" | "casse" | "cercle" | "cercle-alerte" | "cercle-chevron-bas" | "cercle-coche" | "cercle-coche-ouvert" | "cercle-croix" | "cercle-info" | "cercle-moins" | "cercle-plus" | "cercle-question" | "certificat" | "chandelier" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cible" | "cloche" | "cloche-sonnerie" | "coche" | "code" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "comparer" | "connexion" | "contraste" | "copie" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "drapeau" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "etoile" | "euro" | "fichier" | "fichier-image" | "fichier-pdf" | "fichier-texte" | "filtre" | "filtre-barre" | "filtre-lignes" | "fleche-bas" | "fleche-bas-gauche" | "fleche-bas-ligne" | "fleche-droite" | "fleche-gauche" | "fleche-haut" | "fleche-haut-droite" | "fleche-haut-ligne" | "fleche-large-haut" | "fleches-gauche-droite" | "flocon" | "flou" | "formes" | "globe" | "graphique-anneau" | "graphique-barres" | "graphique-barres-cadre" | "graphique-camembert" | "graphique-ligne" | "graphique-lignes" | "grille" | "grille-lignes" | "hexagone" | "historique" | "horloge" | "horloge-fleche" | "imprimer" | "interdit" | "jalons" | "jauge" | "lecture" | "lien" | "lien-externe" | "lignes" | "lignes-crayon" | "liste" | "liste-coche" | "liste-controle" | "liste-numerotee" | "luminosite" | "lune" | "maillet" | "maison" | "marque-page" | "menu" | "menu-ouvert" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "passerelle" | "pieces" | "plus" | "pointeur" | "points" | "points-verticaux" | "portefeuille" | "portefeuille-cartes" | "presse-papiers-coche" | "presse-papiers-horloge" | "priorite-haute" | "rafraichir" | "recherche" | "recherche-barre" | "recherche-texte" | "rectangle-points" | "recu" | "redemarrer" | "reglages" | "regle" | "reseau" | "reseau-jauge" | "robot" | "rotation-arriere" | "routeur" | "sablier" | "sablier-bas" | "sablier-haut" | "sac-argent" | "sans-contact" | "serveur" | "soleil" | "style-de-trait" | "synchro" | "synchro-probleme" | "tableau" | "tableau-de-bord" | "tableau-de-bord-plus" | "tablette" | "tabulation" | "telecharger" | "telephone-mobile" | "televerser" | "tendance-baisse" | "tendance-hausse" | "terminal" | "tirelire" | "triangle-alerte" | "triangle-bas" | "triangle-haut" | "trombone" | "utilisateur" | "utilisateur-crayon" | "utilisateurs" | "visage" | "wifi" | "wifi-barre">;
|
|
1569
1572
|
protected readonly messageDeRefus: import("@angular/core").Signal<string>;
|
|
1570
1573
|
private minuterieDeConfirmation;
|
|
1571
1574
|
constructor();
|
|
@@ -1669,5 +1672,228 @@ export declare class StDocument {
|
|
|
1669
1672
|
};
|
|
1670
1673
|
}, {}, never, never, true, never>;
|
|
1671
1674
|
}
|
|
1675
|
+
/** Les bornes de l'opacite : visible sur l'ecran comme a l'impression, jamais au point de gener la lecture. */
|
|
1676
|
+
export declare const OPACITE_DE_FILIGRANE: {
|
|
1677
|
+
readonly min: 0.04;
|
|
1678
|
+
readonly defaut: 0.08;
|
|
1679
|
+
readonly max: 0.2;
|
|
1680
|
+
};
|
|
1681
|
+
/**
|
|
1682
|
+
* Le motif d'une tuile : le texte en diagonale (-30 degres), centre. Une image SVG `data:` (permise
|
|
1683
|
+
* par `img-src 'self' data:`), servie en MASQUE : la couleur est celle du theme (`texte`), lue par la
|
|
1684
|
+
* feuille, et non ecrite dans l'image.
|
|
1685
|
+
*/
|
|
1686
|
+
export declare function motifDeFiligrane(texte: string): string;
|
|
1687
|
+
/**
|
|
1688
|
+
* Filigrane (P08-04) : un texte repete en diagonale sur une zone, pour des resultats d'essai ou un
|
|
1689
|
+
* dossier imprimable (« Donnees fictives », « Specimen »). Le texte est fourni par l'application,
|
|
1690
|
+
* deja traduit.
|
|
1691
|
+
*
|
|
1692
|
+
* ```html
|
|
1693
|
+
* <section class="resultats">
|
|
1694
|
+
* <st-watermark texte="Donnees fictives" />
|
|
1695
|
+
* ...
|
|
1696
|
+
* </section>
|
|
1697
|
+
* ```
|
|
1698
|
+
*
|
|
1699
|
+
* - Il COUVRE son conteneur, que l'appelant positionne (`position: relative`), par-dessus son
|
|
1700
|
+
* contenu, a faible opacite (`opacite`, de 0,04 a 0,2 ; 0,08 par defaut) : le texte reste lisible,
|
|
1701
|
+
* a l'ecran comme a l'impression.
|
|
1702
|
+
* - Absent de l'arbre d'accessibilite : aucun noeud de texte (le motif est un masque CSS de l'hote,
|
|
1703
|
+
* `aria-hidden`), ce que la page dit deja en mots (banniere, titre). Il ne capte aucun pointeur.
|
|
1704
|
+
* - Motif SVG en ligne, sans requete ni reference `url(#...)` (que `<base href>` perd sous Safari et
|
|
1705
|
+
* Firefox), et sans attribut `style` statique : la politique de securite du contenu du socle suffit.
|
|
1706
|
+
* - Imprime par defaut (couleurs exactes) ; `[imprime]="false"` le retire du papier.
|
|
1707
|
+
*/
|
|
1708
|
+
export declare class StWatermark {
|
|
1709
|
+
/** Le texte repete, deja traduit (« Donnees fictives »). */
|
|
1710
|
+
readonly texte: import("@angular/core").InputSignal<string>;
|
|
1711
|
+
/** Present a l'impression (defaut) ; `false` le retire du papier. */
|
|
1712
|
+
readonly imprime: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1713
|
+
/** Opacite du texte, ramenee entre 0,04 et 0,2 ; 0,08 par defaut. */
|
|
1714
|
+
readonly opacite: import("@angular/core").InputSignalWithTransform<number, number | `${number}`>;
|
|
1715
|
+
protected readonly motif: import("@angular/core").Signal<string>;
|
|
1716
|
+
protected readonly opaciteLue: import("@angular/core").Signal<number>;
|
|
1717
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StWatermark, never>;
|
|
1718
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StWatermark, "st-watermark", never, {
|
|
1719
|
+
"texte": {
|
|
1720
|
+
"alias": "texte";
|
|
1721
|
+
"required": true;
|
|
1722
|
+
"isSignal": true;
|
|
1723
|
+
};
|
|
1724
|
+
"imprime": {
|
|
1725
|
+
"alias": "imprime";
|
|
1726
|
+
"required": false;
|
|
1727
|
+
"isSignal": true;
|
|
1728
|
+
};
|
|
1729
|
+
"opacite": {
|
|
1730
|
+
"alias": "opacite";
|
|
1731
|
+
"required": false;
|
|
1732
|
+
"isSignal": true;
|
|
1733
|
+
};
|
|
1734
|
+
}, {}, never, never, true, never>;
|
|
1735
|
+
}
|
|
1736
|
+
/**
|
|
1737
|
+
* Lu jusqu'au bout (P08-08) : exige la lecture d'un document jusqu'a sa fin SANS exclure le clavier
|
|
1738
|
+
* ni le lecteur d'ecran, ce que ferait un simple detecteur de defilement.
|
|
1739
|
+
*
|
|
1740
|
+
* ```html
|
|
1741
|
+
* <section stLuJusquAuBout #lecture="stLuJusquAuBout" (atteint)="journaliser()">
|
|
1742
|
+
* <st-document [document]="conditions()" />
|
|
1743
|
+
* </section>
|
|
1744
|
+
* <button
|
|
1745
|
+
* stButton
|
|
1746
|
+
* [indisponible]="!lecture.lu()"
|
|
1747
|
+
* [raisonIndisponible]="lecture.lu() ? null : t('lireJusquAuBout')"
|
|
1748
|
+
* >
|
|
1749
|
+
* Accepter
|
|
1750
|
+
* </button>
|
|
1751
|
+
* ```
|
|
1752
|
+
*
|
|
1753
|
+
* - **Une sentinelle focalisable** « Fin du document » (`libelleDeFin` la remplace) suit le
|
|
1754
|
+
* contenu, dans le conteneur : un conteneur qui defile (`overflow: auto`) la cache jusqu'a la fin.
|
|
1755
|
+
* - **Trois voies** : la sentinelle visible a l'ecran (observateur d'intersection, au-dessus de la
|
|
1756
|
+
* barre inferieure et de l'action flottante) ; la tabulation jusqu'a elle ; le lecteur d'ecran,
|
|
1757
|
+
* dont le curseur fait defiler la page jusqu'a elle ou y pose le focus (VoiceOver).
|
|
1758
|
+
* - **Une seule emission** de `atteint` ; `lu()` reste vrai ensuite. Un autre document se lit dans
|
|
1759
|
+
* un autre conteneur (`@for ... track version`).
|
|
1760
|
+
* - **Aucun acces global** : la fenetre est celle du `DOCUMENT` injecte, et rien n'est observe
|
|
1761
|
+
* avant le rendu au navigateur ; un prerendu ne produit aucun effet.
|
|
1762
|
+
*
|
|
1763
|
+
* Pose sur un element du gabarit (`section`, `div`), jamais sur un composant : un element ne porte
|
|
1764
|
+
* qu'un composant. Recette : `docs/recettes/accepter-apres-lecture.md`.
|
|
1765
|
+
*/
|
|
1766
|
+
export declare class StLuJusquAuBout {
|
|
1767
|
+
private readonly document;
|
|
1768
|
+
protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/donnees").LibellesDonnees>>;
|
|
1769
|
+
/** Le texte de la sentinelle, deja traduit ; `null` : « Fin du document ». */
|
|
1770
|
+
readonly libelleDeFin: import("@angular/core").InputSignal<string | null>;
|
|
1771
|
+
/** Emise UNE fois, quand la fin du document est atteinte. */
|
|
1772
|
+
readonly atteint: import("@angular/core").OutputEmitterRef<void>;
|
|
1773
|
+
private readonly etat;
|
|
1774
|
+
/** Vrai des que la fin est atteinte : a lire pour l'indisponibilite du bouton qui suit. */
|
|
1775
|
+
readonly lu: import("@angular/core").Signal<boolean>;
|
|
1776
|
+
protected readonly libelleLu: import("@angular/core").Signal<string>;
|
|
1777
|
+
/** `lang` de la sentinelle quand son texte vient du catalogue de repli (D-29). */
|
|
1778
|
+
protected readonly langueLue: import("@angular/core").Signal<string | null>;
|
|
1779
|
+
private readonly sentinelle;
|
|
1780
|
+
private observateur;
|
|
1781
|
+
private surveillant;
|
|
1782
|
+
constructor();
|
|
1783
|
+
/** La fin est atteinte : une seule emission, et plus rien a observer. */
|
|
1784
|
+
protected atteindre(): void;
|
|
1785
|
+
/**
|
|
1786
|
+
* Observe la sentinelle dans la fenetre, le bas de la fenetre retranche de ce qui le recouvre ;
|
|
1787
|
+
* re-arme quand la coquille change ces hauteurs (attribut `style` de `<html>`).
|
|
1788
|
+
*/
|
|
1789
|
+
private observer;
|
|
1790
|
+
private arreter;
|
|
1791
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StLuJusquAuBout, never>;
|
|
1792
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StLuJusquAuBout, "[stLuJusquAuBout]", ["stLuJusquAuBout"], {
|
|
1793
|
+
"libelleDeFin": {
|
|
1794
|
+
"alias": "libelleDeFin";
|
|
1795
|
+
"required": false;
|
|
1796
|
+
"isSignal": true;
|
|
1797
|
+
};
|
|
1798
|
+
}, {
|
|
1799
|
+
"atteint": "atteint";
|
|
1800
|
+
}, never, ["*"], true, never>;
|
|
1801
|
+
}
|
|
1802
|
+
/**
|
|
1803
|
+
* La fraicheur d'une donnee dont l'AGE compte (P08-12) : « A jour, il y a 12 s » ou « Perimee
|
|
1804
|
+
* depuis 2 min 05 s », en MOT et en FORME (une coche, un triangle), jamais par la couleur seule.
|
|
1805
|
+
*
|
|
1806
|
+
* ```html
|
|
1807
|
+
* <st-freshness [instant]="positions.lueA()" [seuil]="60" [libelle]="t('positions.titre')"
|
|
1808
|
+
* (perimee)="signaler()" />
|
|
1809
|
+
* ```
|
|
1810
|
+
*
|
|
1811
|
+
* - `instant` : la derniere lecture reussie (`lueA()` d'une `ressourceRafraichie`) ; `seuil` : l'age,
|
|
1812
|
+
* en secondes, au-dela duquel la donnee est perimee, fourni par le serveur ou l'application.
|
|
1813
|
+
* - **L'age se relit chaque seconde, onglet visible seulement** ; a son retour, le texte est juste.
|
|
1814
|
+
* - **Aucune region vivante** : le texte se reecrit chaque seconde, et une region l'annoncerait en
|
|
1815
|
+
* boucle. L'application annonce, elle, ce qui compte (`perimee`).
|
|
1816
|
+
* - **`perimee`** est emise une fois a chaque franchissement du seuil (et des la premiere lecture si
|
|
1817
|
+
* la donnee est deja perimee) ; une donnee rafraichie repasse « a jour ».
|
|
1818
|
+
*/
|
|
1819
|
+
export declare class StFreshness {
|
|
1820
|
+
private readonly document;
|
|
1821
|
+
private readonly locale;
|
|
1822
|
+
private readonly fuseau;
|
|
1823
|
+
protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/donnees").LibellesDonnees>>;
|
|
1824
|
+
/** L'instant de la donnee : `Date`, chaine ISO ou millisecondes. */
|
|
1825
|
+
readonly instant: import("@angular/core").InputSignal<string | number | Date>;
|
|
1826
|
+
/** L'age, en secondes, au-dela duquel la donnee est perimee. */
|
|
1827
|
+
readonly seuil: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
1828
|
+
/** Ce qu'est la donnee (« Positions »), deja traduit ; `null` : rien devant l'etat. */
|
|
1829
|
+
readonly libelle: import("@angular/core").InputSignal<string | null>;
|
|
1830
|
+
/** Emise a chaque franchissement du seuil. */
|
|
1831
|
+
readonly perimee: import("@angular/core").OutputEmitterRef<void>;
|
|
1832
|
+
private readonly maintenant;
|
|
1833
|
+
private readonly enMillisecondes;
|
|
1834
|
+
protected readonly estValide: import("@angular/core").Signal<boolean>;
|
|
1835
|
+
/** L'age en secondes, jamais negatif (une horloge du poste en retard sur le serveur). */
|
|
1836
|
+
private readonly age;
|
|
1837
|
+
protected readonly estPerimee: import("@angular/core").Signal<boolean>;
|
|
1838
|
+
protected readonly icone: import("@angular/core").Signal<"iban" | "chargement" | "pause" | "message" | "essai" | "devise" | "cle" | "accessibilite" | "alimentation" | "appareil-photo" | "appareils" | "arborescence" | "asterisque" | "badge-coche" | "balance" | "banque" | "batiment" | "bifurcation" | "billets" | "billets-envoi" | "billets-pile" | "boite" | "boite-de-reception" | "bouclier" | "bouclier-alerte" | "bouclier-coche" | "bouclier-coeur" | "bouclier-croix" | "bouclier-moitie" | "bouclier-recherche" | "bouclier-utilisateur" | "boussole" | "bouton-curseur" | "bulle-question" | "cadenas" | "cadenas-horloge" | "cadenas-ouvert" | "cadre-pied" | "cadre-texte" | "calendrier" | "calendrier-evenement" | "calendrier-horloge" | "calendrier-jour" | "calques" | "carte-bancaire" | "carte-bancaire-barre" | "carte-bancaire-cadenas" | "carte-contact" | "carte-identite" | "cartes-empilees" | "case-cochee" | "casse" | "cercle" | "cercle-alerte" | "cercle-chevron-bas" | "cercle-coche" | "cercle-coche-ouvert" | "cercle-croix" | "cercle-info" | "cercle-moins" | "cercle-plus" | "cercle-question" | "certificat" | "chandelier" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cible" | "cloche" | "cloche-sonnerie" | "coche" | "code" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "comparer" | "connexion" | "contraste" | "copie" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "drapeau" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "etoile" | "euro" | "fichier" | "fichier-image" | "fichier-pdf" | "fichier-texte" | "filtre" | "filtre-barre" | "filtre-lignes" | "fleche-bas" | "fleche-bas-gauche" | "fleche-bas-ligne" | "fleche-droite" | "fleche-gauche" | "fleche-haut" | "fleche-haut-droite" | "fleche-haut-ligne" | "fleche-large-haut" | "fleches-gauche-droite" | "flocon" | "flou" | "formes" | "globe" | "graphique-anneau" | "graphique-barres" | "graphique-barres-cadre" | "graphique-camembert" | "graphique-ligne" | "graphique-lignes" | "grille" | "grille-lignes" | "hexagone" | "historique" | "horloge" | "horloge-fleche" | "imprimer" | "interdit" | "jalons" | "jauge" | "lecture" | "lien" | "lien-externe" | "lignes" | "lignes-crayon" | "liste" | "liste-coche" | "liste-controle" | "liste-numerotee" | "luminosite" | "lune" | "maillet" | "maison" | "marque-page" | "menu" | "menu-ouvert" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "passerelle" | "pieces" | "plus" | "pointeur" | "points" | "points-verticaux" | "portefeuille" | "portefeuille-cartes" | "presse-papiers-coche" | "presse-papiers-horloge" | "priorite-haute" | "rafraichir" | "recherche" | "recherche-barre" | "recherche-texte" | "rectangle-points" | "recu" | "redemarrer" | "reglages" | "regle" | "reseau" | "reseau-jauge" | "robot" | "rotation-arriere" | "routeur" | "sablier" | "sablier-bas" | "sablier-haut" | "sac-argent" | "sans-contact" | "serveur" | "soleil" | "style-de-trait" | "synchro" | "synchro-probleme" | "tableau" | "tableau-de-bord" | "tableau-de-bord-plus" | "tablette" | "tabulation" | "telecharger" | "telephone-mobile" | "televerser" | "tendance-baisse" | "tendance-hausse" | "terminal" | "tirelire" | "triangle-alerte" | "triangle-bas" | "triangle-haut" | "trombone" | "utilisateur" | "utilisateur-crayon" | "utilisateurs" | "visage" | "wifi" | "wifi-barre">;
|
|
1839
|
+
protected readonly texte: import("@angular/core").Signal<string>;
|
|
1840
|
+
/** L'instant lisible par la machine (`<time datetime>`). */
|
|
1841
|
+
protected readonly iso: import("@angular/core").Signal<string | null>;
|
|
1842
|
+
constructor();
|
|
1843
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StFreshness, never>;
|
|
1844
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StFreshness, "st-freshness", never, {
|
|
1845
|
+
"instant": {
|
|
1846
|
+
"alias": "instant";
|
|
1847
|
+
"required": true;
|
|
1848
|
+
"isSignal": true;
|
|
1849
|
+
};
|
|
1850
|
+
"seuil": {
|
|
1851
|
+
"alias": "seuil";
|
|
1852
|
+
"required": true;
|
|
1853
|
+
"isSignal": true;
|
|
1854
|
+
};
|
|
1855
|
+
"libelle": {
|
|
1856
|
+
"alias": "libelle";
|
|
1857
|
+
"required": false;
|
|
1858
|
+
"isSignal": true;
|
|
1859
|
+
};
|
|
1860
|
+
}, {
|
|
1861
|
+
"perimee": "perimee";
|
|
1862
|
+
}, never, never, true, never>;
|
|
1863
|
+
}
|
|
1864
|
+
/**
|
|
1865
|
+
* Les libelles de `@starterlib/ui/donnees` (P08-08) : le catalogue par point d'entree (AD-10, D154),
|
|
1866
|
+
* comme ceux de la navigation et des formulaires. La langue suit celle du dictionnaire du tronc.
|
|
1867
|
+
*/
|
|
1868
|
+
export interface LibellesDonnees {
|
|
1869
|
+
/** La sentinelle de `stLuJusquAuBout`, apres le dernier mot d'un document (« Fin du document »). */
|
|
1870
|
+
readonly finDuDocument: string;
|
|
1871
|
+
/** `st-freshness` a jour, son age relatif en argument (« A jour, il y a 12 s »). */
|
|
1872
|
+
readonly aJour: (age: string) => string;
|
|
1873
|
+
/** `st-freshness` perimee, la duree depuis le seuil en argument (« Perimee depuis 2 min 05 s »). */
|
|
1874
|
+
readonly perimeeDepuis: (duree: string) => string;
|
|
1875
|
+
/** Le nom de la donnee devant son etat, espace finale comprise (« Positions : »). */
|
|
1876
|
+
readonly libelleDeLaDonnee: (libelle: string) => string;
|
|
1877
|
+
}
|
|
1878
|
+
export declare const LIBELLES_DONNEES_FR: LibellesDonnees;
|
|
1879
|
+
export declare const LIBELLES_DONNEES_EN: LibellesDonnees;
|
|
1880
|
+
/**
|
|
1881
|
+
* Les catalogues des donnees par langue (sous-etiquette primaire : `fr`, `en`). Une application qui
|
|
1882
|
+
* ajoute une langue au dictionnaire du tronc ajoute la sienne ici, par
|
|
1883
|
+
* `fournirLibellesDonnees({ de: ... })`.
|
|
1884
|
+
*/
|
|
1885
|
+
export declare const ST_LIBELLES_DONNEES: InjectionToken<Readonly<Record<string, LibellesDonnees>>>;
|
|
1886
|
+
/** Ajoute (ou remplace) des catalogues des donnees, par langue. */
|
|
1887
|
+
export declare function fournirLibellesDonnees(catalogues: Readonly<Record<string, LibellesDonnees>>): Provider;
|
|
1888
|
+
/**
|
|
1889
|
+
* Le catalogue de la langue du dictionnaire du tronc ; le francais quand la langue n'en a pas, un
|
|
1890
|
+
* repli signale en developpement (D-29). A appeler dans un contexte d'injection.
|
|
1891
|
+
*/
|
|
1892
|
+
export declare function libellesDesDonnees(): Signal<LibellesDonnees>;
|
|
1893
|
+
/**
|
|
1894
|
+
* Le catalogue des donnees ET la langue de son repli (`catalogueDuPointDEntree`) : `lang` de ce
|
|
1895
|
+
* qu'il ecrit seul (D-29). A appeler dans un contexte d'injection.
|
|
1896
|
+
*/
|
|
1897
|
+
export declare function catalogueDesDonnees(): Signal<CatalogueDuPointDEntree<LibellesDonnees>>;
|
|
1672
1898
|
|
|
1673
1899
|
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EstimateurDeForce } from "@starterlib/ui/saisie";
|
|
2
|
+
/** Les dictionnaires de langue que l'estimateur sait ajouter au dictionnaire commun. */
|
|
3
|
+
export type LangueDuDictionnaire = 'fr' | 'en';
|
|
4
|
+
/**
|
|
5
|
+
* Charge l'estimateur zxcvbn-ts (ADR web 0011) : son noyau, le dictionnaire commun et les claviers,
|
|
6
|
+
* puis un dictionnaire par langue demandee. Chaque morceau est un import DYNAMIQUE : l'outil de
|
|
7
|
+
* construction de l'application en fait des fichiers a part, et seuls les dictionnaires demandes se
|
|
8
|
+
* telechargent. Poids mesures (brotli 11, 2026-10-07) : noyau et commun 213 Ko ; avec le francais
|
|
9
|
+
* 471 Ko ; avec l'anglais 755 Ko ; les deux 1 009 Ko.
|
|
10
|
+
*
|
|
11
|
+
* Distance de Levenshtein active : un mot du dictionnaire a une ou deux lettres pres reste un mot du
|
|
12
|
+
* dictionnaire, et la jauge en devient plus prudente (`Motdepasse1!` passe de 2 a 1). Aucun appel
|
|
13
|
+
* reseau : le matcher des mots de passe divulgues (`@zxcvbn-ts/matcher-pwned`) n'est PAS branche,
|
|
14
|
+
* cette verification reste au serveur. Aucune traduction : le retour de la bibliotheque n'est pas
|
|
15
|
+
* montre.
|
|
16
|
+
*/
|
|
17
|
+
export declare function chargerEstimateurZxcvbn(langues?: readonly LangueDuDictionnaire[]): Promise<EstimateurDeForce>;
|
|
18
|
+
|
|
19
|
+
export {};
|
|
@@ -3,7 +3,7 @@ import { AnneesDuCalendrier, ContratDeChamp, ContratDeChampABornes, ControleDeSa
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import { InjectionToken, Provider, Signal } from "@angular/core";
|
|
5
5
|
import { AnnonceLocale, CatalogueDuPointDEntree, LibellesUi } from "@starterlib/ui";
|
|
6
|
-
import { DateIso, FrequenceDeRecurrence, HeureIso, PlageDeDates, Recurrence } from "@starterlib/util/valeurs";
|
|
6
|
+
import { DateIso, FrequenceDeRecurrence, HeureIso, MoisIso, PartieDeDate, PlageDeDates, Recurrence } from "@starterlib/util/valeurs";
|
|
7
7
|
/**
|
|
8
8
|
* L'envoi d'un formulaire valide. Il rend les refus du serveur, que Signal Forms place sous leur
|
|
9
9
|
* champ (`fieldTree`) et au recapitulatif, puis efface des que la valeur du champ change ; rien
|
|
@@ -257,6 +257,14 @@ export interface LibellesFormulaires {
|
|
|
257
257
|
readonly derniereEcheance: string;
|
|
258
258
|
readonly nombreDEcheances: string;
|
|
259
259
|
readonly recapitulatif: string;
|
|
260
|
+
/** Les cases de `st-memorable-date` (lot 267) ; l'annee est celle du tronc (`annee`). */
|
|
261
|
+
readonly jour: string;
|
|
262
|
+
readonly mois: string;
|
|
263
|
+
/** L'exemple dit AVANT la saisie, dans l'ordre de la langue (« 27 3 1990 »). */
|
|
264
|
+
readonly exempleDeDateMemorable: (exemple: string) => string;
|
|
265
|
+
/** Les parties qui manquent, dans l'ordre de la langue : jamais les trois (le champ est vide). */
|
|
266
|
+
readonly dateMemorableIncomplete: (manque: readonly PartieDeDate[]) => string;
|
|
267
|
+
readonly dateMemorableInexistante: (exemple: string) => string;
|
|
260
268
|
}
|
|
261
269
|
export declare const LIBELLES_FORMULAIRES_FR: LibellesFormulaires;
|
|
262
270
|
export declare const LIBELLES_FORMULAIRES_EN: LibellesFormulaires;
|
|
@@ -828,6 +836,129 @@ export declare class StDateRange extends ContratDeChamp implements FormValueCont
|
|
|
828
836
|
"value": "valueChange";
|
|
829
837
|
}, never, never, true, never>;
|
|
830
838
|
}
|
|
839
|
+
/**
|
|
840
|
+
* Mois d'une annee : un champ texte, au format de la langue courante (`mm/aaaa`). Composant bonus du
|
|
841
|
+
* lot 267 : sa condition d'entree, son poids et ce qu'il n'est pas sont dans `README.md` a cote.
|
|
842
|
+
*
|
|
843
|
+
* ```html
|
|
844
|
+
* <st-month-field libelle="Periode du releve" [formField]="releve.periode" />
|
|
845
|
+
* ```
|
|
846
|
+
*
|
|
847
|
+
* Le modele est un mois ISO `AAAA-MM` ou `null`, jamais un objet `Date` : un releve de septembre n'a
|
|
848
|
+
* ni jour ni fuseau.
|
|
849
|
+
*
|
|
850
|
+
* ⚠️ **Un champ texte, jamais `type="month"`** (D7 de l'audit de la vague 3, comme les dates et les
|
|
851
|
+
* heures) : le champ natif n'existe ni dans Firefox ni dans Safari de bureau, et suit la langue du
|
|
852
|
+
* NAVIGATEUR. Le format attendu et un exemple sont dits en aide, AVANT la saisie.
|
|
853
|
+
*
|
|
854
|
+
* ⚠️ **Rien n'est devine** (`lireMois`) : l'annee s'ecrit en quatre chiffres ; « 092026 » se lit
|
|
855
|
+
* 09/2026 (le pave numerique d'un telephone n'a pas de barre). Une saisie illisible garde le texte,
|
|
856
|
+
* vide le modele et rend le formulaire invalide, comme `st-date-field`.
|
|
857
|
+
*/
|
|
858
|
+
export declare class StMonthField extends ContratDeChamp implements FormValueControl<MoisIso | null> {
|
|
859
|
+
protected readonly libelles: import("@angular/core").Signal<import("@starterlib/ui").LibellesUi>;
|
|
860
|
+
private readonly locale;
|
|
861
|
+
readonly value: import("@angular/core").ModelSignal<string | null>;
|
|
862
|
+
readonly autocomplete: import("@angular/core").InputSignal<string | null>;
|
|
863
|
+
/**
|
|
864
|
+
* Quitte au moins une fois. Relie a un formulaire, `touched` le dit ; employe seul, rien ne le
|
|
865
|
+
* dirait, et une saisie illisible ne s'afficherait jamais.
|
|
866
|
+
*/
|
|
867
|
+
protected readonly quitte: import("@angular/core").WritableSignal<boolean>;
|
|
868
|
+
protected readonly saisie: import("@angular/forms/signals").TransformedValueSignal<string>;
|
|
869
|
+
/** La saisie est-elle illisible ? Le modele vaut alors `null`, comme un champ vide. */
|
|
870
|
+
readonly lectureInvalide: import("@angular/core").Signal<boolean>;
|
|
871
|
+
protected readonly aideLue: import("@angular/core").Signal<string>;
|
|
872
|
+
protected readonly erreursAffichees: import("@angular/core").Signal<readonly import("@starterlib/ui/saisie").ErreurAffichable[]>;
|
|
873
|
+
protected surSaisie(evenement: Event): void;
|
|
874
|
+
protected aLaSortieDuChamp(): void;
|
|
875
|
+
private formater;
|
|
876
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StMonthField, never>;
|
|
877
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StMonthField, "st-month-field", never, {
|
|
878
|
+
"value": {
|
|
879
|
+
"alias": "value";
|
|
880
|
+
"required": false;
|
|
881
|
+
"isSignal": true;
|
|
882
|
+
};
|
|
883
|
+
"autocomplete": {
|
|
884
|
+
"alias": "autocomplete";
|
|
885
|
+
"required": false;
|
|
886
|
+
"isSignal": true;
|
|
887
|
+
};
|
|
888
|
+
}, {
|
|
889
|
+
"value": "valueChange";
|
|
890
|
+
}, never, never, true, never>;
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* Date memorable : jour, mois et annee en trois cases numeriques, dans l'ordre de la langue
|
|
894
|
+
* courante. Composant bonus du lot 267 : sa condition d'entree, son poids et ce qu'il n'est pas sont
|
|
895
|
+
* dans `README.md` a cote.
|
|
896
|
+
*
|
|
897
|
+
* ```html
|
|
898
|
+
* <st-memorable-date libelle="Date de naissance" naissance [formField]="identite.naissance" />
|
|
899
|
+
* ```
|
|
900
|
+
*
|
|
901
|
+
* Une date qu'une personne CONNAIT (sa naissance, la delivrance d'un document) se tape plus vite et
|
|
902
|
+
* plus surement qu'elle ne se cherche dans un calendrier, qui fait remonter decennie par decennie.
|
|
903
|
+
* Le modele est une date ISO `AAAA-MM-JJ` ou `null`, jamais un objet `Date`.
|
|
904
|
+
*
|
|
905
|
+
* - Trois cases etiquetees (« Jour », « Mois », « Annee ») dans un `fieldset` dont la legende est
|
|
906
|
+
* la question ; l'exemple est dit AVANT la saisie, dans l'ordre de la langue (« 27 3 1990 »).
|
|
907
|
+
* - `naissance` pose `autocomplete="bday-day"`, `bday-month`, `bday-year` : le navigateur remplit.
|
|
908
|
+
* - Rien n'est devine : l'annee s'ecrit en quatre chiffres ; une date incomplete dit la partie qui
|
|
909
|
+
* manque, une date qui n'existe pas (31/02) le dit, et le modele reste `null` dans les deux cas.
|
|
910
|
+
*/
|
|
911
|
+
export declare class StMemorableDate extends ContratDeChamp implements FormValueControl<DateIso | null> {
|
|
912
|
+
private readonly libellesDuTronc;
|
|
913
|
+
private readonly locale;
|
|
914
|
+
private readonly catalogue;
|
|
915
|
+
protected readonly libelles: import("@angular/core").Signal<import("@starterlib/ui/formulaires").LibellesFormulaires>;
|
|
916
|
+
readonly value: import("@angular/core").ModelSignal<string | null>;
|
|
917
|
+
/** Une date de naissance : le navigateur peut remplir les trois cases. */
|
|
918
|
+
readonly naissance: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
919
|
+
private readonly cases;
|
|
920
|
+
protected readonly identifiant: string;
|
|
921
|
+
/** Quitte au moins une fois (le groupe entier) : une date incomplete se dit alors. */
|
|
922
|
+
protected readonly quitte: import("@angular/core").WritableSignal<boolean>;
|
|
923
|
+
protected readonly saisie: import("@angular/forms/signals").TransformedValueSignal<string>;
|
|
924
|
+
protected readonly parties: import("@angular/core").Signal<Record<PartieDeDate, string>>;
|
|
925
|
+
/** Les trois cases, dans l'ordre de la langue. */
|
|
926
|
+
protected readonly ordre: import("@angular/core").Signal<{
|
|
927
|
+
partie: PartieDeDate;
|
|
928
|
+
libelle: string;
|
|
929
|
+
longueur: number;
|
|
930
|
+
autocomplete: string;
|
|
931
|
+
}[]>;
|
|
932
|
+
/** La saisie est-elle illisible ou incomplete ? Le modele vaut alors `null`. */
|
|
933
|
+
readonly lectureInvalide: import("@angular/core").Signal<boolean>;
|
|
934
|
+
protected readonly aideLue: import("@angular/core").Signal<string>;
|
|
935
|
+
protected readonly erreursAffichees: import("@angular/core").Signal<readonly import("@starterlib/ui/saisie").ErreurAffichable[]>;
|
|
936
|
+
protected readonly enErreur: import("@angular/core").Signal<boolean>;
|
|
937
|
+
/** Signal Forms amene le focus sur la premiere case, dans l'ordre de la langue. */
|
|
938
|
+
focus(options?: FocusOptions): void;
|
|
939
|
+
protected surSaisie(partie: PartieDeDate, evenement: Event): void;
|
|
940
|
+
/** Le groupe n'est quitte que si le focus en SORT : passer du jour au mois n'est pas partir. */
|
|
941
|
+
protected aLaSortie(evenement: FocusEvent): void;
|
|
942
|
+
private libelleDe;
|
|
943
|
+
private exemple;
|
|
944
|
+
private lire;
|
|
945
|
+
private formater;
|
|
946
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StMemorableDate, never>;
|
|
947
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StMemorableDate, "st-memorable-date", never, {
|
|
948
|
+
"value": {
|
|
949
|
+
"alias": "value";
|
|
950
|
+
"required": false;
|
|
951
|
+
"isSignal": true;
|
|
952
|
+
};
|
|
953
|
+
"naissance": {
|
|
954
|
+
"alias": "naissance";
|
|
955
|
+
"required": false;
|
|
956
|
+
"isSignal": true;
|
|
957
|
+
};
|
|
958
|
+
}, {
|
|
959
|
+
"value": "valueChange";
|
|
960
|
+
}, never, never, true, never>;
|
|
961
|
+
}
|
|
831
962
|
/**
|
|
832
963
|
* Heure d'horloge : un champ texte, au format de la langue courante.
|
|
833
964
|
*
|