@3kles/kles-material-dynamicforms 21.0.2 → 21.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3kles/kles-material-dynamicforms",
3
- "version": "21.0.2",
3
+ "version": "21.2.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/3kles-lab/klesmaterialdynamicforms"
@@ -16,21 +16,16 @@
16
16
  "license": "ISC",
17
17
  "peerDependencies": {
18
18
  "@3kles/kles-material-datepicker": "^21.0.0",
19
- "@angular/animations": "^21.2.19",
20
19
  "@angular/cdk": "^21.2.14",
21
20
  "@angular/common": "^21.2.19",
22
21
  "@angular/core": "^21.2.19",
23
22
  "@angular/forms": "^21.2.19",
24
23
  "@angular/material": "^21.2.14",
25
- "@angular/platform-browser": "^21.2.19",
26
- "@angular/router": "^21.2.19",
27
- "hammerjs": "^2.0.8",
28
- "lodash": "^4.17.19",
29
- "ngx-color-picker": "^19.0.0",
30
- "ngx-mat-select-search": "^8.0.2",
31
- "rxjs": "^7.8.0",
32
- "uuid": "^8.3.0",
33
- "zone.js": "~0.15.1"
24
+ "lodash": "^4.17.21",
25
+ "ngx-color-picker": "^20.1.1",
26
+ "ngx-mat-select-search": "^9.0.0",
27
+ "rxjs": "^6.5.3 || ^7.4.0",
28
+ "uuid": "^8.3.0"
34
29
  },
35
30
  "dependencies": {
36
31
  "tslib": "^2.0.0"
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, OnDestroy, Type, PipeTransform, ViewContainerRef, Provider, StaticProvider, Signal, OnChanges, EventEmitter, ChangeDetectorRef, SimpleChanges, ComponentRef, Injector, AfterViewInit, QueryList, InjectionToken } from '@angular/core';
2
+ import { OnInit, OnDestroy, Type, PipeTransform, ViewContainerRef, Provider, StaticProvider, Signal, OnChanges, EventEmitter, ChangeDetectorRef, SimpleChanges, ComponentRef, Injector, AfterViewInit, QueryList, ElementRef, InjectionToken } from '@angular/core';
3
3
  import * as i2$1 from '@angular/forms';
4
4
  import { UntypedFormGroup, ValidatorFn, AsyncValidatorFn, ɵGetProperty as _GetProperty, ɵTypedOrUntyped as _TypedOrUntyped, UntypedFormBuilder, FormGroup, ControlValueAccessor, Validators, AsyncValidator, UntypedFormArray, UntypedFormControl, FormControl, FormGroupDirective, NgForm, AbstractControl } from '@angular/forms';
5
5
  import { Subject, Observable, ReplaySubject, BehaviorSubject } from 'rxjs';
@@ -7,6 +7,8 @@ import * as i30 from '@angular/material/core';
7
7
  import { DateAdapter, MatDateFormats, MatOption, ErrorStateMatcher } from '@angular/material/core';
8
8
  import * as i10 from '@angular/material/form-field';
9
9
  import { SubscriptSizing, MatFormFieldControl } from '@angular/material/form-field';
10
+ import * as i3 from '@angular/material/button';
11
+ import { MatButtonAppearance } from '@angular/material/button';
10
12
  import * as i24 from '@angular/material/checkbox';
11
13
  import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
12
14
  import * as i16 from '@angular/material/tooltip';
@@ -14,7 +16,6 @@ import { MatTooltip } from '@angular/material/tooltip';
14
16
  import { Clipboard } from '@angular/cdk/clipboard';
15
17
  import * as i1 from '@angular/common';
16
18
  import * as i2 from '@angular/material/slider';
17
- import * as i3 from '@angular/material/button';
18
19
  import * as i4 from '@angular/material/toolbar';
19
20
  import * as i5 from '@angular/material/icon';
20
21
  import * as i6 from '@angular/material/sidenav';
@@ -47,7 +48,8 @@ import * as i35 from '@angular/cdk/portal';
47
48
  import * as i36 from '@angular/cdk/scrolling';
48
49
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
49
50
  import * as i4$1 from 'ngx-mat-select-search';
50
- import * as i56 from 'ngx-color-picker';
51
+ import * as _3kles_kles_material_dynamicforms from '@3kles/kles-material-dynamicforms';
52
+ import * as i60 from 'ngx-color-picker';
51
53
 
