@sumaris-net/ngx-components 2.12.14 → 2.12.16-rc1

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 (54) hide show
  1. package/doc/changelog.md +5 -0
  2. package/esm2022/public_api.mjs +5 -5
  3. package/esm2022/src/app/core/account/new-token.modal.mjs +1 -1
  4. package/esm2022/src/app/core/core.testing.module.mjs +19 -5
  5. package/esm2022/src/app/core/form/array/form-array.mjs +324 -0
  6. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
  7. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +95 -0
  8. package/esm2022/src/app/core/form/form.utils.mjs +1 -306
  9. package/esm2022/src/app/core/form/list/list.form.mjs +3 -2
  10. package/esm2022/src/app/core/form/properties/properties.form.mjs +2 -2
  11. package/esm2022/src/app/core/settings/settings.page.mjs +3 -2
  12. package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
  13. package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
  14. package/esm2022/src/app/shared/constants.mjs +4 -1
  15. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +1 -4
  16. package/esm2022/src/app/shared/form/field.component.mjs +1 -1
  17. package/esm2022/src/app/shared/forms.mjs +12 -8
  18. package/esm2022/src/app/shared/functions.mjs +7 -3
  19. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
  20. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +88 -50
  21. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +5 -4
  22. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +16 -14
  23. package/esm2022/src/app/shared/material/chips/material.chips.mjs +49 -37
  24. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +1 -1
  25. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
  26. package/esm2022/src/app/shared/pipes/pipes.module.mjs +7 -4
  27. package/esm2022/src/app/shared/pipes/types.pipes.mjs +17 -1
  28. package/esm2022/src/app/shared/types.mjs +1 -1
  29. package/esm2022/src/app/social/message/message.form.mjs +1 -1
  30. package/fesm2022/sumaris-net.ngx-components.mjs +1062 -866
  31. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/public_api.d.ts +4 -8
  34. package/src/app/core/core.testing.module.d.ts +2 -1
  35. package/src/app/core/form/array/form-array.d.ts +136 -0
  36. package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
  37. package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
  38. package/src/app/core/form/form.utils.d.ts +1 -122
  39. package/src/app/core/form/list/list.form.d.ts +2 -2
  40. package/src/app/core/form/properties/properties.form.d.ts +2 -2
  41. package/src/app/core/settings/settings.page.d.ts +2 -1
  42. package/src/app/shared/constants.d.ts +2 -0
  43. package/src/app/shared/directives/autofocus.directive.d.ts +0 -1
  44. package/src/app/shared/forms.d.ts +2 -0
  45. package/src/app/shared/functions.d.ts +1 -0
  46. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +3 -0
  47. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +4 -1
  48. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +2 -1
  49. package/src/app/shared/material/chips/material.chips.d.ts +3 -1
  50. package/src/app/shared/pipes/pipes.module.d.ts +1 -1
  51. package/src/app/shared/pipes/types.pipes.d.ts +6 -1
  52. package/src/app/shared/types.d.ts +2 -0
  53. package/src/assets/manifest.json +1 -1
  54. package/src/theme/_ngx-components.forms.scss +2 -2
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.14",
4
+ "version": "2.12.16-rc1",
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 {
@@ -6,3 +6,5 @@ export declare const PUBKEY_REGEXP: RegExp;
6
6
  export declare const SPACE_PLACEHOLDER_CHAR = "\u2000";
7
7
  export declare const EMPTY_PLACEHOLDER_CHAR = "\uFEFF";
8
8
  export declare const KEYBOARD_HIDE_DELAY_MS = 250;
9
+ export declare const DEFAULT_JOIN_PROPERTIES_SEPARATOR: string;
10
+ export declare const DEFAULT_JOIN_ARRAY_VALUES_SEPARATOR: string;
@@ -6,7 +6,6 @@ export declare class AutofocusDirective implements AfterContentInit, OnChanges,
6
6
  private readonly keyboard;
7
7
  shouldFocusElement: any;
8
8
  timerDelay: number;
9
- private readonly _mobile;
10
9
  private _timer;
11
10
  constructor(_elementRef: ElementRef, keyboard: KeyboardService);
12
11
  ngAfterContentInit(): void;
@@ -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
@@ -13,6 +13,7 @@ export declare function arrayResize<T>(array: T[] | null | undefined, size: numb
13
13
  export declare function newArray<T>(size: number, defaultValue?: T): T[];
14
14
  export declare function isNotNilBoolean(obj: any | null | undefined): obj is boolean;
15
15
  export declare function isNotNilString(obj: any | null | undefined): obj is string;
16
+ export declare function isNotNilObject(obj: any | null | undefined): obj is string;
16
17
  export declare function isBlankString(obj: any | null | undefined): obj is string;
17
18
  export declare function notNilOrDefault<T>(obj: T | null | undefined, defaultValue: T): T;
18
19
  export declare function arraySize<T>(obj: T[] | null | undefined): number;
@@ -10,6 +10,9 @@ export declare interface MatAutocompleteFieldConfig<T = any, F = any> {
10
10
  columnNames?: (string | undefined)[];
11
11
  multiple?: boolean;
12
12
  displayWith?: DisplayFn;
13
+ displayWithSeparator?: string;
14
+ splitSearchText?: boolean;
15
+ trimSearchText?: boolean;
13
16
  equals?: EqualsFn;
14
17
  showAllOnFocus?: boolean;
15
18
  showPanelOnFocus?: boolean;
@@ -48,6 +48,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
48
48
  mobile: boolean;
49
49
  clearable: boolean;
50
50
  debounceTime: number;
51
+ displaySeparator: string | null;
51
52
  displayWith: DisplayFn | null;
52
53
  displayAttributes: string[];
53
54
  displayColumnSizes: (number | 'auto' | undefined)[];
@@ -73,6 +74,8 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
73
74
  applyImplicitValue: boolean | ((value: any) => boolean);
74
75
  dropButtonTitle: string;
75
76
  clearButtonTitle: string;
77
+ trimSearchText: boolean;
78
+ splitSearchText: boolean;
76
79
  /**
77
80
  * @deprecated Use panelClass instead
78
81
  */
@@ -147,7 +150,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
147
150
  */
148
151
  private _fixSearchbarOverlay;
149
152
  static ɵfac: i0.ɵɵFactoryDeclaration<MatAutocompleteField, [null, null, null, null, null, { optional: true; }]>;
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>;
153
+ 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; }; "displaySeparator": { "alias": "displaySeparator"; "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; }; "trimSearchText": { "alias": "trimSearchText"; "required": false; }; "splitSearchText": { "alias": "splitSearchText"; "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>;
151
154
  static ngAcceptInputType_required: unknown;
152
155
  static ngAcceptInputType_mobile: unknown;
153
156
  static ngAcceptInputType_clearable: unknown;
@@ -1,4 +1,5 @@
1
+ import { DisplayFn } from '../../form/field.model';
1
2
  export declare class MatAutocompleteFieldUtils {
2
- static createDisplayFn(displayAttributes: string[], multiple?: boolean): (value: any) => string;
3
+ static createDisplayFn(displayAttributes: string[], multiple?: boolean, propertySeparator?: string, itemSeparator?: string): DisplayFn;
3
4
  static defaultEquals(o1: any, o2: any): boolean;
4
5
  }
@@ -42,6 +42,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
42
42
  readonly: boolean;
43
43
  clearable: boolean;
44
44
  debounceTime: number;
45
+ displaySeparator: string | null;
45
46
  displayWith: DisplayFn | null;
46
47
  displayAttributes: string[];
47
48
  displayColumnSizes: (number | 'auto' | undefined)[];
@@ -66,6 +67,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
66
67
  applyImplicitValue: boolean | ((value: any) => boolean);
67
68
  dropButtonTitle: string;
68
69
  clearButtonTitle: string;
70
+ trimSearchText: boolean;
69
71
  /**
70
72
  * @deprecated Use panelClass instead
71
73
  */
@@ -131,7 +133,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
131
133
  private markForCheck;
132
134
  private markAsLoading;
133
135
  static ɵfac: i0.ɵɵFactoryDeclaration<MatChipsField, [null, { optional: true; }]>;
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>;
136
+ 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; }; "displaySeparator": { "alias": "displaySeparator"; "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; }; "trimSearchText": { "alias": "trimSearchText"; "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>;
135
137
  static ngAcceptInputType_required: unknown;
136
138
  static ngAcceptInputType_mobile: unknown;
137
139
  static ngAcceptInputType_readonly: unknown;
@@ -25,6 +25,6 @@ import * as i23 from "@ionic/angular";
25
25
  import * as i24 from "@ngx-translate/core";
26
26
  export declare class SharedPipesModule {
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedPipesModule, never>;
28
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedPipesModule, [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, typeof i1.ValueFormatPipe, typeof i2.DateFormatPipe, typeof i3.DateDiffDurationPipe, typeof i4.DurationPipe, typeof i5.DateFromNowPipe, typeof i6.LatLongFormatPipe, typeof i6.LatitudeFormatPipe, typeof i6.LongitudeFormatPipe, typeof i7.HighlightPipe, typeof i8.NumberFormatPipe, typeof i9.FileSizePipe, typeof i10.MathAbsPipe, typeof i10.OddPipe, typeof i10.EvenPipe, typeof i11.NotEmptyArrayPipe, typeof i11.EmptyArrayPipe, typeof i11.ArrayLengthPipe, typeof i11.ArrayFirstPipe, typeof i11.ArrayLastPipe, typeof i11.ArrayPluckPipe, typeof i11.ArrayIncludesPipe, typeof i11.ArrayFilterPipe, typeof i11.ArrayJoinPipe, typeof i12.MapGetPipe, typeof i12.MapKeysPipe, typeof i12.MapValuesPipe, typeof i13.IsNilOrBlankPipe, typeof i13.IsNotNilOrBlankPipe, typeof i13.IsNilOrNaNPipe, typeof i13.IsNotNilOrNaNPipe, typeof i13.IsNotNilPipe, typeof i13.IsNilPipe, typeof i13.ToStringPipe, typeof i13.CapitalizePipe, typeof i13.StrLengthPipe, typeof i13.StrIncludesPipe, typeof i1.BooleanFormatPipe, typeof i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, typeof i16.FormErrorPipe, typeof i16.FormErrorTranslatePipe, typeof i16.FormGetPipe, typeof i16.FormGetControlPipe, typeof i16.FormGetArrayPipe, typeof i16.FormGetGroupPipe, typeof i16.FormGetValuePipe, typeof i17.MatColorPipe, typeof i18.AsAnyPipe, typeof i18.AsArrayPipe, typeof i18.AsObservablePipe, typeof i18.AsFloatLabelTypePipe, typeof i19.MaskitoPlaceholderPipe, typeof i20.IsSelectedPipe, typeof i20.IsNotEmptySelectionPipe, typeof i20.IsEmptySelectionPipe, typeof i20.SelectionLengthPipe, typeof i20.IsMultipleSelectionPipe, typeof i20.IsSingleSelectionPipe, typeof i21.BadgeNumberPipe], [typeof i22.CommonModule, typeof i23.IonicModule, typeof i24.TranslateModule], [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, typeof i1.ValueFormatPipe, typeof i2.DateFormatPipe, typeof i3.DateDiffDurationPipe, typeof i4.DurationPipe, typeof i5.DateFromNowPipe, typeof i6.LatLongFormatPipe, typeof i6.LatitudeFormatPipe, typeof i6.LongitudeFormatPipe, typeof i7.HighlightPipe, typeof i8.NumberFormatPipe, typeof i9.FileSizePipe, typeof i10.MathAbsPipe, typeof i10.OddPipe, typeof i10.EvenPipe, typeof i11.NotEmptyArrayPipe, typeof i11.EmptyArrayPipe, typeof i11.ArrayLengthPipe, typeof i11.ArrayFirstPipe, typeof i11.ArrayLastPipe, typeof i11.ArrayPluckPipe, typeof i11.ArrayIncludesPipe, typeof i11.ArrayFilterPipe, typeof i11.ArrayJoinPipe, typeof i12.MapGetPipe, typeof i12.MapKeysPipe, typeof i12.MapValuesPipe, typeof i13.IsNilOrBlankPipe, typeof i13.IsNotNilOrBlankPipe, typeof i13.IsNilOrNaNPipe, typeof i13.IsNotNilOrNaNPipe, typeof i13.IsNotNilPipe, typeof i13.IsNilPipe, typeof i13.ToStringPipe, typeof i13.CapitalizePipe, typeof i13.StrLengthPipe, typeof i13.StrIncludesPipe, typeof i1.BooleanFormatPipe, typeof i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, typeof i16.FormErrorPipe, typeof i16.FormErrorTranslatePipe, typeof i16.FormGetPipe, typeof i16.FormGetControlPipe, typeof i16.FormGetArrayPipe, typeof i16.FormGetGroupPipe, typeof i16.FormGetValuePipe, typeof i17.MatColorPipe, typeof i18.AsAnyPipe, typeof i18.AsArrayPipe, typeof i18.AsObservablePipe, typeof i18.AsFloatLabelTypePipe, typeof i19.MaskitoPlaceholderPipe, typeof i20.IsSelectedPipe, typeof i20.IsNotEmptySelectionPipe, typeof i20.IsEmptySelectionPipe, typeof i20.SelectionLengthPipe, typeof i20.IsMultipleSelectionPipe, typeof i20.IsSingleSelectionPipe, typeof i21.BadgeNumberPipe]>;
28
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedPipesModule, [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, typeof i1.ValueFormatPipe, typeof i2.DateFormatPipe, typeof i3.DateDiffDurationPipe, typeof i4.DurationPipe, typeof i5.DateFromNowPipe, typeof i6.LatLongFormatPipe, typeof i6.LatitudeFormatPipe, typeof i6.LongitudeFormatPipe, typeof i7.HighlightPipe, typeof i8.NumberFormatPipe, typeof i9.FileSizePipe, typeof i10.MathAbsPipe, typeof i10.OddPipe, typeof i10.EvenPipe, typeof i11.NotEmptyArrayPipe, typeof i11.EmptyArrayPipe, typeof i11.ArrayLengthPipe, typeof i11.ArrayFirstPipe, typeof i11.ArrayLastPipe, typeof i11.ArrayPluckPipe, typeof i11.ArrayIncludesPipe, typeof i11.ArrayFilterPipe, typeof i11.ArrayJoinPipe, typeof i12.MapGetPipe, typeof i12.MapKeysPipe, typeof i12.MapValuesPipe, typeof i13.IsNilOrBlankPipe, typeof i13.IsNotNilOrBlankPipe, typeof i13.IsNilOrNaNPipe, typeof i13.IsNotNilOrNaNPipe, typeof i13.IsNotNilPipe, typeof i13.IsNilPipe, typeof i13.ToStringPipe, typeof i13.CapitalizePipe, typeof i13.StrLengthPipe, typeof i13.StrIncludesPipe, typeof i1.BooleanFormatPipe, typeof i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, typeof i16.FormErrorPipe, typeof i16.FormErrorTranslatePipe, typeof i16.FormGetPipe, typeof i16.FormGetControlPipe, typeof i16.FormGetArrayPipe, typeof i16.FormGetGroupPipe, typeof i16.FormGetValuePipe, typeof i17.MatColorPipe, typeof i18.AsAnyPipe, typeof i18.AsArrayPipe, typeof i18.AsObservablePipe, typeof i18.AsFloatLabelTypePipe, typeof i19.MaskitoPlaceholderPipe, typeof i20.IsSelectedPipe, typeof i20.IsNotEmptySelectionPipe, typeof i20.IsEmptySelectionPipe, typeof i20.SelectionLengthPipe, typeof i20.IsMultipleSelectionPipe, typeof i20.IsSingleSelectionPipe, typeof i21.BadgeNumberPipe, typeof i18.AsBooleanPipe], [typeof i22.CommonModule, typeof i23.IonicModule, typeof i24.TranslateModule], [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, typeof i1.ValueFormatPipe, typeof i2.DateFormatPipe, typeof i3.DateDiffDurationPipe, typeof i4.DurationPipe, typeof i5.DateFromNowPipe, typeof i6.LatLongFormatPipe, typeof i6.LatitudeFormatPipe, typeof i6.LongitudeFormatPipe, typeof i7.HighlightPipe, typeof i8.NumberFormatPipe, typeof i9.FileSizePipe, typeof i10.MathAbsPipe, typeof i10.OddPipe, typeof i10.EvenPipe, typeof i11.NotEmptyArrayPipe, typeof i11.EmptyArrayPipe, typeof i11.ArrayLengthPipe, typeof i11.ArrayFirstPipe, typeof i11.ArrayLastPipe, typeof i11.ArrayPluckPipe, typeof i11.ArrayIncludesPipe, typeof i11.ArrayFilterPipe, typeof i11.ArrayJoinPipe, typeof i12.MapGetPipe, typeof i12.MapKeysPipe, typeof i12.MapValuesPipe, typeof i13.IsNilOrBlankPipe, typeof i13.IsNotNilOrBlankPipe, typeof i13.IsNilOrNaNPipe, typeof i13.IsNotNilOrNaNPipe, typeof i13.IsNotNilPipe, typeof i13.IsNilPipe, typeof i13.ToStringPipe, typeof i13.CapitalizePipe, typeof i13.StrLengthPipe, typeof i13.StrIncludesPipe, typeof i1.BooleanFormatPipe, typeof i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, typeof i16.FormErrorPipe, typeof i16.FormErrorTranslatePipe, typeof i16.FormGetPipe, typeof i16.FormGetControlPipe, typeof i16.FormGetArrayPipe, typeof i16.FormGetGroupPipe, typeof i16.FormGetValuePipe, typeof i17.MatColorPipe, typeof i18.AsAnyPipe, typeof i18.AsArrayPipe, typeof i18.AsObservablePipe, typeof i18.AsFloatLabelTypePipe, typeof i19.MaskitoPlaceholderPipe, typeof i20.IsSelectedPipe, typeof i20.IsNotEmptySelectionPipe, typeof i20.IsEmptySelectionPipe, typeof i20.SelectionLengthPipe, typeof i20.IsMultipleSelectionPipe, typeof i20.IsSingleSelectionPipe, typeof i21.BadgeNumberPipe, typeof i18.AsBooleanPipe]>;
29
29
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedPipesModule>;
30
30
  }
@@ -1,4 +1,4 @@
1
- import { PipeTransform } from '@angular/core';
1
+ import { PipeTransform, Predicate } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { FloatLabelType } from '@angular/material/form-field';
4
4
  import { AppFloatLabelType } from '../form/field.model';
@@ -23,3 +23,8 @@ export declare class AsFloatLabelTypePipe implements PipeTransform {
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<AsFloatLabelTypePipe, never>;
24
24
  static ɵpipe: i0.ɵɵPipeDeclaration<AsFloatLabelTypePipe, "asFloatLabelType", false>;
25
25
  }
26
+ export declare class AsBooleanPipe implements PipeTransform {
27
+ transform(value: any, opts?: boolean | Predicate<any>): boolean;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<AsBooleanPipe, never>;
29
+ static ɵpipe: i0.ɵɵPipeDeclaration<AsBooleanPipe, "asBoolean", false>;
30
+ }
@@ -27,3 +27,5 @@ export declare interface IconRef {
27
27
  }
28
28
  export declare type FilterFn<T> = Predicate<T>;
29
29
  export declare type FilterFnFactory<T, F> = (filter: F) => FilterFn<T>;
30
+ export declare type Function<P, R> = (value: P) => R;
31
+ export declare type BiFunction<P1, P2, R> = (v1: P1, v2: P2) => R;
@@ -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.14",
5
+ "version": "2.12.16-rc1",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -339,8 +339,8 @@ ion-grid.form-container {
339
339
 
340
340
  // Dark mode mode
341
341
  html.dark {
342
- div.mat-mdc-autocomplete-panel,
343
- div.mat-mdc-select-panel {
342
+ .mat-mdc-autocomplete-panel,
343
+ .mat-mdc-select-panel {
344
344
  --mat-select-panel-background-color: var(--ion-color-step-100);
345
345
  --mat-autocomplete-background-color: var(--ion-color-step-100);
346
346