@sumaris-net/ngx-components 2.12.14 → 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.
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.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
@@ -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.15",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{