52
54
  type Exclusive<T, U> = (T & {
53
55
  [K in keyof U]?: never;
@@ -83,7 +85,9 @@ declare enum EnumType {
83
85
  group = "group",
84
86
  lineBreak = "lineBreak",
85
87
  badge = "badge",
86
- range = "range"
88
+ range = "range",
89
+ currency = "currency",
90
+ status = "status"
87
91
  }
88
92
 
89
93
  interface IKlesField {
@@ -95,13 +99,57 @@ interface IKlesField {
95
99
  interface IKlesDirective extends OnInit, OnDestroy {
96
100
  }
97
101
 
98
- declare enum EnumButtonAttribute {
99
- 'mat-button' = "mat-button",
100
- 'mat-flat-button' = "mat-flat-button",
101
- 'mat-raised-button' = "mat-raised-button",
102
- 'mat-stroked-button' = "mat-stroked-button"
102
+ interface IKlesFieldActionEvent<TContext = unknown, TValue = unknown> {
103
+ actionId: string;
104
+ value?: TValue;
105
+ context: TContext | null;
106
+ field: IKlesFieldConfig;
107
+ group: UntypedFormGroup;
108
+ originalEvent: Event;
109
+ }
110
+ interface IKlesCurrencyOptions {
111
+ /**
112
+ * Code ISO 4217 : EUR, USD, GBP...
113
+ * DEFAULT_CURRENCY_CODE sera utilisé par défaut.
114
+ */
115
+ code?: string;
116
+ /**
117
+ * Locale Intl : fr-FR, en-US...
118
+ * LOCALE_ID sera utilisé par défaut.
119
+ */
120
+ locale?: string;
121
+ display?: 'symbol' | 'narrowSymbol' | 'code' | 'name';
122
+ minimumFractionDigits?: number;
123
+ maximumFractionDigits?: number;
124
+ useGrouping?: boolean;
125
+ allowNegative?: boolean;
126
+ }
127
+ type KlesStatusTone = 'neutral' | 'info' | 'success' | 'warning' | 'error';
128
+ type KlesStatusAppearance = 'chip' | 'badge' | 'text';
129
+ interface IKlesStatusDefinition {
130
+ label: string;
131
+ tone?: KlesStatusTone;
132
+ icon?: string;
133
+ iconSvg?: string;
134
+ tooltip?: string;
135
+ ariaLabel?: string;
136
+ ngClass?: any;
137
+ }
138
+ interface IKlesStatusOptions {
139
+ values?: Record<string, IKlesStatusDefinition>;
140
+ appearance?: KlesStatusAppearance;
141
+ /**
142
+ * Affiche un point coloré lorsque le statut
143
+ * ne possède pas d'icône.
144
+ */
145
+ showDot?: boolean;
146
+ fallback?: IKlesStatusDefinition;
147
+ /**
148
+ * Permet de gérer des valeurs plus complexes,
149
+ * notamment des objets.
150
+ */
151
+ resolve?: (value: any, context: unknown | null, field: IKlesFieldConfig, group: UntypedFormGroup) => IKlesStatusDefinition | null;
103
152
  }
104
-
105
153
  interface IKlesFieldUi {
106
154
  inputType?: 'text' | 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'time' | 'url' | 'week';
107
155
  min?: number | Date;
@@ -118,6 +166,7 @@ interface IKlesFieldUi {
118
166
  icon?: string;
119
167
  iconSvg?: string;
120
168
  appearance?: 'fill' | 'outline';
169
+ buttonAppearance?: MatButtonAppearance;
121
170
  visible?: boolean;
122
171
  colorOption?: {
123
172
  disable?: boolean;
@@ -133,15 +182,18 @@ interface IKlesFieldUi {
133
182
  };
134
183
  virtualScroll?: boolean;
135
184
  itemSize?: number;
185
+ hint?: string;
186
+ label?: string;
187
+ placeholder?: any;
188
+ tooltip?: string;
189
+ imageUrl?: string;
190
+ imageAlt?: string;
136
191
  }
137
192
  interface IKlesFormField {
138
193
  type?: EnumType;
139
194
  name: string;
140
195
  component?: Type<any>;
141
196
  id?: string;
142
- label?: string;
143
- placeholder?: any;
144
- tooltip?: string;
145
197
  copyTooltip?: string;
146
198
  options?: any[] | Subject<any[]> | Observable<any[]> | ((value?: string, group?: {
147
199
  [key: string]: any;
@@ -180,17 +232,18 @@ interface IKlesFormField {
180
232
  language: string;
181
233
  dateFormat: MatDateFormats;
182
234
  };
183
- hint?: string;
184
235
  clearable?: boolean;
185
236
  clearableComponent?: Type<any>;
186
237
  subComponents?: Type<any>[];
187
238
  autofocus?: boolean;
188
- attribute?: EnumButtonAttribute;
189
239
  subscriptSizing?: SubscriptSizing;
190
240
  nonNullable?: boolean;
191
241
  onFocus?: (field: IKlesFieldConfig, group: UntypedFormGroup) => void;
192
242
  onBlur?: (field: IKlesFieldConfig, group: UntypedFormGroup) => void;
193
243
  providers?: Array<Provider | StaticProvider>;
244
+ onAction?: (event: IKlesFieldActionEvent<any, any>) => void;
245
+ currencyOptions?: IKlesCurrencyOptions;
246
+ statusOptions?: IKlesStatusOptions;
194
247
  }
195
248
  type IKlesFieldConfig = IKlesFormField & IKlesFieldUi;
196
249
 
@@ -291,23 +344,32 @@ declare class KlesDynamicFieldDirective<T extends IKlesFieldConfig = IKlesFieldC
291
344
  static ɵdir: i0.ɵɵDirectiveDeclaration<KlesDynamicFieldDirective<any>, "[klesDynamicField]", never, { "field": { "alias": "field"; "required": false; }; "group": { "alias": "group"; "required": false; }; "ui": { "alias": "ui"; "required": false; }; "siblingFields": { "alias": "siblingFields"; "required": false; }; }, {}, never, never, true, never>;
292
345
  }
293
346
 
294
- declare abstract class KlesFieldAbstract implements IKlesField, OnInit, AfterViewInit, OnDestroy {
347
+ declare abstract class KlesFieldAbstract<TContext = unknown> implements IKlesField, OnInit, AfterViewInit, OnDestroy {
295
348
  readonly field: IKlesFieldConfig;
296
349
  readonly group: FormGroup<any>;
297
350
  readonly siblingFields: IKlesFieldConfig[];
298
351
  readonly ui: GroupUiState<any>;
299
- appearance: i0.Signal<any>;
300
- inputType: i0.Signal<any>;
301
- min: i0.Signal<any>;
302
- max: i0.Signal<any>;
303
- maxLength: i0.Signal<any>;
304
- step: i0.Signal<any>;
305
- ngClass: i0.Signal<any>;
306
- ngStyle: i0.Signal<any>;
307
- indeterminate: i0.Signal<any>;
308
- color: i0.Signal<any>;
309
- icon: i0.Signal<any>;
310
- iconSvg: i0.Signal<any>;
352
+ readonly context: Signal<TContext | null> | null;
353
+ protected readonly fieldUi: Signal<any>;
354
+ readonly appearance: Signal<any>;
355
+ readonly inputType: Signal<any>;
356
+ readonly min: Signal<any>;
357
+ readonly max: Signal<any>;
358
+ readonly maxLength: Signal<any>;
359
+ readonly step: Signal<any>;
360
+ readonly ngClass: Signal<any>;
361
+ readonly ngStyle: Signal<any>;
362
+ readonly indeterminate: Signal<any>;
363
+ readonly color: Signal<any>;
364
+ readonly icon: Signal<any>;
365
+ readonly iconSvg: Signal<any>;
366
+ readonly buttonAppearance: Signal<any>;
367
+ readonly label: Signal<any>;
368
+ readonly hint: Signal<any>;
369
+ readonly placeholder: Signal<any>;
370
+ readonly tooltip: Signal<any>;
371
+ readonly imageUrl: Signal<any>;
372
+ readonly imageAlt: Signal<any>;
311
373
  protected readonly viewRef: ViewContainerRef;
312
374
  directive: any;
313
375
  protected _onDestroy: Subject<void>;
@@ -319,8 +381,9 @@ declare abstract class KlesFieldAbstract implements IKlesField, OnInit, AfterVie
319
381
  isPending(): boolean;
320
382
  onFocus(): void;
321
383
  onBlur(): void;
322
- static ɵfac: i0.ɵɵFactoryDeclaration<KlesFieldAbstract, never>;
323
- static ɵdir: i0.ɵɵDirectiveDeclaration<KlesFieldAbstract, never, never, {}, {}, never, never, true, never>;
384
+ triggerAction(actionId: string, originalEvent: Event, value?: unknown): void;
385
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFieldAbstract<any>, never>;
386
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KlesFieldAbstract<any>, never, never, {}, {}, never, never, true, never>;
324
387
  }
325
388
 
326
389
  declare class KlesFormLabelComponent extends KlesFieldAbstract implements OnInit, OnDestroy {
@@ -331,39 +394,6 @@ declare class KlesFormLabelComponent extends KlesFieldAbstract implements OnInit
331
394
  static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormLabelComponent, "kles-form-label", never, {}, {}, never, never, true, never>;
332
395
  }
333
396
 
334
- declare class KlesTransformPipe implements PipeTransform {
335
- transform(value: any, pipes: {
336
- pipe: PipeTransform;
337
- options?: any[];
338
- }[]): any;
339
- static ɵfac: i0.ɵɵFactoryDeclaration<KlesTransformPipe, never>;
340
- static ɵpipe: i0.ɵɵPipeDeclaration<KlesTransformPipe, "klesTransform", true>;
341
- }
342
-
343
- declare class ArrayFormatPipe implements PipeTransform {
344
- transform(values: any[], property?: string): string;
345
- static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormatPipe, never>;
346
- static ɵpipe: i0.ɵɵPipeDeclaration<ArrayFormatPipe, "arrayFormat", true>;
347
- }
348
-
349
- interface IKlesClearControl extends IKlesField {
350
- clear(event: any): void;
351
- }
352
-
353
- declare class KlesFormClearComponent implements IKlesClearControl, OnDestroy {
354
- readonly field: IKlesFieldConfig;
355
- readonly group: FormGroup<any>;
356
- readonly siblingFields: IKlesFieldConfig[];
357
- private _onDestroy;
358
- disabled: Signal<boolean>;
359
- constructor();
360
- ngOnDestroy(): void;
361
- clear(event: any): void;
362
- private isPresent;
363
- static ɵfac: i0.ɵɵFactoryDeclaration<KlesFormClearComponent, never>;
364
- static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormClearComponent, "kles-form-clear", never, {}, {}, never, never, true, never>;
365
- }
366
-
367
397
  interface IButton {
368
398
  event?: any;
369
399
  uiButton?: IUIButton;
@@ -377,6 +407,7 @@ interface IUIButton {
377
407
  class?: string;
378
408
  type?: string;
379
409
  accept?: string;
410
+ buttonAppearance?: MatButtonAppearance;
380
411
  }
381
412
  declare abstract class KlesButtonBase implements OnInit, ControlValueAccessor {
382
413
  name: string;
@@ -390,22 +421,57 @@ declare abstract class KlesButtonBase implements OnInit, ControlValueAccessor {
390
421
  classButton: string;
391
422
  value: IButton;
392
423
  tooltip?: string;
424
+ buttonAppearance: MatButtonAppearance;
425
+ action: EventEmitter<MouseEvent>;
393
426
  protected _type: string;
394
427
  onChange: any;
395
428
  onTouched: any;
396
429
  ngOnInit(): void;
397
- click(event: any): void;
430
+ click(event: MouseEvent): void;
398
431
  writeValue(value: IButton): void;
399
432
  registerOnChange(fn: any): void;
400
433
  registerOnTouched(fn: any): void;
401
434
  setDisabledState?(isDisabled: boolean): void;
402
435
  static ɵfac: i0.ɵɵFactoryDeclaration<KlesButtonBase, never>;
403
- static ɵcmp: i0.ɵɵComponentDeclaration<KlesButtonBase, "ng-component", never, { "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "color": { "alias": "color"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconSvg": { "alias": "iconSvg"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "classButton": { "alias": "classButton"; "required": false; }; "value": { "alias": "value"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; }, {}, never, never, true, never>;
436
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesButtonBase, "ng-component", never, { "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "color": { "alias": "color"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconSvg": { "alias": "iconSvg"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "classButton": { "alias": "classButton"; "required": false; }; "value": { "alias": "value"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "buttonAppearance": { "alias": "buttonAppearance"; "required": false; }; }, { "action": "action"; }, never, never, true, never>;
404
437
  }
405
438
 
406
- declare class KlesFabComponent extends KlesButtonBase implements OnInit {
407
- static ɵfac: i0.ɵɵFactoryDeclaration<KlesFabComponent, never>;
408
- static ɵcmp: i0.ɵɵComponentDeclaration<KlesFabComponent, "kles-fab", never, {}, {}, never, never, true, never>;
439
+ declare class KlesButtonComponent extends KlesButtonBase implements OnInit {
440
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesButtonComponent, never>;
441
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesButtonComponent, "kles-button", never, {}, {}, never, never, true, never>;
442
+ }
443
+
444
+ declare class KlesTransformPipe implements PipeTransform {
445
+ transform(value: any, pipes: {
446
+ pipe: PipeTransform;
447
+ options?: any[];
448
+ }[]): any;
449
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesTransformPipe, never>;
450
+ static ɵpipe: i0.ɵɵPipeDeclaration<KlesTransformPipe, "klesTransform", true>;
451
+ }
452
+
453
+ declare class ArrayFormatPipe implements PipeTransform {
454
+ transform(values: any[], property?: string): string;
455
+ static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormatPipe, never>;
456
+ static ɵpipe: i0.ɵɵPipeDeclaration<ArrayFormatPipe, "arrayFormat", true>;
457
+ }
458
+
459
+ interface IKlesClearControl extends IKlesField {
460
+ clear(event: any): void;
461
+ }
462
+
463
+ declare class KlesFormClearComponent implements IKlesClearControl, OnDestroy {
464
+ readonly field: IKlesFieldConfig;
465
+ readonly group: FormGroup<any>;
466
+ readonly siblingFields: IKlesFieldConfig[];
467
+ private _onDestroy;
468
+ disabled: Signal<boolean>;
469
+ constructor();
470
+ ngOnDestroy(): void;
471
+ clear(event: any): void;
472
+ private isPresent;
473
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFormClearComponent, never>;
474
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormClearComponent, "kles-form-clear", never, {}, {}, never, never, true, never>;
409
475
  }
410
476
 
411
477
  declare class MatErrorMessageDirective implements AfterViewInit {
@@ -535,13 +601,6 @@ declare class KlesFormFileComponent extends KlesFieldAbstract {
535
601
  static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormFileComponent, "kles-form-file", never, {}, {}, never, never, true, never>;
536
602
  }
537
603
 
538
- declare class KlesButtonComponent extends KlesButtonBase implements OnInit {
539
- mdcClasses: i0.WritableSignal<string[]>;
540
- set attribute(attribute: EnumButtonAttribute);
541
- static ɵfac: i0.ɵɵFactoryDeclaration<KlesButtonComponent, never>;
542
- static ɵcmp: i0.ɵɵComponentDeclaration<KlesButtonComponent, "kles-button", never, { "attribute": { "alias": "attribute"; "required": false; }; }, {}, never, never, true, never>;
543
- }
544
-
545
604
  declare class KlesFormButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {
546
605
  ngOnInit(): void;
547
606
  ngOnDestroy(): void;
@@ -925,6 +984,11 @@ declare class KlesFormFabComponent extends KlesFieldAbstract implements OnInit,
925
984
  static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormFabComponent, "kles-form-fab", never, {}, {}, never, never, true, never>;
926
985
  }
927
986
 
987
+ declare class KlesFabComponent extends KlesButtonBase implements OnInit {
988
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFabComponent, never>;
989
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesFabComponent, "kles-fab", never, {}, {}, never, never, true, never>;
990
+ }
991
+
928
992
  declare class KlesMiniFabComponent extends KlesButtonBase implements OnInit {
929
993
  static ɵfac: i0.ɵɵFactoryDeclaration<KlesMiniFabComponent, never>;
930
994
  static ɵcmp: i0.ɵɵComponentDeclaration<KlesMiniFabComponent, "kles-mini-fab", never, {}, {}, never, never, true, never>;
@@ -961,10 +1025,142 @@ declare class KlesFormSelectionListSearchComponent extends KlesFieldAbstract imp
961
1025
  static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormSelectionListSearchComponent, "kles-form-selection-list-search", never, {}, {}, never, never, true, never>;
962
1026
  }
963
1027
 
1028
+ declare class KlesFormTileComponent extends KlesFieldAbstract {
1029
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFormTileComponent, never>;
1030
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormTileComponent, "app-kles-form-tile", never, {}, {}, never, never, true, never>;
1031
+ }
1032
+
1033
+ /**
1034
+ * Condition statique ou calculée à partir du contexte du field.
1035
+ */
1036
+ type KlesActionMenuCondition<TContext = unknown> = boolean | ((context: TContext | null, field: IKlesFieldConfig, group: UntypedFormGroup) => boolean);
1037
+ /**
1038
+ * Configuration d'une entrée du menu.
1039
+ *
1040
+ * Le callback n'est pas placé ici :
1041
+ * toutes les actions sont gérées par field.onAction.
1042
+ */
1043
+ interface KlesActionMenuItem<TContext = unknown> {
1044
+ id: string;
1045
+ label: string;
1046
+ icon?: string;
1047
+ iconSvg?: string;
1048
+ visible?: KlesActionMenuCondition<TContext>;
1049
+ disabled?: KlesActionMenuCondition<TContext>;
1050
+ dividerBefore?: boolean;
1051
+ color?: 'default' | 'warn';
1052
+ }
1053
+ /**
1054
+ * Configuration spécialisée du field action-menu.
1055
+ */
1056
+ interface KlesActionMenuFieldConfig<TContext = unknown> extends IKlesFieldConfig {
1057
+ options?: KlesActionMenuItem<TContext>[] | Observable<KlesActionMenuItem<TContext>[]> | ((value?: string, group?: {
1058
+ [key: string]: any;
1059
+ }) => Observable<KlesActionMenuItem<TContext>[]>);
1060
+ menuXPosition?: 'before' | 'after';
1061
+ menuYPosition?: 'above' | 'below';
1062
+ }
1063
+ declare class KlesFormActionMenuComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {
1064
+ /**
1065
+ * Configuration du field avec le typage spécialisé.
1066
+ */
1067
+ readonly actionField: KlesActionMenuFieldConfig<TContext>;
1068
+ private readonly control;
1069
+ private readonly controlStatus;
1070
+ /**
1071
+ * Options statiques ou asynchrones.
1072
+ */
1073
+ private readonly actionsSource$;
1074
+ readonly actions: i0.Signal<KlesActionMenuItem<TContext>[]>;
1075
+ readonly disabled: i0.Signal<boolean>;
1076
+ readonly visibleActions: i0.Signal<KlesActionMenuItem<TContext>[]>;
1077
+ readonly ariaLabel: i0.Signal<any>;
1078
+ onTriggerClick(event: MouseEvent): void;
1079
+ isDisabled(action: KlesActionMenuItem<TContext>): boolean;
1080
+ execute(action: KlesActionMenuItem<TContext>, event: MouseEvent): void;
1081
+ private resolveCondition;
1082
+ private resolveOptions;
1083
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFormActionMenuComponent<any>, never>;
1084
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormActionMenuComponent<any>, "kles-form-action-menu", never, {}, {}, never, never, true, never>;
1085
+ }
1086
+
1087
+ /**
1088
+ * ValueAccessor monétaire.
1089
+ *
1090
+ * La valeur du FormControl reste un number | null.
1091
+ * Seule la valeur affichée dans l'input est formatée.
1092
+ */
1093
+ declare class KlesCurrencyValueAccessorDirective implements ControlValueAccessor, OnChanges {
1094
+ /**
1095
+ * Public pour rester compatible avec le mécanisme
1096
+ * nativeElement utilisé par la librairie.
1097
+ */
1098
+ readonly _elementRef: ElementRef<HTMLInputElement>;
1099
+ private readonly renderer;
1100
+ currency: string;
1101
+ locale: string;
1102
+ currencyDisplay: 'symbol' | 'narrowSymbol' | 'code' | 'name';
1103
+ minimumFractionDigits?: number;
1104
+ maximumFractionDigits?: number;
1105
+ useGrouping: boolean;
1106
+ allowNegative: boolean;
1107
+ private currentValue;
1108
+ private focused;
1109
+ private onChange;
1110
+ private onTouched;
1111
+ ngOnChanges(changes: SimpleChanges): void;
1112
+ writeValue(value: unknown): void;
1113
+ registerOnChange(callback: (value: number | null) => void): void;
1114
+ registerOnTouched(callback: () => void): void;
1115
+ setDisabledState(disabled: boolean): void;
1116
+ handleFocus(): void;
1117
+ handleInput(event: Event): void;
1118
+ handleBlur(): void;
1119
+ private normalizeModelValue;
1120
+ private renderFormattedValue;
1121
+ private setInputValue;
1122
+ private formatCurrency;
1123
+ /**
1124
+ * Pendant l'édition, on retire le symbole et
1125
+ * les séparateurs de milliers.
1126
+ */
1127
+ private formatEditableValue;
1128
+ private createCurrencyFormatOptions;
1129
+ private parseLocalizedNumber;
1130
+ /**
1131
+ * Convertit également les chiffres localisés
1132
+ * vers 0-9.
1133
+ */
1134
+ private normalizeLocalizedDigits;
1135
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesCurrencyValueAccessorDirective, never>;
1136
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KlesCurrencyValueAccessorDirective, "input[klesCurrency]", never, { "currency": { "alias": "currency"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "currencyDisplay": { "alias": "currencyDisplay"; "required": false; }; "minimumFractionDigits": { "alias": "minimumFractionDigits"; "required": false; }; "maximumFractionDigits": { "alias": "maximumFractionDigits"; "required": false; }; "useGrouping": { "alias": "useGrouping"; "required": false; }; "allowNegative": { "alias": "allowNegative"; "required": false; }; }, {}, never, never, true, never>;
1137
+ }
1138
+ declare class KlesFormCurrencyComponent extends KlesFieldAbstract {
1139
+ readonly localeId: string;
1140
+ readonly defaultCurrencyCode: string;
1141
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFormCurrencyComponent, never>;
1142
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormCurrencyComponent, "kles-form-currency", never, {}, {}, never, ["*"], true, never>;
1143
+ }
1144
+
1145
+ declare class KlesFormStatusComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {
1146
+ private readonly control;
1147
+ private readonly controlValue;
1148
+ private readonly controlStatus;
1149
+ readonly appearance: i0.Signal<_3kles_kles_material_dynamicforms.KlesStatusAppearance>;
1150
+ readonly showDot: i0.Signal<boolean>;
1151
+ readonly disabled: i0.Signal<boolean>;
1152
+ readonly pending: i0.Signal<boolean>;
1153
+ readonly resolvedStatus: i0.Signal<IKlesStatusDefinition>;
1154
+ private resolveStatusKey;
1155
+ private resolveDefaultLabel;
1156
+ static ɵfac: i0.ɵɵFactoryDeclaration<KlesFormStatusComponent<any>, never>;
1157
+ static ɵcmp: i0.ɵɵComponentDeclaration<KlesFormStatusComponent<any>, "kles-form-status", never, {}, {}, never, never, true, never>;
1158
+ }
1159
+
964
1160
  declare class KlesMaterialDynamicformsModule {
965
- static declarations: ((typeof KlesFormClearComponent | typeof KlesDynamicFormComponent | typeof KlesFormLabelComponent | typeof KlesFabComponent | typeof KlesIndeterminateCheckboxComponent | typeof KlesFileControlComponent | typeof KlesFormCopyComponent)[] | (typeof KlesDynamicFieldDirective | typeof MatErrorFormDirective | typeof KlesComponentDirective | typeof MatErrorMessageDirective)[] | (typeof KlesTransformPipe | typeof ArrayFormatPipe)[])[];
1161
+ static declarations: ((typeof KlesFormClearComponent | typeof KlesDynamicFormComponent | typeof KlesFormLabelComponent | typeof KlesButtonComponent | typeof KlesIndeterminateCheckboxComponent | typeof KlesFileControlComponent | typeof KlesFormCopyComponent)[] | (typeof KlesDynamicFieldDirective | typeof MatErrorFormDirective | typeof KlesComponentDirective | typeof MatErrorMessageDirective)[] | (typeof KlesTransformPipe | typeof ArrayFormatPipe)[])[];
966
1162
  static ɵfac: i0.ɵɵFactoryDeclaration<KlesMaterialDynamicformsModule, never>;
967
- static ɵmod: i0.ɵɵNgModuleDeclaration<KlesMaterialDynamicformsModule, never, [typeof i1.CommonModule, typeof i2$1.ReactiveFormsModule, typeof i2$1.FormsModule, typeof MaterialModule, typeof i4$1.NgxMatSelectSearchModule, typeof KlesDynamicFormComponent, typeof KlesFormLabelComponent, typeof KlesFormInputComponent, typeof KlesFormInputClearableComponent, typeof KlesFormBadgeComponent, typeof KlesFormFileComponent, typeof KlesFileControlComponent, typeof KlesButtonComponent, typeof KlesFormButtonComponent, typeof KlesButtonCheckerComponent, typeof KlesFormButtonCheckerComponent, typeof KlesButtonFileComponent, typeof KlesFormButtonFileComponent, typeof KlesFormSelectComponent, typeof KlesFormDateComponent, typeof KlesFormDateTimeComponent, typeof KlesFormRadioComponent, typeof KlesFormCheckboxComponent, typeof KlesIndeterminateCheckboxComponent, typeof KlesFormCheckboxIndeterminateComponent, typeof KlesFormListFieldComponent, typeof KlesFormColorComponent, typeof KlesFormTextareaComponent, typeof KlesFormTextComponent, typeof KlesFormChipComponent, typeof KlesFormGroupComponent, typeof KlesFormIconComponent, typeof KlesFormSelectSearchComponent, typeof KlesFormLineBreakComponent, typeof KlesFormLinkComponent, typeof KlesFormSlideToggleComponent, typeof KlesFormSelectionListComponent, typeof KlesFormButtonToogleGroupComponent, typeof KlesFormArrayComponent, typeof KlesFormRangeComponent, typeof KlesFormClearComponent, typeof KlesFormSelectLazySearchComponent, typeof KlesFormFabComponent, typeof KlesFabComponent, typeof KlesMiniFabComponent, typeof KlesFormMiniFabComponent, typeof KlesIconButtonComponent, typeof KlesFormIconButtonComponent, typeof KlesFormSelectionListSearchComponent, typeof KlesFormCopyComponent, typeof KlesDynamicFieldDirective, typeof KlesComponentDirective, typeof MatErrorMessageDirective, typeof MatErrorFormDirective, typeof KlesTransformPipe, typeof ArrayFormatPipe, typeof i56.ColorPickerComponent, typeof i56.ColorPickerDirective], [typeof KlesDynamicFormComponent, typeof KlesFormLabelComponent, typeof KlesFormInputComponent, typeof KlesFormInputClearableComponent, typeof KlesFormBadgeComponent, typeof KlesFormFileComponent, typeof KlesFileControlComponent, typeof KlesButtonComponent, typeof KlesFormButtonComponent, typeof KlesButtonCheckerComponent, typeof KlesFormButtonCheckerComponent, typeof KlesButtonFileComponent, typeof KlesFormButtonFileComponent, typeof KlesFormSelectComponent, typeof KlesFormDateComponent, typeof KlesFormDateTimeComponent, typeof KlesFormRadioComponent, typeof KlesFormCheckboxComponent, typeof KlesIndeterminateCheckboxComponent, typeof KlesFormCheckboxIndeterminateComponent, typeof KlesFormListFieldComponent, typeof KlesFormColorComponent, typeof KlesFormTextareaComponent, typeof KlesFormTextComponent, typeof KlesFormChipComponent, typeof KlesFormGroupComponent, typeof KlesFormIconComponent, typeof KlesFormSelectSearchComponent, typeof KlesFormLineBreakComponent, typeof KlesFormLinkComponent, typeof KlesFormSlideToggleComponent, typeof KlesFormSelectionListComponent, typeof KlesFormButtonToogleGroupComponent, typeof KlesFormArrayComponent, typeof KlesFormRangeComponent, typeof KlesFormClearComponent, typeof KlesFormSelectLazySearchComponent, typeof KlesFormFabComponent, typeof KlesFabComponent, typeof KlesMiniFabComponent, typeof KlesFormMiniFabComponent, typeof KlesIconButtonComponent, typeof KlesFormIconButtonComponent, typeof KlesFormSelectionListSearchComponent, typeof KlesFormCopyComponent, typeof KlesTransformPipe, typeof ArrayFormatPipe, typeof KlesDynamicFieldDirective, typeof KlesComponentDirective, typeof MatErrorMessageDirective, typeof MatErrorFormDirective]>;
1163
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KlesMaterialDynamicformsModule, never, [typeof i1.CommonModule, typeof i2$1.ReactiveFormsModule, typeof i2$1.FormsModule, typeof MaterialModule, typeof i4$1.NgxMatSelectSearchModule, typeof KlesDynamicFormComponent, typeof KlesFormLabelComponent, typeof KlesFormInputComponent, typeof KlesFormInputClearableComponent, typeof KlesFormBadgeComponent, typeof KlesFormFileComponent, typeof KlesFileControlComponent, typeof KlesButtonComponent, typeof KlesFormButtonComponent, typeof KlesButtonCheckerComponent, typeof KlesFormButtonCheckerComponent, typeof KlesButtonFileComponent, typeof KlesFormButtonFileComponent, typeof KlesFormSelectComponent, typeof KlesFormDateComponent, typeof KlesFormDateTimeComponent, typeof KlesFormRadioComponent, typeof KlesFormCheckboxComponent, typeof KlesIndeterminateCheckboxComponent, typeof KlesFormCheckboxIndeterminateComponent, typeof KlesFormListFieldComponent, typeof KlesFormColorComponent, typeof KlesFormTextareaComponent, typeof KlesFormTextComponent, typeof KlesFormChipComponent, typeof KlesFormGroupComponent, typeof KlesFormIconComponent, typeof KlesFormSelectSearchComponent, typeof KlesFormLineBreakComponent, typeof KlesFormLinkComponent, typeof KlesFormSlideToggleComponent, typeof KlesFormSelectionListComponent, typeof KlesFormButtonToogleGroupComponent, typeof KlesFormArrayComponent, typeof KlesFormRangeComponent, typeof KlesFormClearComponent, typeof KlesFormSelectLazySearchComponent, typeof KlesFormFabComponent, typeof KlesFabComponent, typeof KlesMiniFabComponent, typeof KlesFormMiniFabComponent, typeof KlesIconButtonComponent, typeof KlesFormIconButtonComponent, typeof KlesFormSelectionListSearchComponent, typeof KlesFormCopyComponent, typeof KlesFormTileComponent, typeof KlesFormActionMenuComponent, typeof KlesFormCurrencyComponent, typeof KlesFormStatusComponent, typeof KlesDynamicFieldDirective, typeof KlesComponentDirective, typeof MatErrorMessageDirective, typeof MatErrorFormDirective, typeof KlesTransformPipe, typeof ArrayFormatPipe, typeof i60.ColorPickerComponent, typeof i60.ColorPickerDirective], [typeof KlesDynamicFormComponent, typeof KlesFormLabelComponent, typeof KlesFormInputComponent, typeof KlesFormInputClearableComponent, typeof KlesFormBadgeComponent, typeof KlesFormFileComponent, typeof KlesFileControlComponent, typeof KlesButtonComponent, typeof KlesFormButtonComponent, typeof KlesButtonCheckerComponent, typeof KlesFormButtonCheckerComponent, typeof KlesButtonFileComponent, typeof KlesFormButtonFileComponent, typeof KlesFormSelectComponent, typeof KlesFormDateComponent, typeof KlesFormDateTimeComponent, typeof KlesFormRadioComponent, typeof KlesFormCheckboxComponent, typeof KlesIndeterminateCheckboxComponent, typeof KlesFormCheckboxIndeterminateComponent, typeof KlesFormListFieldComponent, typeof KlesFormColorComponent, typeof KlesFormTextareaComponent, typeof KlesFormTextComponent, typeof KlesFormChipComponent, typeof KlesFormGroupComponent, typeof KlesFormIconComponent, typeof KlesFormSelectSearchComponent, typeof KlesFormLineBreakComponent, typeof KlesFormLinkComponent, typeof KlesFormSlideToggleComponent, typeof KlesFormSelectionListComponent, typeof KlesFormButtonToogleGroupComponent, typeof KlesFormArrayComponent, typeof KlesFormRangeComponent, typeof KlesFormClearComponent, typeof KlesFormSelectLazySearchComponent, typeof KlesFormFabComponent, typeof KlesFabComponent, typeof KlesMiniFabComponent, typeof KlesFormMiniFabComponent, typeof KlesIconButtonComponent, typeof KlesFormIconButtonComponent, typeof KlesFormSelectionListSearchComponent, typeof KlesFormCopyComponent, typeof KlesFormTileComponent, typeof KlesFormActionMenuComponent, typeof KlesFormCurrencyComponent, typeof KlesFormStatusComponent, typeof KlesTransformPipe, typeof ArrayFormatPipe, typeof KlesDynamicFieldDirective, typeof KlesComponentDirective, typeof MatErrorMessageDirective, typeof MatErrorFormDirective]>;
968
1164
  static ɵinj: i0.ɵɵInjectorDeclaration<KlesMaterialDynamicformsModule>;
969
1165
  }
970
1166
 
@@ -1078,6 +1274,7 @@ declare const GROUP: InjectionToken<FormGroup<any>>;
1078
1274
  declare const SIBLING_FIELDS: InjectionToken<IKlesFieldConfig[]>;
1079
1275
  declare const GROUP_UI: InjectionToken<GroupUiState<any>>;
1080
1276
  declare const FIELD: InjectionToken<IKlesFieldConfig>;
1277
+ declare const FIELD_CONTEXT: InjectionToken<Signal<unknown>>;
1081
1278
 
1082
- export { AbstractUiState, ArrayFormatPipe, ArrayUiState, ControlUiState, EnumButtonAttribute, EnumType, FIELD, FIELD_NAME, FieldMapper, GROUP, GROUP_UI, GroupUiState, KlesAbstractFormControl, KlesAbstractFormUiControl, KlesButtonBase, KlesButtonCheckerComponent, KlesButtonComponent, KlesButtonFileComponent, KlesComponentDirective, KlesDynamicFieldDirective, KlesDynamicFormComponent, KlesDynamicFormIntl, KlesFabComponent, KlesFieldAbstract, KlesFileControlComponent, KlesFormArray, KlesFormArrayComponent, KlesFormBadgeComponent, KlesFormButtonCheckerComponent, KlesFormButtonComponent, KlesFormButtonFileComponent, KlesFormButtonToogleGroupComponent, KlesFormCheckboxComponent, KlesFormCheckboxIndeterminateComponent, KlesFormChipComponent, KlesFormClearComponent, KlesFormColorComponent, KlesFormControl, KlesFormCopyComponent, KlesFormDateComponent, KlesFormDateTimeComponent, KlesFormErrorStateMatcher, KlesFormFabComponent, KlesFormFileComponent, KlesFormGroup, KlesFormGroupComponent, KlesFormIconButtonComponent, KlesFormIconComponent, KlesFormInputClearableComponent, KlesFormInputComponent, KlesFormLabelComponent, KlesFormLineBreakComponent, KlesFormLinkComponent, KlesFormListFieldComponent, KlesFormMiniFabComponent, KlesFormPasswordVisibilityComponent, KlesFormRadioComponent, KlesFormRange, KlesFormRangeComponent, KlesFormSelectComponent, KlesFormSelectLazySearchComponent, KlesFormSelectSearchComponent, KlesFormSelectionListComponent, KlesFormSelectionListSearchComponent, KlesFormSlideToggleComponent, KlesFormTextComponent, KlesFormTextareaComponent, KlesFormUiArray, KlesFormUiControl, KlesFormUiGroup, KlesIconButtonComponent, KlesIndeterminateCheckboxComponent, KlesMaterialDynamicformsModule, KlesMiniFabComponent, KlesSelectionModel, KlesTransformPipe, MatErrorFormDirective, MatErrorMessageDirective, SIBLING_FIELDS, autocompleteObjectValidator, autocompleteStringValidator, componentMapper, isDestroyable, klesFieldControlFactory, klesFieldUiFactory };
1083
- export type { Destroyable, IButton, IButtonChecker, IButtonFile, IKlesClearControl, IKlesComponent, IKlesControl, IKlesDirective, IKlesField, IKlesFieldConfig, IKlesFieldUi, IKlesFormField, IKlesUi, IKlesValidator, IUIButton, KlesValidationKey };
1279
+ export { AbstractUiState, ArrayFormatPipe, ArrayUiState, ControlUiState, EnumType, FIELD, FIELD_CONTEXT, FIELD_NAME, FieldMapper, GROUP, GROUP_UI, GroupUiState, KlesAbstractFormControl, KlesAbstractFormUiControl, KlesButtonBase, KlesButtonCheckerComponent, KlesButtonComponent, KlesButtonFileComponent, KlesComponentDirective, KlesCurrencyValueAccessorDirective, KlesDynamicFieldDirective, KlesDynamicFormComponent, KlesDynamicFormIntl, KlesFabComponent, KlesFieldAbstract, KlesFileControlComponent, KlesFormActionMenuComponent, KlesFormArray, KlesFormArrayComponent, KlesFormBadgeComponent, KlesFormButtonCheckerComponent, KlesFormButtonComponent, KlesFormButtonFileComponent, KlesFormButtonToogleGroupComponent, KlesFormCheckboxComponent, KlesFormCheckboxIndeterminateComponent, KlesFormChipComponent, KlesFormClearComponent, KlesFormColorComponent, KlesFormControl, KlesFormCopyComponent, KlesFormCurrencyComponent, KlesFormDateComponent, KlesFormDateTimeComponent, KlesFormErrorStateMatcher, KlesFormFabComponent, KlesFormFileComponent, KlesFormGroup, KlesFormGroupComponent, KlesFormIconButtonComponent, KlesFormIconComponent, KlesFormInputClearableComponent, KlesFormInputComponent, KlesFormLabelComponent, KlesFormLineBreakComponent, KlesFormLinkComponent, KlesFormListFieldComponent, KlesFormMiniFabComponent, KlesFormPasswordVisibilityComponent, KlesFormRadioComponent, KlesFormRange, KlesFormRangeComponent, KlesFormSelectComponent, KlesFormSelectLazySearchComponent, KlesFormSelectSearchComponent, KlesFormSelectionListComponent, KlesFormSelectionListSearchComponent, KlesFormSlideToggleComponent, KlesFormStatusComponent, KlesFormTextComponent, KlesFormTextareaComponent, KlesFormTileComponent, KlesFormUiArray, KlesFormUiControl, KlesFormUiGroup, KlesIconButtonComponent, KlesIndeterminateCheckboxComponent, KlesMaterialDynamicformsModule, KlesMiniFabComponent, KlesSelectionModel, KlesTransformPipe, MatErrorFormDirective, MatErrorMessageDirective, SIBLING_FIELDS, autocompleteObjectValidator, autocompleteStringValidator, componentMapper, isDestroyable, klesFieldControlFactory, klesFieldUiFactory };
1280
+ export type { Destroyable, IButton, IButtonChecker, IButtonFile, IKlesClearControl, IKlesComponent, IKlesControl, IKlesCurrencyOptions, IKlesDirective, IKlesField, IKlesFieldActionEvent, IKlesFieldConfig, IKlesFieldUi, IKlesFormField, IKlesStatusDefinition, IKlesStatusOptions, IKlesUi, IKlesValidator, IUIButton, KlesActionMenuCondition, KlesActionMenuFieldConfig, KlesActionMenuItem, KlesStatusAppearance, KlesStatusTone, KlesValidationKey };