@sumaris-net/ngx-components 2.12.13 → 2.12.15

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.
Files changed (37) hide show
  1. package/esm2022/public_api.mjs +5 -5
  2. package/esm2022/src/app/core/account/new-token.modal.mjs +1 -1
  3. package/esm2022/src/app/core/core.testing.module.mjs +19 -5
  4. package/esm2022/src/app/core/form/array/form-array.mjs +324 -0
  5. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
  6. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +95 -0
  7. package/esm2022/src/app/core/form/form.utils.mjs +1 -306
  8. package/esm2022/src/app/core/form/list/list.form.mjs +3 -2
  9. package/esm2022/src/app/core/form/properties/properties.form.mjs +2 -2
  10. package/esm2022/src/app/core/settings/settings.page.mjs +3 -2
  11. package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
  12. package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
  13. package/esm2022/src/app/shared/form/field.component.mjs +1 -1
  14. package/esm2022/src/app/shared/forms.mjs +12 -8
  15. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +15 -7
  16. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  17. package/esm2022/src/app/shared/material/chips/material.chips.mjs +14 -6
  18. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +1 -1
  19. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
  20. package/esm2022/src/app/social/message/message.form.mjs +1 -1
  21. package/fesm2022/sumaris-net.ngx-components.mjs +773 -632
  22. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/public_api.d.ts +4 -8
  25. package/src/app/core/core.testing.module.d.ts +2 -1
  26. package/src/app/core/form/array/form-array.d.ts +136 -0
  27. package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
  28. package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
  29. package/src/app/core/form/form.utils.d.ts +1 -122
  30. package/src/app/core/form/list/list.form.d.ts +2 -2
  31. package/src/app/core/form/properties/properties.form.d.ts +2 -2
  32. package/src/app/core/settings/settings.page.d.ts +2 -1
  33. package/src/app/shared/forms.d.ts +2 -0
  34. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +6 -1
  35. package/src/app/shared/material/chips/material.chips.d.ts +6 -1
  36. package/src/assets/manifest.json +1 -1
  37. package/src/theme/_ngx-components.scss +16 -12
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sumaris-net/ngx-components",
3
3
  "description": "SUMARiS Angular components",
4
- "version": "2.12.13",
4
+ "version": "2.12.15",
5
5
  "author": "contact@e-is.pro",
6
6
  "license": "AGPL-3.0",
7
7
  "readmeFilename": "README.md",
package/public_api.d.ts CHANGED
@@ -190,6 +190,7 @@ export * from './src/app/core/form/properties/properties.table';
190
190
  export * from './src/app/core/form/properties/properties.module';
191
191
  export * from './src/app/core/form/text-popover/text-popover.component';
192
192
  export * from './src/app/core/form/text-popover/text-popover.module';
193
+ export * from './src/app/core/form/array/form-array';
193
194
  export * from './src/app/core/table/table.model';
194
195
  export * from './src/app/core/table/table.class';
195
196
  export * from './src/app/core/table/async-table.class';
@@ -299,6 +300,8 @@ export * from './src/app/core/form/properties/testing/properties-form.testing.mo
299
300
  export * from './src/app/core/menu/testing/menu.testing';
300
301
  export * from './src/app/core/menu/testing/menu.testing.module';
301
302
  export * from './src/app/core/menu/testing/menu-other.testing';
303
+ export * from './src/app/core/form/array/testing/form-array.test';
304
+ export * from './src/app/core/form/array/testing/form-array-test.module';
302
305
  export * from './src/app/shared/named-filter/testing/named-filter-selector.testing';
303
306
  export * from './src/app/shared/named-filter/testing/named-filter.testing.module';
304
307
  export * from './src/app/social/social.testing.module';
@@ -308,11 +311,4 @@ export * from './src/app/social/user-event/testing/user-event.testing.service';
308
311
  export * from './src/app/social/job/testing/job.testing.module';
309
312
  export * from './src/app/social/job/testing/job-progression.testing';
310
313
  export * from './src/app/social/job/testing/job-progression.testing.service';
