ngx-recipe-forms 0.1.2 → 0.1.3
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 +3 -3
- package/fesm2022/ngx-recipe-forms.mjs +130 -19
- package/fesm2022/ngx-recipe-forms.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngx-recipe-forms.d.ts +47 -6
package/package.json
CHANGED
|
@@ -868,6 +868,8 @@ export type RecipeUiTemplateType = RecipeTemplatedControlType | RecipeUiPartEnum
|
|
|
868
868
|
export interface ResolveMessageInput {
|
|
869
869
|
readonly errors: readonly RecipeValidationError[];
|
|
870
870
|
readonly touched: boolean;
|
|
871
|
+
/** Valeur changée par la personne (`dirty()` de Signal Forms) ; `reset` la remet à faux. */
|
|
872
|
+
readonly dirty: boolean;
|
|
871
873
|
readonly submitted: boolean;
|
|
872
874
|
readonly fieldMessages?: Readonly<Partial<Record<string, string>>>;
|
|
873
875
|
readonly recipeMessages?: Readonly<Partial<Record<string, string>>>;
|
|
@@ -1092,7 +1094,7 @@ export declare class RecipeLayout {
|
|
|
1092
1094
|
}
|
|
1093
1095
|
/**
|
|
1094
1096
|
* Résolution des messages. Priorités : champ, puis recette, puis défaut, puis message brut, puis `unknown`.
|
|
1095
|
-
* Un champ
|
|
1097
|
+
* Un champ ni modifié ni touché n'affiche rien avant une tentative de soumission ; seule la première erreur est affichée.
|
|
1096
1098
|
* Erreur serveur : son `message`, que l'appelant a déjà traduit ; sans message, la clé `errors.<code>`.
|
|
1097
1099
|
*/
|
|
1098
1100
|
export declare class RecipeMessages {
|
|
@@ -1172,7 +1174,7 @@ export declare class RecipeSections {
|
|
|
1172
1174
|
/** Clés de chaque section (identifiant → clés), sous-sections comprises ; une section sans champ a une liste vide. */
|
|
1173
1175
|
static index(nodes: readonly FormNode<AnyModel>[]): ReadonlyMap<string, readonly string[]>;
|
|
1174
1176
|
/**
|
|
1175
|
-
* Nombre de champs en erreur : champs touchés ou après une tentative de soumission, champs cachés ignorés,
|
|
1177
|
+
* Nombre de champs en erreur : champs modifiés ou touchés, ou après une tentative de soumission, champs cachés ignorés,
|
|
1176
1178
|
* erreur d'un groupe lié comptée une fois, erreurs serveur comprises.
|
|
1177
1179
|
*/
|
|
1178
1180
|
static errorCount(input: SectionErrorCountInput): number;
|
|
@@ -1409,7 +1411,10 @@ export declare class RecipeFormComponent<TModel extends object> {
|
|
|
1409
1411
|
private readonly placedErrors;
|
|
1410
1412
|
private readonly placedWarnings;
|
|
1411
1413
|
constructor();
|
|
1412
|
-
/**
|
|
1414
|
+
/**
|
|
1415
|
+
* À appeler après un `reset` du formulaire par l'appelant : les messages restent alors cachés tant que le champ
|
|
1416
|
+
* n'est ni modifié (`dirty`), ni touché, ni soumis.
|
|
1417
|
+
*/
|
|
1413
1418
|
resetSubmitAttempt(): void;
|
|
1414
1419
|
/** Pas de `submit()` de Signal Forms : il renvoie une Promise, que les règles du dépôt interdisent. */
|
|
1415
1420
|
protected onSubmit(event: Event): void;
|
|
@@ -1514,8 +1519,8 @@ export declare class RecipeNodeComponent {
|
|
|
1514
1519
|
/** Les champs d'un contrôle lié sont rendus comme des champs ordinaires, construits à partir du contrôle. */
|
|
1515
1520
|
protected readonly linkedFieldNodes: Signal<readonly FieldNode<AnyModel, string, AnyModel>[]>;
|
|
1516
1521
|
/**
|
|
1517
|
-
* L'erreur posée sur `errorTarget` apparaît dès que ce champ est touché, comme la bordure rouge de son
|
|
1518
|
-
* (
|
|
1522
|
+
* L'erreur posée sur `errorTarget` apparaît dès que ce champ est modifié ou touché, comme la bordure rouge de son
|
|
1523
|
+
* wrapper (invalide, et modifié ou touché) ; celle du groupe, quand chaque champ lié a été modifié ou touché.
|
|
1519
1524
|
* Après une soumission, elle apparaît dans les deux cas.
|
|
1520
1525
|
*/
|
|
1521
1526
|
protected readonly linkedMessage: Signal<FieldMessage | undefined>;
|
|
@@ -1918,6 +1923,7 @@ export declare class CheckboxComponent implements FormCheckboxControl {
|
|
|
1918
1923
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
1919
1924
|
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
1920
1925
|
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
1926
|
+
readonly dirty: import("@angular/core").InputSignal<boolean>;
|
|
1921
1927
|
readonly describedBy: import("@angular/core").InputSignal<string | undefined>;
|
|
1922
1928
|
readonly touch: import("@angular/core").OutputEmitterRef<void>;
|
|
1923
1929
|
private readonly control;
|
|
@@ -1963,6 +1969,11 @@ export declare class CheckboxComponent implements FormCheckboxControl {
|
|
|
1963
1969
|
"required": false;
|
|
1964
1970
|
"isSignal": true;
|
|
1965
1971
|
};
|
|
1972
|
+
"dirty": {
|
|
1973
|
+
"alias": "dirty";
|
|
1974
|
+
"required": false;
|
|
1975
|
+
"isSignal": true;
|
|
1976
|
+
};
|
|
1966
1977
|
"describedBy": {
|
|
1967
1978
|
"alias": "describedBy";
|
|
1968
1979
|
"required": false;
|
|
@@ -1990,6 +2001,7 @@ export declare class DatePickerMultipleComponent implements FormValueControl<rea
|
|
|
1990
2001
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
1991
2002
|
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
1992
2003
|
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
2004
|
+
readonly dirty: import("@angular/core").InputSignal<boolean>;
|
|
1993
2005
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
1994
2006
|
/** Nom du groupe que forme le contrôle (le libellé du champ), posé en `aria-label`. */
|
|
1995
2007
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -2053,6 +2065,11 @@ export declare class DatePickerMultipleComponent implements FormValueControl<rea
|
|
|
2053
2065
|
"required": false;
|
|
2054
2066
|
"isSignal": true;
|
|
2055
2067
|
};
|
|
2068
|
+
"dirty": {
|
|
2069
|
+
"alias": "dirty";
|
|
2070
|
+
"required": false;
|
|
2071
|
+
"isSignal": true;
|
|
2072
|
+
};
|
|
2056
2073
|
"required": {
|
|
2057
2074
|
"alias": "required";
|
|
2058
2075
|
"required": false;
|
|
@@ -2097,6 +2114,7 @@ export declare class DatePickerComponent implements FormValueControl<Date | null
|
|
|
2097
2114
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
2098
2115
|
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
2099
2116
|
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
2117
|
+
readonly dirty: import("@angular/core").InputSignal<boolean>;
|
|
2100
2118
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
2101
2119
|
readonly describedBy: import("@angular/core").InputSignal<string | undefined>;
|
|
2102
2120
|
readonly touch: import("@angular/core").OutputEmitterRef<void>;
|
|
@@ -2143,6 +2161,11 @@ export declare class DatePickerComponent implements FormValueControl<Date | null
|
|
|
2143
2161
|
"required": false;
|
|
2144
2162
|
"isSignal": true;
|
|
2145
2163
|
};
|
|
2164
|
+
"dirty": {
|
|
2165
|
+
"alias": "dirty";
|
|
2166
|
+
"required": false;
|
|
2167
|
+
"isSignal": true;
|
|
2168
|
+
};
|
|
2146
2169
|
"required": {
|
|
2147
2170
|
"alias": "required";
|
|
2148
2171
|
"required": false;
|
|
@@ -2172,6 +2195,7 @@ export declare class InputNumberComponent implements FormValueControl<number | n
|
|
|
2172
2195
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
2173
2196
|
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
2174
2197
|
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
2198
|
+
readonly dirty: import("@angular/core").InputSignal<boolean>;
|
|
2175
2199
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
2176
2200
|
/** Pas des flèches du clavier ; 1 quand il n'est pas fourni. */
|
|
2177
2201
|
readonly step: import("@angular/core").InputSignal<number | undefined>;
|
|
@@ -2231,6 +2255,11 @@ export declare class InputNumberComponent implements FormValueControl<number | n
|
|
|
2231
2255
|
"required": false;
|
|
2232
2256
|
"isSignal": true;
|
|
2233
2257
|
};
|
|
2258
|
+
"dirty": {
|
|
2259
|
+
"alias": "dirty";
|
|
2260
|
+
"required": false;
|
|
2261
|
+
"isSignal": true;
|
|
2262
|
+
};
|
|
2234
2263
|
"required": {
|
|
2235
2264
|
"alias": "required";
|
|
2236
2265
|
"required": false;
|
|
@@ -2264,7 +2293,7 @@ export declare class InputNumberComponent implements FormValueControl<number | n
|
|
|
2264
2293
|
/**
|
|
2265
2294
|
* Wrapper par défaut d'un champ texte, `FormValueControl<string>`.
|
|
2266
2295
|
* L'application hôte peut le remplacer par celui de son design system, de même sélecteur et de même contrat
|
|
2267
|
-
* (`value`, `disabled`, `invalid`, `touched`, `touch`).
|
|
2296
|
+
* (`value`, `disabled`, `invalid`, `touched`, `dirty`, `touch`).
|
|
2268
2297
|
*/
|
|
2269
2298
|
export declare class InputTextComponent implements FormValueControl<string> {
|
|
2270
2299
|
readonly value: import("@angular/core").ModelSignal<string>;
|
|
@@ -2274,6 +2303,7 @@ export declare class InputTextComponent implements FormValueControl<string> {
|
|
|
2274
2303
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
2275
2304
|
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
2276
2305
|
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
2306
|
+
readonly dirty: import("@angular/core").InputSignal<boolean>;
|
|
2277
2307
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
2278
2308
|
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
2279
2309
|
/** Clavier proposé ; `text` quand il n'est pas fourni. */
|
|
@@ -2329,6 +2359,11 @@ export declare class InputTextComponent implements FormValueControl<string> {
|
|
|
2329
2359
|
"required": false;
|
|
2330
2360
|
"isSignal": true;
|
|
2331
2361
|
};
|
|
2362
|
+
"dirty": {
|
|
2363
|
+
"alias": "dirty";
|
|
2364
|
+
"required": false;
|
|
2365
|
+
"isSignal": true;
|
|
2366
|
+
};
|
|
2332
2367
|
"required": {
|
|
2333
2368
|
"alias": "required";
|
|
2334
2369
|
"required": false;
|
|
@@ -2478,6 +2513,7 @@ export declare class SelectComponent<T> implements FormValueControl<T | null> {
|
|
|
2478
2513
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
2479
2514
|
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
2480
2515
|
readonly touched: import("@angular/core").InputSignal<boolean>;
|
|
2516
|
+
readonly dirty: import("@angular/core").InputSignal<boolean>;
|
|
2481
2517
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
2482
2518
|
readonly showClear: import("@angular/core").InputSignal<boolean>;
|
|
2483
2519
|
/**
|
|
@@ -2544,6 +2580,11 @@ export declare class SelectComponent<T> implements FormValueControl<T | null> {
|
|
|
2544
2580
|
"required": false;
|
|
2545
2581
|
"isSignal": true;
|
|
2546
2582
|
};
|
|
2583
|
+
"dirty": {
|
|
2584
|
+
"alias": "dirty";
|
|
2585
|
+
"required": false;
|
|
2586
|
+
"isSignal": true;
|
|
2587
|
+
};
|
|
2547
2588
|
"required": {
|
|
2548
2589
|
"alias": "required";
|
|
2549
2590
|
"required": false;
|