@starterlib/ui 0.14.0 → 0.15.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/README.md +27 -24
- package/assets/icones/catalogue.json +1 -1
- package/fesm2022/starterlib-ui-journal.mjs +514 -0
- package/fesm2022/starterlib-ui-journal.mjs.map +1 -0
- package/fesm2022/starterlib-ui-parcours.mjs +194 -9
- package/fesm2022/starterlib-ui-parcours.mjs.map +1 -1
- package/package.json +7 -3
- package/types/starterlib-ui-journal.d.ts +214 -0
- package/types/starterlib-ui-parcours.d.ts +72 -3
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ des dependances de pair : c'est l'application qui les installe, et elles doivent
|
|
|
14
14
|
etre **identiques dans l'hote et dans chaque remote**. Deux versions du socle
|
|
15
15
|
dans le meme navigateur, ce sont deux jeux de jetons d'injection.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## 22 points d'entree
|
|
18
18
|
|
|
19
19
|
Deux criteres, dans cet ordre (le douzieme, `sens`, le treizieme, `parcours`, et le
|
|
20
20
|
quatorzieme, `qr`, et le quinzieme, `messagerie`, depuis la 0.9.0 : lots 228, 243, 264 et 266 ;
|
|
@@ -23,7 +23,9 @@ pas sort du tronc ; `virtuel` depuis la 0.10.14 : lot 267, la liste virtuelle, b
|
|
|
23
23
|
ecrite, `packages/ui/virtuel/README.md` ; `force` depuis la 0.11.0 : l'adaptateur de la jauge de force
|
|
24
24
|
du mot de passe, ADR web 0011, charge a la demande et jamais partage en federation ; `graphiques`
|
|
25
25
|
depuis la 0.11.0 : courbe et tendance en SVG ecrit a la main, sans bibliotheque, P08-07 d'Aplomb ;
|
|
26
|
-
l'histogramme depuis la 0.12.0, P08-18
|
|
26
|
+
l'histogramme depuis la 0.12.0, P08-18 ; `journal` depuis la 0.15.0 : l'action journalisee de la console
|
|
27
|
+
d'Aplomb, reste R-407, chargee au geste ; la lecture de ses refus, `versApiError` du noyau, lui est passee
|
|
28
|
+
par l'application, `ui` ne connaissant pas `core`).
|
|
27
29
|
|
|
28
30
|
1. **La dependance** (ADR 0003) : un composant sort du tronc quand il traine un
|
|
29
31
|
pair lourd, et le point d'entree ou il va se choisit par ce qu'il EST pour
|
|
@@ -34,28 +36,29 @@ l'histogramme depuis la 0.12.0, P08-18).
|
|
|
34
36
|
lui coute plein tarif au premier ecran, et ne coute RIEN au remote qui
|
|
35
37
|
l'affiche, puisque le tronc y est deja charge.
|
|
36
38
|
|
|
37
|
-
| Point d'entree | Contenu | Pairs lourds importes statiquement
|
|
38
|
-
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
-
| `@starterlib/ui` | le TRONC, ce que la coquille peint : noyau, icone, titre, actions (bouton, bouton-icone, lien, segmente), etats de page (erreur, vide, attente, progression, hors ligne), retour, avatar, structure de la coquille (en-tete, pied, cartes, fil d'Ariane, titre et en-tete de page), transverses | aucun
|
|
40
|
-
| `@starterlib/ui/saisie` | les champs de formulaire, les groupes de cases et de radios, la matrice de cases, la rangee de champs, les consentements, les cartes de choix, le calendrier, le televersement, les etiquettes libres (`st-tag-input`), le champ d'adresse et la liste des pays (`st-address-fieldset`, `st-country-field`), la barre d'actions d'un formulaire (`st-form-actions`) | aucun (des TYPES d'`@angular/forms`)
|
|
41
|
-
| `@starterlib/ui/listes` | liste, liste de description, liste a verifier (`st-review-list`), table de donnees, pagination, tri, filtres, sections repliables (`st-disclosure`, `st-accordion`), documents stockes (`st-document-list`, `st-attachment`), chronologie (`st-timeline`), avant et apres (`st-value-change`, `st-change-list`, par sections), comparaison de versions (`st-version-compare`), actions de masse (`st-selection-bar`), export (`st-export-action`) | aucun
|
|
42
|
-
| `@starterlib/ui/donnees` | montant, date, date relative, compte, nombre (`st-number`), duree (`st-duration`), valeur masquee, indicateur chiffre, recapitulatif de montants (`st-amount-summary`), jauge (`st-meter`), echeance (`st-deadline`), personnes (`st-person`, `st-avatar-group`), groupe d'indicateurs (`st-stat-group`), barres et repartition (`st-bar-list`, `st-repartition`), valeur de reference a copier (`st-code`) | aucun
|
|
43
|
-
| `@starterlib/ui/libelles-en` | le catalogue anglais | aucun
|
|
44
|
-
| `@starterlib/ui/surfaces` | ce qui se pose AU-DESSUS de la page : menu, dialogues, tiroirs, messages ephemeres, aide contextuelle (`st-help-button`), bouton scinde (`st-split-button`), menu de compte (`st-user-menu`), confirmation legere (`[stPopconfirm]`) | `@angular/cdk/{a11y,dialog,keycodes,overlay,portal}`, `@angular/aria/menu`
|
|
45
|
-
| `@starterlib/ui/navigation` | la navigation laterale, la barre de navigation inferieure d'un petit ecran (`st-bottom-nav`), les onglets de navigation par routes (`st-nav-tabs`), le sommaire d'ancres (`st-page-nav`) | `@angular/cdk/layout` — et rien d'autre
|
|
46
|
-
| `@starterlib/ui/onglets` | les onglets et leurs panneaux | `@angular/aria/tabs`
|
|
47
|
-
| `@starterlib/ui/selection` | liste deroulante filtrante, choix multiple, recherche d'adresse (`st-address-search`), liste des pays filtrable (`st-country-combobox`) | `@angular/aria/{combobox,listbox}`, `@angular/cdk/overlay`
|
|
48
|
-
| `@starterlib/ui/arbre` | l'arborescence | `@angular/aria/tree`
|
|
49
|
-
| `@starterlib/ui/formulaires` | les champs qui LISENT leur saisie : montant, date, plage de dates, heure (`st-time-field`), plage de montants (`st-amount-range`), recurrence d'un virement (`st-recurrence-field`) ; bonus sous condition ecrite du lot 267 (README de chacun) : mois (`st-month-field`), date memorable (`st-memorable-date`) | le code d'`@angular/forms` (`transformedValue`)
|
|
50
|
-
| `@starterlib/ui/sens` | le sens d'ecriture du CDK tenu a jour avec `dir` (`provideSensDuDocument`, pose par l'hote) | `@angular/cdk/bidi` — et rien d'autre
|
|
51
|
-
| `@starterlib/ui/parcours` | les patrons composites d'un parcours : refus du serveur (`st-refusal`), issue d'une operation (`st-outcome`), assistant par etapes et son indicateur (`st-wizard`, `st-wizard-step`, `st-stepper`), dossier a completer (`st-task-list`), ceremonie de second facteur (`st-challenge`) et codes de secours (`st-recovery-codes`), demande de modification d'une valeur gouvernee (`st-change-request`) | aucun
|
|
52
|
-
| `@starterlib/ui/qr` | le code QR : l'encodeur pur (`encoderQr`, ISO/IEC 18004) et son dessin (`st-qr-code`), pour l'enrolement d'un authentificateur et le virement a scanner | aucun
|
|
53
|
-
| `@starterlib/ui/messagerie` | les echanges d'un dossier : le fil (`st-message-thread`), le message (`st-message`), le composeur (`st-message-composer`), en texte brut ; ses libelles avec lui (AD-10) | aucun
|
|
54
|
-
| `@starterlib/ui/etats` | l'etat d'un bloc de donnees et ses gabarits (`st-state`, `GABARITS_D_ETAT`), le squelette de chargement (`st-skeleton`), l'ecran d'attente d'une application (`st-splash-screen`) | aucun
|
|
55
|
-
| `@starterlib/ui/indicateurs` | pastille de statut (`st-status-pill`), badge et compteur ancre (`st-badge`, `st-badge-ancre`), etiquettes et groupes d'etiquettes (`st-tag`, `st-tag-group`, `st-groupe-d-etiquettes`) | aucun
|
|
56
|
-
| `@starterlib/ui/mise-en-page` | section, separateur, texte long (`st-text`), rangee de reglage (`st-settings-row`), groupe de boutons (`st-button-group`) | aucun
|
|
57
|
-
| `@starterlib/ui/force` | l'adaptateur de la jauge de force du mot de passe (`chargerEstimateurZxcvbn`, ADR web 0011) : jamais importe statiquement, charge a la premiere frappe par `fournirEstimateurDeForce`, jamais partage en federation | `@zxcvbn-ts/*`, pairs OPTIONNELS, par imports dynamiques
|
|
58
|
-
| `@starterlib/ui/virtuel` | la liste virtuelle (`st-virtual-list`, `stVirtualItem`) et le tableau virtualise (`st-virtual-table`, P08-19) : des milliers a des centaines de milliers de lignes affichees ensemble, la fenetre seule rendue ; bonus sous condition ecrite du lot 267 (`packages/ui/virtuel/README.md`) | `@angular/cdk/scrolling` — et rien d'autre
|
|
39
|
+
| Point d'entree | Contenu | Pairs lourds importes statiquement |
|
|
40
|
+
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
|
|
41
|
+
| `@starterlib/ui` | le TRONC, ce que la coquille peint : noyau, icone, titre, actions (bouton, bouton-icone, lien, segmente), etats de page (erreur, vide, attente, progression, hors ligne), retour, avatar, structure de la coquille (en-tete, pied, cartes, fil d'Ariane, titre et en-tete de page), transverses | aucun |
|
|
42
|
+
| `@starterlib/ui/saisie` | les champs de formulaire, les groupes de cases et de radios, la matrice de cases, la rangee de champs, les consentements, les cartes de choix, le calendrier, le televersement, les etiquettes libres (`st-tag-input`), le champ d'adresse et la liste des pays (`st-address-fieldset`, `st-country-field`), la barre d'actions d'un formulaire (`st-form-actions`) | aucun (des TYPES d'`@angular/forms`) |
|
|
43
|
+
| `@starterlib/ui/listes` | liste, liste de description, liste a verifier (`st-review-list`), table de donnees, pagination, tri, filtres, sections repliables (`st-disclosure`, `st-accordion`), documents stockes (`st-document-list`, `st-attachment`), chronologie (`st-timeline`), avant et apres (`st-value-change`, `st-change-list`, par sections), comparaison de versions (`st-version-compare`), actions de masse (`st-selection-bar`), export (`st-export-action`) | aucun |
|
|
44
|
+
| `@starterlib/ui/donnees` | montant, date, date relative, compte, nombre (`st-number`), duree (`st-duration`), valeur masquee, indicateur chiffre, recapitulatif de montants (`st-amount-summary`), jauge (`st-meter`), echeance (`st-deadline`), personnes (`st-person`, `st-avatar-group`), groupe d'indicateurs (`st-stat-group`), barres et repartition (`st-bar-list`, `st-repartition`), valeur de reference a copier (`st-code`) | aucun |
|
|
45
|
+
| `@starterlib/ui/libelles-en` | le catalogue anglais | aucun |
|
|
46
|
+
| `@starterlib/ui/surfaces` | ce qui se pose AU-DESSUS de la page : menu, dialogues, tiroirs, messages ephemeres, aide contextuelle (`st-help-button`), bouton scinde (`st-split-button`), menu de compte (`st-user-menu`), confirmation legere (`[stPopconfirm]`) | `@angular/cdk/{a11y,dialog,keycodes,overlay,portal}`, `@angular/aria/menu` |
|
|
47
|
+
| `@starterlib/ui/navigation` | la navigation laterale, la barre de navigation inferieure d'un petit ecran (`st-bottom-nav`), les onglets de navigation par routes (`st-nav-tabs`), le sommaire d'ancres (`st-page-nav`) | `@angular/cdk/layout` — et rien d'autre |
|
|
48
|
+
| `@starterlib/ui/onglets` | les onglets et leurs panneaux | `@angular/aria/tabs` |
|
|
49
|
+
| `@starterlib/ui/selection` | liste deroulante filtrante, choix multiple, recherche d'adresse (`st-address-search`), liste des pays filtrable (`st-country-combobox`) | `@angular/aria/{combobox,listbox}`, `@angular/cdk/overlay` |
|
|
50
|
+
| `@starterlib/ui/arbre` | l'arborescence | `@angular/aria/tree` |
|
|
51
|
+
| `@starterlib/ui/formulaires` | les champs qui LISENT leur saisie : montant, date, plage de dates, heure (`st-time-field`), plage de montants (`st-amount-range`), recurrence d'un virement (`st-recurrence-field`) ; bonus sous condition ecrite du lot 267 (README de chacun) : mois (`st-month-field`), date memorable (`st-memorable-date`) | le code d'`@angular/forms` (`transformedValue`) |
|
|
52
|
+
| `@starterlib/ui/sens` | le sens d'ecriture du CDK tenu a jour avec `dir` (`provideSensDuDocument`, pose par l'hote) | `@angular/cdk/bidi` — et rien d'autre |
|
|
53
|
+
| `@starterlib/ui/parcours` | les patrons composites d'un parcours : refus du serveur (`st-refusal`), issue d'une operation (`st-outcome`), assistant par etapes et son indicateur (`st-wizard`, `st-wizard-step`, `st-stepper`), dossier a completer (`st-task-list`), ceremonie de second facteur (`st-challenge`) et codes de secours (`st-recovery-codes`), demande de modification d'une valeur gouvernee (`st-change-request`) | aucun |
|
|
54
|
+
| `@starterlib/ui/qr` | le code QR : l'encodeur pur (`encoderQr`, ISO/IEC 18004) et son dessin (`st-qr-code`), pour l'enrolement d'un authentificateur et le virement a scanner | aucun |
|
|
55
|
+
| `@starterlib/ui/messagerie` | les echanges d'un dossier : le fil (`st-message-thread`), le message (`st-message`), le composeur (`st-message-composer`), en texte brut ; ses libelles avec lui (AD-10) | aucun |
|
|
56
|
+
| `@starterlib/ui/etats` | l'etat d'un bloc de donnees et ses gabarits (`st-state`, `GABARITS_D_ETAT`), le squelette de chargement (`st-skeleton`), l'ecran d'attente d'une application (`st-splash-screen`) | aucun |
|
|
57
|
+
| `@starterlib/ui/indicateurs` | pastille de statut (`st-status-pill`), badge et compteur ancre (`st-badge`, `st-badge-ancre`), etiquettes et groupes d'etiquettes (`st-tag`, `st-tag-group`, `st-groupe-d-etiquettes`) | aucun |
|
|
58
|
+
| `@starterlib/ui/mise-en-page` | section, separateur, texte long (`st-text`), rangee de reglage (`st-settings-row`), groupe de boutons (`st-button-group`) | aucun |
|
|
59
|
+
| `@starterlib/ui/force` | l'adaptateur de la jauge de force du mot de passe (`chargerEstimateurZxcvbn`, ADR web 0011) : jamais importe statiquement, charge a la premiere frappe par `fournirEstimateurDeForce`, jamais partage en federation | `@zxcvbn-ts/*`, pairs OPTIONNELS, par imports dynamiques |
|
|
60
|
+
| `@starterlib/ui/virtuel` | la liste virtuelle (`st-virtual-list`, `stVirtualItem`) et le tableau virtualise (`st-virtual-table`, P08-19) : des milliers a des centaines de milliers de lignes affichees ensemble, la fenetre seule rendue ; bonus sous condition ecrite du lot 267 (`packages/ui/virtuel/README.md`) | `@angular/cdk/scrolling` — et rien d'autre |
|
|
61
|
+
| `@starterlib/ui/journal` | l'action journalisee (reste R-407 d'Aplomb) : le dialogue d'une ecriture qui entre au journal d'audit (`st-action-journalisee`, ouvert par `ouvrirUneActionJournalisee` : motif envoye avec l'action, cle d'idempotence de l'intention, refus dits par leur code) et sa confirmation (`st-confirmation-journalisee` : reference d'audit, lien vers le journal filtre) ; charge au geste, jamais par la coquille | `@angular/forms/signals`, `@angular/router` ; le dialogue du CDK par `surfaces` |
|
|
59
62
|
|
|
60
63
|
```ts
|
|
61
64
|
import { StButton, StCard, StError } from '@starterlib/ui';
|
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, InjectionToken, computed, inject, input, signal } from "@angular/core";
|
|
3
|
+
import { StButton, StInlineMessage, StLink, catalogueDuPointDEntree } from "@starterlib/ui";
|
|
4
|
+
import { RouterLink } from "@angular/router";
|
|
5
|
+
import { StOutcome, StRefusal } from "@starterlib/ui/parcours";
|
|
6
|
+
import { FormField, form, maxLength, minLength, required } from "@angular/forms/signals";
|
|
7
|
+
import { StForm } from "@starterlib/ui/formulaires";
|
|
8
|
+
import { StErrorSummary, StSelect, StTextarea } from "@starterlib/ui/saisie";
|
|
9
|
+
import { DONNEES_DE_DIALOGUE, StDialog, StDialogActions, StDialogClose, StDialogContent, StDialogTitle } from "@starterlib/ui/surfaces";
|
|
10
|
+
const LONGUEUR_MINIMALE_DU_MOTIF = 10;
|
|
11
|
+
const LONGUEUR_MAXIMALE_DU_MOTIF = 500;
|
|
12
|
+
const FORME_DE_REFERENCE = /^[A-Za-z0-9][A-Za-z0-9-]{3,63}$/u;
|
|
13
|
+
function lireLaReferenceDAudit(corps) {
|
|
14
|
+
if (typeof corps !== "object" || corps === null) return null;
|
|
15
|
+
const reference = corps.referenceDAudit;
|
|
16
|
+
return typeof reference === "string" && FORME_DE_REFERENCE.test(reference) ? reference : null;
|
|
17
|
+
}
|
|
18
|
+
function motifRefuse(erreur) {
|
|
19
|
+
return erreur.code === "PLATFORM_VALIDATION_FAILED" && erreur.erreurs.some((violation) => violation.champ === "motif");
|
|
20
|
+
}
|
|
21
|
+
const LIBELLES_DU_JOURNAL_FR = {
|
|
22
|
+
aideDuMotif: (minimum) => `Pourquoi ce geste\u00a0? ${String(minimum)} caract\u00e8res au moins\u00a0; le motif part avec l\u2019action et entre au journal d\u2019audit.`,
|
|
23
|
+
journal: "Ce geste, son motif et votre nom sont inscrits au journal d’audit, qui ne se modifie pas.",
|
|
24
|
+
annuler: "Annuler",
|
|
25
|
+
fermer: "Fermer",
|
|
26
|
+
journalisee: "Action journalisée",
|
|
27
|
+
reference: "Référence d’audit",
|
|
28
|
+
sansReference: "L’action est faite, mais le serveur n’a pas rendu sa référence d’audit\xA0: retrouvez-la au journal.",
|
|
29
|
+
voirAuJournal: "Voir au journal d’audit",
|
|
30
|
+
titreDuRefus: "Geste refusé",
|
|
31
|
+
horsLigne: "Hors ligne\xA0: rien n’a été envoyé. Refaites le geste une fois la connexion revenue.",
|
|
32
|
+
motifRequis: "Le motif est obligatoire\xA0: dites pourquoi vous faites ce geste.",
|
|
33
|
+
refusGenerique: "Le geste n’a pas abouti. Réessayez\xA0; si le refus revient, transmettez le code et la trace à l’équipe technique.",
|
|
34
|
+
refusDuSocle: {
|
|
35
|
+
PLATFORM_RATE_LIMITED: "Trop de demandes en peu de temps\xA0: réessayez à la fin du décompte.",
|
|
36
|
+
PLATFORM_ACCESS_DENIED: "Votre rôle ne permet pas ce geste.",
|
|
37
|
+
PLATFORM_ELEVATION_REQUIRED: "Ce geste demande une authentification plus forte\xA0: confirmez-vous, puis recommencez.",
|
|
38
|
+
PLATFORM_OPTIMISTIC_LOCK: "La donnée a changé depuis votre lecture\xA0: rechargez-la avant de recommencer.",
|
|
39
|
+
PLATFORM_IDEMPOTENCY_CONFLICT: "Ce geste a déjà été envoyé avec d’autres valeurs\xA0: rechargez la page avant de recommencer.",
|
|
40
|
+
PLATFORM_VALIDATION_FAILED: "La demande n’est pas valide\xA0: vérifiez les champs.",
|
|
41
|
+
PLATFORM_DEPENDENCY_UNAVAILABLE: "Le service est momentanément indisponible\xA0: réessayez dans un instant."
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const LIBELLES_DU_JOURNAL_EN = {
|
|
45
|
+
aideDuMotif: (minimum) => `Why this action? At least ${String(minimum)} characters; the reason is sent with the action and goes into the audit log.`,
|
|
46
|
+
journal: "This action, its reason and your name are recorded in the audit log, which cannot be altered.",
|
|
47
|
+
annuler: "Cancel",
|
|
48
|
+
fermer: "Close",
|
|
49
|
+
journalisee: "Action recorded",
|
|
50
|
+
reference: "Audit reference",
|
|
51
|
+
sansReference: "The action is done, but the server did not return its audit reference: find it in the audit log.",
|
|
52
|
+
voirAuJournal: "View in the audit log",
|
|
53
|
+
titreDuRefus: "Action refused",
|
|
54
|
+
horsLigne: "Offline: nothing was sent. Take the action again once the connection is back.",
|
|
55
|
+
motifRequis: "A reason is required: say why you are taking this action.",
|
|
56
|
+
refusGenerique: "The action did not go through. Try again; if it is refused again, send the code and the trace to the technical team.",
|
|
57
|
+
refusDuSocle: {
|
|
58
|
+
PLATFORM_RATE_LIMITED: "Too many requests in a short time: try again when the countdown ends.",
|
|
59
|
+
PLATFORM_ACCESS_DENIED: "Your role does not allow this action.",
|
|
60
|
+
PLATFORM_ELEVATION_REQUIRED: "This action requires a stronger sign-in: confirm it, then try again.",
|
|
61
|
+
PLATFORM_OPTIMISTIC_LOCK: "The data changed since you read it: reload it before trying again.",
|
|
62
|
+
PLATFORM_IDEMPOTENCY_CONFLICT: "This action was already sent with other values: reload the page before trying again.",
|
|
63
|
+
PLATFORM_VALIDATION_FAILED: "The request is not valid: check the fields.",
|
|
64
|
+
PLATFORM_DEPENDENCY_UNAVAILABLE: "The service is temporarily unavailable: try again in a moment."
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const ST_LIBELLES_DU_JOURNAL = new InjectionToken("ST_LIBELLES_DU_JOURNAL", {
|
|
68
|
+
providedIn: "root",
|
|
69
|
+
factory: () => ({
|
|
70
|
+
fr: LIBELLES_DU_JOURNAL_FR,
|
|
71
|
+
en: LIBELLES_DU_JOURNAL_EN
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
function fournirLibellesDuJournal(catalogues) {
|
|
75
|
+
return {
|
|
76
|
+
provide: ST_LIBELLES_DU_JOURNAL,
|
|
77
|
+
useValue: {
|
|
78
|
+
fr: LIBELLES_DU_JOURNAL_FR,
|
|
79
|
+
en: LIBELLES_DU_JOURNAL_EN,
|
|
80
|
+
...catalogues
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function libellesDuJournal() {
|
|
85
|
+
const catalogue = catalogueDuJournal();
|
|
86
|
+
return computed(() => catalogue().libelles);
|
|
87
|
+
}
|
|
88
|
+
function catalogueDuJournal() {
|
|
89
|
+
return catalogueDuPointDEntree("@starterlib/ui/journal", inject(ST_LIBELLES_DU_JOURNAL), LIBELLES_DU_JOURNAL_FR, "fournirLibellesDuJournal");
|
|
90
|
+
}
|
|
91
|
+
var StConfirmationJournalisee = class StConfirmationJournalisee {
|
|
92
|
+
catalogue = catalogueDuJournal();
|
|
93
|
+
reference = input.required(...ngDevMode ? [{ debugName: "reference" }] : /* istanbul ignore next */ []);
|
|
94
|
+
titre = input(null, ...ngDevMode ? [{ debugName: "titre" }] : /* istanbul ignore next */ []);
|
|
95
|
+
niveauDuTitre = input(2, ...ngDevMode ? [{ debugName: "niveauDuTitre" }] : /* istanbul ignore next */ []);
|
|
96
|
+
adresse = input(null, ...ngDevMode ? [{ debugName: "adresse" }] : /* istanbul ignore next */ []);
|
|
97
|
+
precision = input(null, ...ngDevMode ? [{ debugName: "precision" }] : /* istanbul ignore next */ []);
|
|
98
|
+
lien = computed(() => this.reference() === null ? null : this.adresse(), ...ngDevMode ? [{ debugName: "lien" }] : /* istanbul ignore next */ []);
|
|
99
|
+
phrase = computed(() => {
|
|
100
|
+
const libelles = this.catalogue().libelles;
|
|
101
|
+
const phrases = [this.reference() === null ? libelles.sansReference : null, this.precision()].filter((texte) => texte !== null && texte !== "");
|
|
102
|
+
return phrases.length === 0 ? null : phrases.join(" ");
|
|
103
|
+
}, ...ngDevMode ? [{ debugName: "phrase" }] : /* istanbul ignore next */ []);
|
|
104
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
105
|
+
minVersion: "12.0.0",
|
|
106
|
+
version: "22.2.2",
|
|
107
|
+
ngImport: i0,
|
|
108
|
+
type: StConfirmationJournalisee,
|
|
109
|
+
deps: [],
|
|
110
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
111
|
+
});
|
|
112
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
113
|
+
minVersion: "17.0.0",
|
|
114
|
+
version: "22.2.2",
|
|
115
|
+
type: StConfirmationJournalisee,
|
|
116
|
+
isStandalone: true,
|
|
117
|
+
selector: "st-confirmation-journalisee",
|
|
118
|
+
inputs: {
|
|
119
|
+
reference: {
|
|
120
|
+
classPropertyName: "reference",
|
|
121
|
+
publicName: "reference",
|
|
122
|
+
isSignal: true,
|
|
123
|
+
isRequired: true,
|
|
124
|
+
transformFunction: null
|
|
125
|
+
},
|
|
126
|
+
titre: {
|
|
127
|
+
classPropertyName: "titre",
|
|
128
|
+
publicName: "titre",
|
|
129
|
+
isSignal: true,
|
|
130
|
+
isRequired: false,
|
|
131
|
+
transformFunction: null
|
|
132
|
+
},
|
|
133
|
+
niveauDuTitre: {
|
|
134
|
+
classPropertyName: "niveauDuTitre",
|
|
135
|
+
publicName: "niveauDuTitre",
|
|
136
|
+
isSignal: true,
|
|
137
|
+
isRequired: false,
|
|
138
|
+
transformFunction: null
|
|
139
|
+
},
|
|
140
|
+
adresse: {
|
|
141
|
+
classPropertyName: "adresse",
|
|
142
|
+
publicName: "adresse",
|
|
143
|
+
isSignal: true,
|
|
144
|
+
isRequired: false,
|
|
145
|
+
transformFunction: null
|
|
146
|
+
},
|
|
147
|
+
precision: {
|
|
148
|
+
classPropertyName: "precision",
|
|
149
|
+
publicName: "precision",
|
|
150
|
+
isSignal: true,
|
|
151
|
+
isRequired: false,
|
|
152
|
+
transformFunction: null
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
ngImport: i0,
|
|
156
|
+
template: "<!-- L'issue d'une ecriture journalisee : son titre, la reference d'audit, et le journal filtre sur elle. -->\n@let libelles = catalogue().libelles;\n<st-outcome\n issue=\"succes\"\n disposition=\"compacte\"\n [niveauDuTitre]=\"niveauDuTitre()\"\n [titre]=\"titre() ?? libelles.journalisee\"\n [reference]=\"reference()\"\n [etiquetteDeReference]=\"libelles.reference\"\n [precision]=\"phrase()\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n>\n @if (lien(); as adresse) {\n <a actions stLink [routerLink]=\"adresse.chemin\" [queryParams]=\"adresse.parametres\">{{\n libelles.voirAuJournal\n }}</a>\n }\n</st-outcome>\n",
|
|
157
|
+
dependencies: [
|
|
158
|
+
{
|
|
159
|
+
kind: "directive",
|
|
160
|
+
type: RouterLink,
|
|
161
|
+
selector: "[routerLink]",
|
|
162
|
+
inputs: [
|
|
163
|
+
"target",
|
|
164
|
+
"queryParams",
|
|
165
|
+
"fragment",
|
|
166
|
+
"queryParamsHandling",
|
|
167
|
+
"state",
|
|
168
|
+
"info",
|
|
169
|
+
"relativeTo",
|
|
170
|
+
"preserveFragment",
|
|
171
|
+
"skipLocationChange",
|
|
172
|
+
"replaceUrl",
|
|
173
|
+
"browserUrl",
|
|
174
|
+
"routerLink"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
kind: "component",
|
|
179
|
+
type: StLink,
|
|
180
|
+
selector: "a[stLink]",
|
|
181
|
+
inputs: [
|
|
182
|
+
"variante",
|
|
183
|
+
"externe",
|
|
184
|
+
"mentionExterne",
|
|
185
|
+
"iconeAvant",
|
|
186
|
+
"iconeApres"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
kind: "component",
|
|
191
|
+
type: StOutcome,
|
|
192
|
+
selector: "st-outcome",
|
|
193
|
+
inputs: [
|
|
194
|
+
"issue",
|
|
195
|
+
"titre",
|
|
196
|
+
"precision",
|
|
197
|
+
"reference",
|
|
198
|
+
"etiquetteDeReference",
|
|
199
|
+
"horodatage",
|
|
200
|
+
"etiquetteDHorodatage",
|
|
201
|
+
"niveauDuTitre",
|
|
202
|
+
"disposition"
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
210
|
+
minVersion: "12.0.0",
|
|
211
|
+
version: "22.2.2",
|
|
212
|
+
ngImport: i0,
|
|
213
|
+
type: StConfirmationJournalisee,
|
|
214
|
+
decorators: [{
|
|
215
|
+
type: Component,
|
|
216
|
+
args: [{
|
|
217
|
+
selector: "st-confirmation-journalisee",
|
|
218
|
+
imports: [
|
|
219
|
+
RouterLink,
|
|
220
|
+
StLink,
|
|
221
|
+
StOutcome
|
|
222
|
+
],
|
|
223
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
224
|
+
template: "<!-- L'issue d'une ecriture journalisee : son titre, la reference d'audit, et le journal filtre sur elle. -->\n@let libelles = catalogue().libelles;\n<st-outcome\n issue=\"succes\"\n disposition=\"compacte\"\n [niveauDuTitre]=\"niveauDuTitre()\"\n [titre]=\"titre() ?? libelles.journalisee\"\n [reference]=\"reference()\"\n [etiquetteDeReference]=\"libelles.reference\"\n [precision]=\"phrase()\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n>\n @if (lien(); as adresse) {\n <a actions stLink [routerLink]=\"adresse.chemin\" [queryParams]=\"adresse.parametres\">{{\n libelles.voirAuJournal\n }}</a>\n }\n</st-outcome>\n"
|
|
225
|
+
}]
|
|
226
|
+
}],
|
|
227
|
+
propDecorators: {
|
|
228
|
+
reference: [{
|
|
229
|
+
type: i0.Input,
|
|
230
|
+
args: [{
|
|
231
|
+
isSignal: true,
|
|
232
|
+
alias: "reference",
|
|
233
|
+
required: true
|
|
234
|
+
}]
|
|
235
|
+
}],
|
|
236
|
+
titre: [{
|
|
237
|
+
type: i0.Input,
|
|
238
|
+
args: [{
|
|
239
|
+
isSignal: true,
|
|
240
|
+
alias: "titre",
|
|
241
|
+
required: false
|
|
242
|
+
}]
|
|
243
|
+
}],
|
|
244
|
+
niveauDuTitre: [{
|
|
245
|
+
type: i0.Input,
|
|
246
|
+
args: [{
|
|
247
|
+
isSignal: true,
|
|
248
|
+
alias: "niveauDuTitre",
|
|
249
|
+
required: false
|
|
250
|
+
}]
|
|
251
|
+
}],
|
|
252
|
+
adresse: [{
|
|
253
|
+
type: i0.Input,
|
|
254
|
+
args: [{
|
|
255
|
+
isSignal: true,
|
|
256
|
+
alias: "adresse",
|
|
257
|
+
required: false
|
|
258
|
+
}]
|
|
259
|
+
}],
|
|
260
|
+
precision: [{
|
|
261
|
+
type: i0.Input,
|
|
262
|
+
args: [{
|
|
263
|
+
isSignal: true,
|
|
264
|
+
alias: "precision",
|
|
265
|
+
required: false
|
|
266
|
+
}]
|
|
267
|
+
}]
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
function cleDeLIntention() {
|
|
271
|
+
const source = globalThis.crypto;
|
|
272
|
+
if (typeof source.randomUUID === "function") return source.randomUUID();
|
|
273
|
+
const octets = source.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
|
|
274
|
+
octets[6] = (octets[6] ?? 0) & 15 | 64;
|
|
275
|
+
octets[8] = (octets[8] ?? 0) & 63 | 128;
|
|
276
|
+
const hex = Array.from(octets, (octet) => octet.toString(16).padStart(2, "0")).join("");
|
|
277
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
278
|
+
}
|
|
279
|
+
var StActionJournalisee = class StActionJournalisee {
|
|
280
|
+
demande = inject(DONNEES_DE_DIALOGUE);
|
|
281
|
+
catalogue = catalogueDuJournal();
|
|
282
|
+
cle = cleDeLIntention();
|
|
283
|
+
minimum = this.demande.longueurMinimaleDuMotif ?? 10;
|
|
284
|
+
maximum = this.demande.longueurMaximaleDuMotif ?? 500;
|
|
285
|
+
refus = signal(null, ...ngDevMode ? [{ debugName: "refus" }] : /* istanbul ignore next */ []);
|
|
286
|
+
attente = signal(false, ...ngDevMode ? [{ debugName: "attente" }] : /* istanbul ignore next */ []);
|
|
287
|
+
resultat = signal(null, ...ngDevMode ? [{ debugName: "resultat" }] : /* istanbul ignore next */ []);
|
|
288
|
+
action = form(signal({ motif: "" }), (chemin) => {
|
|
289
|
+
required(chemin.motif);
|
|
290
|
+
if (this.demande.motifs === void 0) {
|
|
291
|
+
minLength(chemin.motif, this.minimum);
|
|
292
|
+
maxLength(chemin.motif, this.maximum);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
adresse = computed(() => {
|
|
296
|
+
const reference = this.resultat()?.referenceDAudit ?? null;
|
|
297
|
+
return reference === null || this.demande.adresseDuJournal === void 0 ? null : this.demande.adresseDuJournal(reference);
|
|
298
|
+
}, ...ngDevMode ? [{ debugName: "adresse" }] : /* istanbul ignore next */ []);
|
|
299
|
+
precision = computed(() => this.resultat() === null ? null : this.demande.precisionDeLaConfirmation?.() ?? null, ...ngDevMode ? [{ debugName: "precision" }] : /* istanbul ignore next */ []);
|
|
300
|
+
envoyer = async () => {
|
|
301
|
+
this.refus.set(null);
|
|
302
|
+
const motif = this.action().value().motif.trim();
|
|
303
|
+
try {
|
|
304
|
+
const corps = await this.demande.executer(motif, this.cle);
|
|
305
|
+
this.resultat.set({ referenceDAudit: lireLaReferenceDAudit(corps) });
|
|
306
|
+
} catch (erreur) {
|
|
307
|
+
const refus = this.demande.versApiError(erreur);
|
|
308
|
+
this.refus.set(refus);
|
|
309
|
+
this.attente.set(refus.status === 429);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
message(erreur) {
|
|
313
|
+
const libelles = this.catalogue().libelles;
|
|
314
|
+
if (erreur.horsLigne) return libelles.horsLigne;
|
|
315
|
+
if (motifRefuse(erreur)) return libelles.motifRequis;
|
|
316
|
+
return this.demande.messageDuRefus?.(erreur) ?? libelles.refusDuSocle[erreur.code] ?? libelles.refusGenerique;
|
|
317
|
+
}
|
|
318
|
+
connu(erreur) {
|
|
319
|
+
return erreur.horsLigne || motifRefuse(erreur) || (this.demande.messageDuRefus?.(erreur) ?? null) !== null || Object.hasOwn(this.catalogue().libelles.refusDuSocle, erreur.code);
|
|
320
|
+
}
|
|
321
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
322
|
+
minVersion: "12.0.0",
|
|
323
|
+
version: "22.2.2",
|
|
324
|
+
ngImport: i0,
|
|
325
|
+
type: StActionJournalisee,
|
|
326
|
+
deps: [],
|
|
327
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
328
|
+
});
|
|
329
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
330
|
+
minVersion: "17.0.0",
|
|
331
|
+
version: "22.2.2",
|
|
332
|
+
type: StActionJournalisee,
|
|
333
|
+
isStandalone: true,
|
|
334
|
+
selector: "st-action-journalisee",
|
|
335
|
+
ngImport: i0,
|
|
336
|
+
template: "<!-- Une action journalisee : la consigne, le motif, le refus s'il y en a un ; apres l'action, sa confirmation. Annuler\n d'abord, l'action ensuite (ordre des actions du socle). -->\n@let libelles = catalogue().libelles;\n<st-dialog-title icone=\"parchemin\">{{ demande.titre }}</st-dialog-title>\n@let fait = resultat();\n@if (fait === null) {\n <form\n class=\"st-action-journalisee\"\n [stForm]=\"action\"\n [envoyerAvec]=\"envoyer\"\n #formulaire=\"stForm\"\n >\n <st-dialog-content>\n <div class=\"st-action-journalisee__corps\">\n <p class=\"st-action-journalisee__consigne\">{{ demande.consigne }}</p>\n @let erreur = refus();\n @if (erreur !== null) {\n <st-refusal\n [titre]=\"libelles.titreDuRefus\"\n [erreur]=\"erreur\"\n [message]=\"message(erreur)\"\n [codeInconnu]=\"!connu(erreur)\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n (attenteTerminee)=\"attente.set(false)\"\n />\n }\n <st-error-summary />\n @if (demande.motifs; as motifs) {\n <st-select\n [libelle]=\"demande.libelleDuMotif\"\n [aide]=\"demande.aideDuMotif ?? null\"\n [options]=\"motifs\"\n [formField]=\"action.motif\"\n />\n } @else {\n <st-textarea\n [libelle]=\"demande.libelleDuMotif\"\n [aide]=\"demande.aideDuMotif ?? libelles.aideDuMotif(minimum)\"\n [formField]=\"action.motif\"\n />\n }\n <st-inline-message ton=\"information\" [attr.lang]=\"catalogue().langueDeRepli\">{{\n libelles.journal\n }}</st-inline-message>\n </div>\n </st-dialog-content>\n <st-dialog-actions>\n <button\n stButton\n type=\"button\"\n variante=\"danger\"\n iconeAvant=\"croix\"\n stDialogClose\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ libelles.annuler }}\n </button>\n <button\n stButton\n type=\"submit\"\n [variante]=\"demande.retrait === true ? 'danger' : 'primaire'\"\n [iconeAvant]=\"demande.retrait === true ? 'croix' : 'parchemin'\"\n [chargement]=\"formulaire.enCours()\"\n [indisponible]=\"attente()\"\n >\n {{ demande.libelleDuBouton }}\n </button>\n </st-dialog-actions>\n </form>\n} @else {\n <st-dialog-content>\n <st-confirmation-journalisee\n [reference]=\"fait.referenceDAudit\"\n [titre]=\"demande.titreDeLaConfirmation ?? null\"\n [niveauDuTitre]=\"3\"\n [adresse]=\"adresse()\"\n [precision]=\"precision()\"\n />\n </st-dialog-content>\n <st-dialog-actions>\n <button\n stButton\n type=\"button\"\n variante=\"primaire\"\n iconeAvant=\"croix\"\n [stDialogClose]=\"fait\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ libelles.fermer }}\n </button>\n </st-dialog-actions>\n}\n",
|
|
337
|
+
styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:flex;flex:1 1 auto;flex-direction:column;min-block-size:0}.st-action-journalisee{display:contents}.st-action-journalisee__corps{display:grid;gap:var(--st-espacement-4)}.st-action-journalisee__consigne{margin:0;font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte)}\n"],
|
|
338
|
+
dependencies: [
|
|
339
|
+
{
|
|
340
|
+
kind: "directive",
|
|
341
|
+
type: FormField,
|
|
342
|
+
selector: "[formField]",
|
|
343
|
+
inputs: ["formField"],
|
|
344
|
+
exportAs: ["formField"]
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
kind: "component",
|
|
348
|
+
type: StButton,
|
|
349
|
+
selector: "button[stButton]",
|
|
350
|
+
inputs: [
|
|
351
|
+
"variante",
|
|
352
|
+
"taille",
|
|
353
|
+
"pleineLargeur",
|
|
354
|
+
"iconeAvant",
|
|
355
|
+
"iconeApres",
|
|
356
|
+
"chargement",
|
|
357
|
+
"indisponible",
|
|
358
|
+
"raisonIndisponible"
|
|
359
|
+
]
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
kind: "component",
|
|
363
|
+
type: StConfirmationJournalisee,
|
|
364
|
+
selector: "st-confirmation-journalisee",
|
|
365
|
+
inputs: [
|
|
366
|
+
"reference",
|
|
367
|
+
"titre",
|
|
368
|
+
"niveauDuTitre",
|
|
369
|
+
"adresse",
|
|
370
|
+
"precision"
|
|
371
|
+
]
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
kind: "component",
|
|
375
|
+
type: StDialogActions,
|
|
376
|
+
selector: "st-dialog-actions",
|
|
377
|
+
inputs: ["alignement"]
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
kind: "directive",
|
|
381
|
+
type: StDialogClose,
|
|
382
|
+
selector: "button[stDialogClose]",
|
|
383
|
+
inputs: ["stDialogClose"]
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
kind: "component",
|
|
387
|
+
type: StDialogContent,
|
|
388
|
+
selector: "st-dialog-content",
|
|
389
|
+
inputs: ["rembourrage"]
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
kind: "component",
|
|
393
|
+
type: StDialogTitle,
|
|
394
|
+
selector: "st-dialog-title",
|
|
395
|
+
inputs: [
|
|
396
|
+
"icone",
|
|
397
|
+
"ton",
|
|
398
|
+
"sousTitre",
|
|
399
|
+
"niveau",
|
|
400
|
+
"fermeture"
|
|
401
|
+
]
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
kind: "component",
|
|
405
|
+
type: StErrorSummary,
|
|
406
|
+
selector: "st-error-summary",
|
|
407
|
+
inputs: [
|
|
408
|
+
"erreurs",
|
|
409
|
+
"titre",
|
|
410
|
+
"niveau",
|
|
411
|
+
"introduction",
|
|
412
|
+
"tentative"
|
|
413
|
+
]
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
kind: "directive",
|
|
417
|
+
type: StForm,
|
|
418
|
+
selector: "form[stForm]",
|
|
419
|
+
inputs: ["stForm", "envoyerAvec"],
|
|
420
|
+
outputs: ["envoi"],
|
|
421
|
+
exportAs: ["stForm"]
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
kind: "component",
|
|
425
|
+
type: StInlineMessage,
|
|
426
|
+
selector: "st-inline-message",
|
|
427
|
+
inputs: [
|
|
428
|
+
"ton",
|
|
429
|
+
"identifiant",
|
|
430
|
+
"annonce",
|
|
431
|
+
"encadre",
|
|
432
|
+
"icone"
|
|
433
|
+
]
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
kind: "component",
|
|
437
|
+
type: StRefusal,
|
|
438
|
+
selector: "st-refusal",
|
|
439
|
+
inputs: [
|
|
440
|
+
"erreur",
|
|
441
|
+
"message",
|
|
442
|
+
"titre",
|
|
443
|
+
"codeInconnu",
|
|
444
|
+
"rejeuEnCours",
|
|
445
|
+
"rechargementEnCours"
|
|
446
|
+
],
|
|
447
|
+
outputs: [
|
|
448
|
+
"rejeu",
|
|
449
|
+
"rechargement",
|
|
450
|
+
"attenteTerminee"
|
|
451
|
+
]
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
kind: "component",
|
|
455
|
+
type: StSelect,
|
|
456
|
+
selector: "st-select",
|
|
457
|
+
inputs: [
|
|
458
|
+
"options",
|
|
459
|
+
"texteVide",
|
|
460
|
+
"autocomplete",
|
|
461
|
+
"icone",
|
|
462
|
+
"presentation",
|
|
463
|
+
"variante"
|
|
464
|
+
]
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
kind: "component",
|
|
468
|
+
type: StTextarea,
|
|
469
|
+
selector: "st-textarea",
|
|
470
|
+
inputs: ["lignes", "lignesMax"]
|
|
471
|
+
}
|
|
472
|
+
],
|
|
473
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
474
|
+
});
|
|
475
|
+
};
|
|
476
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
477
|
+
minVersion: "12.0.0",
|
|
478
|
+
version: "22.2.2",
|
|
479
|
+
ngImport: i0,
|
|
480
|
+
type: StActionJournalisee,
|
|
481
|
+
decorators: [{
|
|
482
|
+
type: Component,
|
|
483
|
+
args: [{
|
|
484
|
+
selector: "st-action-journalisee",
|
|
485
|
+
imports: [
|
|
486
|
+
FormField,
|
|
487
|
+
StButton,
|
|
488
|
+
StConfirmationJournalisee,
|
|
489
|
+
StDialogActions,
|
|
490
|
+
StDialogClose,
|
|
491
|
+
StDialogContent,
|
|
492
|
+
StDialogTitle,
|
|
493
|
+
StErrorSummary,
|
|
494
|
+
StForm,
|
|
495
|
+
StInlineMessage,
|
|
496
|
+
StRefusal,
|
|
497
|
+
StSelect,
|
|
498
|
+
StTextarea
|
|
499
|
+
],
|
|
500
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
501
|
+
template: "<!-- Une action journalisee : la consigne, le motif, le refus s'il y en a un ; apres l'action, sa confirmation. Annuler\n d'abord, l'action ensuite (ordre des actions du socle). -->\n@let libelles = catalogue().libelles;\n<st-dialog-title icone=\"parchemin\">{{ demande.titre }}</st-dialog-title>\n@let fait = resultat();\n@if (fait === null) {\n <form\n class=\"st-action-journalisee\"\n [stForm]=\"action\"\n [envoyerAvec]=\"envoyer\"\n #formulaire=\"stForm\"\n >\n <st-dialog-content>\n <div class=\"st-action-journalisee__corps\">\n <p class=\"st-action-journalisee__consigne\">{{ demande.consigne }}</p>\n @let erreur = refus();\n @if (erreur !== null) {\n <st-refusal\n [titre]=\"libelles.titreDuRefus\"\n [erreur]=\"erreur\"\n [message]=\"message(erreur)\"\n [codeInconnu]=\"!connu(erreur)\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n (attenteTerminee)=\"attente.set(false)\"\n />\n }\n <st-error-summary />\n @if (demande.motifs; as motifs) {\n <st-select\n [libelle]=\"demande.libelleDuMotif\"\n [aide]=\"demande.aideDuMotif ?? null\"\n [options]=\"motifs\"\n [formField]=\"action.motif\"\n />\n } @else {\n <st-textarea\n [libelle]=\"demande.libelleDuMotif\"\n [aide]=\"demande.aideDuMotif ?? libelles.aideDuMotif(minimum)\"\n [formField]=\"action.motif\"\n />\n }\n <st-inline-message ton=\"information\" [attr.lang]=\"catalogue().langueDeRepli\">{{\n libelles.journal\n }}</st-inline-message>\n </div>\n </st-dialog-content>\n <st-dialog-actions>\n <button\n stButton\n type=\"button\"\n variante=\"danger\"\n iconeAvant=\"croix\"\n stDialogClose\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ libelles.annuler }}\n </button>\n <button\n stButton\n type=\"submit\"\n [variante]=\"demande.retrait === true ? 'danger' : 'primaire'\"\n [iconeAvant]=\"demande.retrait === true ? 'croix' : 'parchemin'\"\n [chargement]=\"formulaire.enCours()\"\n [indisponible]=\"attente()\"\n >\n {{ demande.libelleDuBouton }}\n </button>\n </st-dialog-actions>\n </form>\n} @else {\n <st-dialog-content>\n <st-confirmation-journalisee\n [reference]=\"fait.referenceDAudit\"\n [titre]=\"demande.titreDeLaConfirmation ?? null\"\n [niveauDuTitre]=\"3\"\n [adresse]=\"adresse()\"\n [precision]=\"precision()\"\n />\n </st-dialog-content>\n <st-dialog-actions>\n <button\n stButton\n type=\"button\"\n variante=\"primaire\"\n iconeAvant=\"croix\"\n [stDialogClose]=\"fait\"\n [attr.lang]=\"catalogue().langueDeRepli\"\n >\n {{ libelles.fermer }}\n </button>\n </st-dialog-actions>\n}\n",
|
|
502
|
+
styles: [".st-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}:host([hidden]){display:none!important}:host{display:flex;flex:1 1 auto;flex-direction:column;min-block-size:0}.st-action-journalisee{display:contents}.st-action-journalisee__corps{display:grid;gap:var(--st-espacement-4)}.st-action-journalisee__consigne{margin:0;font-size:var(--st-taille-sm);line-height:var(--st-interligne-sm);color:var(--st-couleur-texte)}\n"]
|
|
503
|
+
}]
|
|
504
|
+
}]
|
|
505
|
+
});
|
|
506
|
+
function ouvrirUneActionJournalisee(injecteur, demande) {
|
|
507
|
+
return injecteur.get(StDialog).ouvrir(StActionJournalisee, {
|
|
508
|
+
donnees: demande,
|
|
509
|
+
etiquette: demande.titre
|
|
510
|
+
}).ferme;
|
|
511
|
+
}
|
|
512
|
+
export { LIBELLES_DU_JOURNAL_EN, LIBELLES_DU_JOURNAL_FR, LONGUEUR_MAXIMALE_DU_MOTIF, LONGUEUR_MINIMALE_DU_MOTIF, ST_LIBELLES_DU_JOURNAL, StActionJournalisee, StConfirmationJournalisee, catalogueDuJournal, fournirLibellesDuJournal, libellesDuJournal, lireLaReferenceDAudit, motifRefuse, ouvrirUneActionJournalisee };
|
|
513
|
+
|
|
514
|
+
//# sourceMappingURL=starterlib-ui-journal.mjs.map
|