311
- export { MatAutocompleteConfigHolder } from './src/app/shared/material/autocomplete/material.autocomplete.config';
312
- export { MatAutocompleteFieldAddOptions } from './src/app/shared/material/autocomplete/material.autocomplete.config';
313
- export { MatAutocompleteFieldConfig } from './src/app/shared/material/autocomplete/material.autocomplete.config';
314
- export { NamedFilterFilter } from './src/app/shared/named-filter/named-filter.model';
315
- export { INamedFilterFilter } from './src/app/shared/named-filter/named-filter.model';
316
- export { NamedFilter } from './src/app/shared/named-filter/named-filter.model';
317
- export { INamedFilter } from './src/app/shared/named-filter/named-filter.model';
318
- export { TableValidatorService } from './src/app/core/table/testing/table-validator.service';
314
+ export * from './src/app/core/table/testing/table-validator.service';
@@ -6,9 +6,10 @@ import * as i3 from "@angular/router";
6
6
  import * as i4 from "./table/testing/table.testing.module";
7
7
  import * as i5 from "./form/text-popover/testing/text-popover.testing.module";
8
8
  import * as i6 from "./form/properties/testing/properties-form.testing.module";
9
+ import * as i7 from "./form/array/testing/form-array-test.module";
9
10
  export declare const CORE_TESTING_PAGES: TestingPage[];
10
11
  export declare class CoreTestingModule {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<CoreTestingModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<CoreTestingModule, never, [typeof i1.CommonModule, typeof i2.TranslateModule, typeof i3.RouterModule, typeof i4.TableTestingModule, typeof i5.TextPopoverTestingModule, typeof i6.PropertiesFormTestingModule], [typeof i3.RouterModule, typeof i4.TableTestingModule, typeof i5.TextPopoverTestingModule, typeof i6.PropertiesFormTestingModule]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CoreTestingModule, never, [typeof i1.CommonModule, typeof i2.TranslateModule, typeof i3.RouterModule, typeof i4.TableTestingModule, typeof i5.TextPopoverTestingModule, typeof i6.PropertiesFormTestingModule, typeof i7.FormArrayTestModule], [typeof i3.RouterModule, typeof i4.TableTestingModule, typeof i5.TextPopoverTestingModule, typeof i6.PropertiesFormTestingModule, typeof i7.FormArrayTestModule]>;
13
14
  static ɵinj: i0.ɵɵInjectorDeclaration<CoreTestingModule>;
14
15
  }
@@ -0,0 +1,136 @@
1
+ import { Entity } from '../../services/model/entity.model';
2
+ import { AbstractControl, AbstractControlOptions, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, ValidatorFn } from '@angular/forms';
3
+ export interface FormArrayHelperOptions {
4
+ allowEmptyArray: boolean;
5
+ allowManyNullValues?: boolean;
6
+ allowDuplicatedValues?: boolean;
7
+ validators?: ValidatorFn[];
8
+ }
9
+ export declare class FormArrayHelper<T = Entity<any>, C extends AbstractControl = AbstractControl> {
10
+ private readonly _formArray;
11
+ private createControl;
12
+ private equals;
13
+ private isEmpty;
14
+ static getOrCreateArray(formBuilder: UntypedFormBuilder, form: UntypedFormGroup, arrayName: string): UntypedFormArray;
15
+ private _allowEmptyArray;
16
+ private _allowManyNullValues;
17
+ private _allowDuplicatedValues;
18
+ private readonly _validators;
19
+ get allowEmptyArray(): boolean;
20
+ set allowEmptyArray(value: boolean);
21
+ get allowManyNullValues(): boolean;
22
+ set allowManyNullValues(value: boolean);
23
+ get allowDuplicatedValues(): boolean;
24
+ set allowDuplicatedValues(value: boolean);
25
+ get formArray(): UntypedFormArray;
26
+ constructor(_formArray: UntypedFormArray, createControl: (value?: T) => C, equals: (v1: T, v2: T) => boolean, isEmpty: (value: T) => boolean, options?: FormArrayHelperOptions);
27
+ /**
28
+ * @param value
29
+ * @param options
30
+ */
31
+ add(value?: T, options?: {
32
+ emitEvent: boolean;
33
+ insertAt?: number;
34
+ }): boolean;
35
+ removeAt(index: number): boolean;
36
+ resize(length: number, options?: {
37
+ emitEvent?: boolean;
38
+ }): boolean;
39
+ clearAt(index: number): boolean;
40
+ isLast(index: number): boolean;
41
+ removeAllEmpty(): void;
42
+ size(): number;
43
+ at(index: number): C;
44
+ /**
45
+ * Resize the FormArray, then set values
46
+ *
47
+ * @param values
48
+ * @param options
49
+ */
50
+ setValue(values: T[], options?: {
51
+ onlySelf?: boolean;
52
+ emitEvent?: boolean;
53
+ }): void;
54
+ /**
55
+ * Resize the FormArray, then patch values
56
+ *
57
+ * @param values
58
+ * @param options
59
+ */
60
+ patchValue(values: T[], options?: {
61
+ onlySelf?: boolean;
62
+ emitEvent?: boolean;
63
+ }): void;
64
+ disable(opts?: {
65
+ onlySelf?: boolean;
66
+ emitEvent?: boolean;
67
+ }): void;
68
+ enable(opts?: {
69
+ onlySelf?: boolean;
70
+ emitEvent?: boolean;
71
+ }): void;
72
+ forEach(ite: (control: C) => void): void;
73
+ protected setAllowEmptyArray(value: boolean): void;
74
+ }
75
+ export declare interface AppFormArrayOptions extends AbstractControlOptions {
76
+ allowEmptyArray?: boolean;
77
+ allowReuseControls?: boolean;
78
+ allowManyNullValues?: boolean;
79
+ allowDuplicateValue?: boolean;
80
+ }
81
+ export declare class AppFormArray<T extends Entity<T>, C extends AbstractControl> extends UntypedFormArray {
82
+ createControl: (value?: T) => C;
83
+ private equals;
84
+ private isEmpty;
85
+ private readonly options;
86
+ get allowEmptyArray(): boolean;
87
+ set allowEmptyArray(value: boolean);
88
+ get allowManyNullValues(): boolean;
89
+ set allowManyNullValues(value: boolean);
90
+ get allowDuplicateValue(): boolean;
91
+ set allowDuplicateValue(value: boolean);
92
+ constructor(createControl: (value?: T) => C, equals: (v1: T, v2: T) => boolean, isEmpty: (value: T) => boolean, options?: AppFormArrayOptions | undefined | null);
93
+ /**
94
+ * WIll rebuild the array, using the given values
95
+ *
96
+ * @param values
97
+ * @param options
98
+ */
99
+ setValue(values: any[], options?: {
100
+ onlySelf?: boolean;
101
+ emitEvent?: boolean;
102
+ }): void;
103
+ patchValue(values: any[] | null | undefined, options?: {
104
+ onlySelf?: boolean;
105
+ emitEvent?: boolean;
106
+ }): void;
107
+ resize(length: number, options?: {
108
+ emitEvent?: boolean;
109
+ }): boolean;
110
+ disable(opts?: {
111
+ onlySelf?: boolean;
112
+ emitEvent?: boolean;
113
+ }): void;
114
+ enable(opts?: {
115
+ onlySelf?: boolean;
116
+ emitEvent?: boolean;
117
+ }): void;
118
+ forEach(ite: (control: C) => void): void;
119
+ /**
120
+ * @param value
121
+ * @param options
122
+ */
123
+ add(value?: T, options?: {
124
+ emitEvent: boolean;
125
+ insertAt?: number;
126
+ }): void;
127
+ removeAt(index: number, options?: {
128
+ emitEvent: boolean;
129
+ }): boolean;
130
+ clearAt(index: number, options?: {
131
+ emitEvent: boolean;
132
+ }): void;
133
+ isLast(index: number): boolean;
134
+ removeAllEmpty(): void;
135
+ protected setAllowEmptyArray(value: boolean): void;
136
+ }
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./form-array.test";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "../../../../shared/shared.module";
5
+ import * as i4 from "../../../core.module";
6
+ import * as i5 from "@ngx-translate/core";
7
+ import * as i6 from "@angular/router";
8
+ export declare class FormArrayTestModule {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormArrayTestModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FormArrayTestModule, [typeof i1.ArrayFormTestPage], [typeof i2.CommonModule, typeof i3.SharedModule, typeof i4.CoreModule, typeof i5.TranslateModule], [typeof i1.ArrayFormTestPage, typeof i6.RouterModule]>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<FormArrayTestModule>;
12
+ }
@@ -0,0 +1,26 @@
1
+ import { ChangeDetectorRef, Injector, OnDestroy, OnInit } from '@angular/core';
2
+ import { UntypedFormBuilder, UntypedFormControl } from '@angular/forms';
3
+ import { PlatformService } from '../../../services/platform.service';
4
+ import { AppForm } from '../../form.class';
5
+ import { AppFormArray } from '../form-array';
6
+ import * as i0 from "@angular/core";
7
+ export declare class ArrayFormTestPage extends AppForm<any> implements OnInit, OnDestroy {
8
+ protected formBuilder: UntypedFormBuilder;
9
+ protected platform: PlatformService;
10
+ protected injection: Injector;
11
+ protected cd: ChangeDetectorRef;
12
+ private subscription;
13
+ get defaultFormArray(): AppFormArray<any, any>;
14
+ get notEmptyFormArray(): AppFormArray<any, any>;
15
+ get nullValuesFormArray(): AppFormArray<any, any>;
16
+ get duplicatedValuesFormArray(): AppFormArray<any, any>;
17
+ get valueToAddControl(): UntypedFormControl;
18
+ constructor(formBuilder: UntypedFormBuilder, platform: PlatformService, injection: Injector, cd: ChangeDetectorRef);
19
+ ngOnInit(): void;
20
+ ngOnDestroy(): void;
21
+ loadData(): Promise<void>;
22
+ protected setFormArrayValue(formArray: AppFormArray<any, any>, values: string | string[]): void;
23
+ protected markForCheck(): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTestPage, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTestPage, "app-array-test", never, {}, {}, never, never, false, never>;
26
+ }
@@ -1,5 +1,4 @@
1
- import { AbstractControl, AbstractControlOptions, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, ValidatorFn } from '@angular/forms';
2
- import { Entity } from '../services/model/entity.model';
1
+ import { AbstractControl } from '@angular/forms';
3
2
  import { filterNumberInput, selectInputContent } from '../../shared/inputs';
4
3
  import { WaitForOptions } from '../../shared/observables';
5
4
  import { addValueInArray, clearValueInArray, copyEntity2Form, disableControls, filterFormErrors, filterFormErrorsByPath, filterFormErrorsByPrefix, getControlFromPath, getFormErrors, getFormValueFromEntity, logFormErrors, markAllAsTouched, markAsUntouched, removeValueInArray, resizeArray, updateValueAndValidity, waitIdle, waitWhilePending } from '../../shared/forms';
@@ -201,126 +200,6 @@ export declare class AppFormProvider<F extends IAppForm = IAppForm> implements I
201
200
  }): void;
202
201
  save(): Promise<boolean>;
203
202
  }
204
- export interface FormArrayHelperOptions {
205
- allowEmptyArray: boolean;
206
- validators?: ValidatorFn[];
207
- }
208
- export declare class FormArrayHelper<T = Entity<any>, C extends AbstractControl = AbstractControl> {
209
- private readonly _formArray;
210
- private createControl;
211
- private equals;
212
- private isEmpty;
213
- static getOrCreateArray(formBuilder: UntypedFormBuilder, form: UntypedFormGroup, arrayName: string): UntypedFormArray;
214
- private _allowEmptyArray;
215
- private readonly _validators;
216
- get allowEmptyArray(): boolean;
217
- set allowEmptyArray(value: boolean);
218
- get formArray(): UntypedFormArray;
219
- constructor(_formArray: UntypedFormArray, createControl: (value?: T) => C, equals: (v1: T, v2: T) => boolean, isEmpty: (value: T) => boolean, options?: FormArrayHelperOptions);
220
- /**
221
- * @param value
222
- * @param options
223
- */
224
- add(value?: T, options?: {
225
- emitEvent: boolean;
226
- insertAt?: number;
227
- }): boolean;
228
- removeAt(index: number): boolean;
229
- resize(length: number, options?: {
230
- emitEvent?: boolean;
231
- }): boolean;
232
- clearAt(index: number): boolean;
233
- isLast(index: number): boolean;
234
- removeAllEmpty(): void;
235
- size(): number;
236
- at(index: number): C;
237
- /**
238
- * Resize the FormArray, then set values
239
- *
240
- * @param values
241
- * @param options
242
- */
243
- setValue(values: T[], options?: {
244
- onlySelf?: boolean;
245
- emitEvent?: boolean;
246
- }): void;
247
- /**
248
- * Resize the FormArray, then patch values
249
- *
250
- * @param values
251
- * @param options
252
- */
253
- patchValue(values: T[], options?: {
254
- onlySelf?: boolean;
255
- emitEvent?: boolean;
256
- }): void;
257
- disable(opts?: {
258
- onlySelf?: boolean;
259
- emitEvent?: boolean;
260
- }): void;
261
- enable(opts?: {
262
- onlySelf?: boolean;
263
- emitEvent?: boolean;
264
- }): void;
265
- forEach(ite: (control: C) => void): void;
266
- protected setAllowEmptyArray(value: boolean): void;
267
- }
268
- export declare interface AppFormArrayOptions extends AbstractControlOptions {
269
- allowEmptyArray?: boolean;
270
- allowReuseControls?: boolean;
271
- }
272
- export declare class AppFormArray<T extends Entity<T>, C extends AbstractControl> extends UntypedFormArray {
273
- createControl: (value?: T) => C;
274
- private equals;
275
- private isEmpty;
276
- private options?;
277
- get allowEmptyArray(): boolean;
278
- set allowEmptyArray(value: boolean);
279
- constructor(createControl: (value?: T) => C, equals: (v1: T, v2: T) => boolean, isEmpty: (value: T) => boolean, options?: AppFormArrayOptions | undefined | null);
280
- /**
281
- * WIll rebuild the array, using the given values
282
- *
283
- * @param values
284
- * @param options
285
- */
286
- setValue(values: any[], options?: {
287
- onlySelf?: boolean;
288
- emitEvent?: boolean;
289
- }): void;
290
- patchValue(values: any[] | null | undefined, options?: {
291
- onlySelf?: boolean;
292
- emitEvent?: boolean;
293
- }): void;
294
- resize(length: number, options?: {
295
- emitEvent?: boolean;
296
- }): void;
297
- disable(opts?: {
298
- onlySelf?: boolean;
299
- emitEvent?: boolean;
300
- }): void;
301
- enable(opts?: {
302
- onlySelf?: boolean;
303
- emitEvent?: boolean;
304
- }): void;
305
- forEach(ite: (control: C) => void): void;
306
- /**
307
- * @param value
308
- * @param options
309
- */
310
- add(value?: T, options?: {
311
- emitEvent: boolean;
312
- insertAt?: number;
313
- }): void;
314
- removeAt(index: number, options?: {
315
- emitEvent: boolean;
316
- }): boolean;
317
- clearAt(index: number, options?: {
318
- emitEvent: boolean;
319
- }): void;
320
- isLast(index: number): boolean;
321
- removeAllEmpty(): void;
322
- protected setAllowEmptyArray(value: boolean): void;
323
- }
324
203
  /**
325
204
  * Helper class, for angular forms
326
205
  */
@@ -1,13 +1,13 @@
1
1
  import { ChangeDetectorRef, EventEmitter, Injector, OnInit } from '@angular/core';
2
- import { AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, FormGroupDirective } from '@angular/forms';
2
+ import { AbstractControl, FormGroupDirective, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
3
3
  import { DateAdapter } from '@angular/material/core';
4
4
  import { Moment } from 'moment';
5
5
  import { LocalSettingsService } from '../../services/local-settings.service';
6
6
  import { AppForm } from '../form.class';
7
- import { FormArrayHelper, FormArrayHelperOptions } from '../form.utils';
8
7
  import { SelectionModel } from '@angular/cdk/collections';
9
8
  import { Observable } from 'rxjs';
10
9
  import { Color } from '@ionic/core';
10
+ import { FormArrayHelper, FormArrayHelperOptions } from '../array/form-array';
11
11
  import * as i0 from "@angular/core";
12
12
  export declare interface ItemButton<T = any> {
13
13
  title?: string;
@@ -1,14 +1,14 @@
1
1
  import { ChangeDetectorRef, Injector, OnInit } from '@angular/core';
2
- import { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, FormGroupDirective } from '@angular/forms';
2
+ import { FormGroupDirective, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
3
3
  import { FormFieldDefinition, FormFieldDefinitionMap } from '../../../shared/form/field.model';
4
4
  import { DateAdapter, ThemePalette } from '@angular/material/core';
5
5
  import { Moment } from 'moment';
6
6
  import { LocalSettingsService } from '../../services/local-settings.service';
7
7
  import { AppForm } from '../form.class';
8
- import { FormArrayHelper, FormArrayHelperOptions } from '../form.utils';
9
8
  import { Property } from '../../../shared/types';
10
9
  import { PropertyValidator } from './property.validator';
11
10
  import { PredefinedColors } from '@ionic/core';
11
+ import { FormArrayHelper, FormArrayHelperOptions } from '../array/form-array';
12
12
  import * as i0 from "@angular/core";
13
13
  export declare class AppPropertiesForm<T = Property> extends AppForm<T[]> implements OnInit {
14
14
  protected formBuilder: UntypedFormBuilder;
@@ -3,7 +3,7 @@ import { AccountService } from '../services/account.service';
3
3
  import { LocaleConfig, LocalSettings, UsageMode } from '../services/model/settings.model';
4
4
  import { UntypedFormArray, UntypedFormBuilder } from '@angular/forms';
5
5
  import { AppForm } from '../form/form.class';
6
- import { CanLeave, FormArrayHelper } from '../form/form.utils';
6
+ import { CanLeave } from '../form/form.utils';
7
7
  import { TranslateService } from '@ngx-translate/core';
8
8
  import { LocalSettingsValidatorService } from '../services/validator/local-settings.validator';
9
9
  import { PlatformService } from '../services/platform.service';
@@ -14,6 +14,7 @@ import { AlertController, NavController } from '@ionic/angular';
14
14
  import { Property } from '../../shared/types';
15
15
  import { ISelectPeerModalOptions } from '../peer/select-peer.modal';
16
16
  import { IMenuItem } from '../menu/menu.model';
17
+ import { FormArrayHelper } from '../form/array/form-array';
17
18
  import * as i0 from "@angular/core";
18
19
  export declare const APP_SETTINGS_MENU_ITEMS: InjectionToken<IMenuItem[]>;
19
20
  export declare class SettingsPage extends AppForm<LocalSettings> implements OnInit, OnDestroy, CanLeave {
@@ -40,6 +40,8 @@ export declare function disableControls(form: UntypedFormGroup, paths: string[],
40
40
  export declare function addValueInArray(arrayControl: UntypedFormArray, createControl: (value?: any) => AbstractControl, equals: (v1: any, v2: any) => boolean, isEmpty: (value: any) => boolean, value: any, options?: {
41
41
  emitEvent: boolean;
42
42
  insertAt?: number;
43
+ allowManyNullValues?: boolean;
44
+ allowDuplicateValue?: boolean;
43
45
  }): boolean;
44
46
  /**
45
47
  * Set an array using given default values. Each default value will be pass to the 'createControl()' function
@@ -73,6 +73,11 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
73
73
  applyImplicitValue: boolean | ((value: any) => boolean);
74
74
  dropButtonTitle: string;
75
75
  clearButtonTitle: string;
76
+ /**
77
+ * @deprecated Use panelClass instead
78
+ */
79
+ set classList(value: string);
80
+ get classList(): string;
76
81
  clicked: EventEmitter<MouseEvent>;
77
82
  blurred: EventEmitter<FocusEvent>;
78
83
  focused: EventEmitter<FocusEvent>;
@@ -142,7 +147,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
142
147
  */
143
148
  private _fixSearchbarOverlay;
144
149
  static ɵfac: i0.ɵɵFactoryDeclaration<MatAutocompleteField, [null, null, null, null, null, { optional: true; }]>;
145
- static ɵcmp: i0.ɵɵComponentDeclaration<MatAutocompleteField, "mat-autocomplete-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; "optionSelected": "optionSelected"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
150
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatAutocompleteField, "mat-autocomplete-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; "optionSelected": "optionSelected"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
146
151
  static ngAcceptInputType_required: unknown;
147
152
  static ngAcceptInputType_mobile: unknown;
148
153
  static ngAcceptInputType_clearable: unknown;
@@ -66,6 +66,11 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
66
66
  applyImplicitValue: boolean | ((value: any) => boolean);
67
67
  dropButtonTitle: string;
68
68
  clearButtonTitle: string;
69
+ /**
70
+ * @deprecated Use panelClass instead
71
+ */
72
+ set classList(value: string);
73
+ get classList(): string;
69
74
  clicked: EventEmitter<MouseEvent>;
70
75
  blurred: EventEmitter<FocusEvent>;
71
76
  focused: EventEmitter<FocusEvent>;
@@ -126,7 +131,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
126
131
  private markForCheck;
127
132
  private markAsLoading;
128
133
  static ɵfac: i0.ɵɵFactoryDeclaration<MatChipsField, [null, { optional: true; }]>;
129
- static ɵcmp: i0.ɵɵComponentDeclaration<MatChipsField, "mat-chips-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
134
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatChipsField, "mat-chips-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
130
135
  static ngAcceptInputType_required: unknown;
131
136
  static ngAcceptInputType_mobile: unknown;
132
137
  static ngAcceptInputType_readonly: unknown;
@@ -2,7 +2,7 @@
2
2
  "name": "ngx-sumaris-components",
3
3
  "short_name": "ngx-sumaris-components",
4
4
  "manifest_version": 1,
5
- "version": "2.12.13",
5
+ "version": "2.12.15",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -208,7 +208,12 @@ mat-option:not(:last-of-type) {
208
208
  min-width: var(--min-width) !important;
209
209
  max-width: var(--max-width) !important;
210
210
 
211
- div.mat-mdc-select-panel {
211
+ // FIXME : This is a workaround find at : https://github.com/angular/components/issues/26000#issuecomment-1563107933
212
+ &:has(.mat-select-panel-fit-content) {
213
+ --min-width: fit-content !important;
214
+ }
215
+
216
+ .mat-mdc-select-panel {
212
217
  --mat-switch-visible-track-transition: transform 75ms 50ms cubic-bezier(0, 0, 0.2, 1);
213
218
  transition: --mat-switch-visible-track-transition;
214
219
  transform: scaleY(1) !important;
@@ -224,15 +229,23 @@ mat-option:not(:last-of-type) {
224
229
  }
225
230
  }
226
231
  }
232
+
227
233
  }
228
- .mat-mdc-autocomplete-panel {
234
+
235
+
236
+ .cdk-overlay-pane:has(.mat-mdc-autocomplete-panel) {
229
237
  --min-width: 200px;
230
238
  --max-width: calc(min(100%, 100vw - 64px));
231
239
  min-width: var(--min-width) !important;
232
240
  max-width: var(--max-width) !important;
233
- width: var(--max-width) !important;
241
+
242
+ // FIXME : This is a workaround find at : https://github.com/angular/components/issues/26000#issuecomment-1563107933
243
+ &:has(.mat-select-panel-fit-content) {
244
+ --min-width: fit-content !important;
245
+ }
234
246
  }
235
247
 
248
+
236
249
  .mat-mdc-autocomplete-panel-medium-size .mat-mdc-autocomplete-panel,
237
250
  .mat-mdc-autocomplete-panel-medium-size.mat-mdc-autocomplete-panel,
238
251
  .min-width-medium .mat-mdc-autocomplete-panel,
@@ -259,15 +272,6 @@ mat-option:not(:last-of-type) {
259
272
  --min-width: 80vw;
260
273
  }
261
274
 
262
-
263
- // FIXME : This is a workaround find at : https://github.com/angular/components/issues/26000#issuecomment-1563107933
264
- .cdk-overlay-pane.mat-select-panel-fit-content {
265
- --min-width: fit-content;
266
- --max-width: calc(100vw - 64px);
267
- min-width: var(--min-width);
268
- max-width: var(--max-width);
269
- }
270
-
271
275
  .mat-mdc-autocomplete-panel-center .mat-mdc-autocomplete-panel,
272
276
  .mat-mdc-autocomplete-panel-center.mat-mdc-autocomplete-panel {
273
277
  margin-left: calc(var(--min-width, 200px) / -2 + 50%) !important;