@sumaris-net/ngx-components 2.7.6 → 2.8.0-rc2

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 (52) hide show
  1. package/doc/changelog.md +8 -0
  2. package/esm2022/public_api.mjs +7 -3
  3. package/esm2022/src/app/admin/users/users.mjs +5 -3
  4. package/esm2022/src/app/core/account/new-token.modal.mjs +4 -4
  5. package/esm2022/src/app/core/auth/auth.form.mjs +2 -2
  6. package/esm2022/src/app/core/core.testing.module.mjs +2 -2
  7. package/esm2022/src/app/core/form/entity/editor.class.mjs +33 -487
  8. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +14 -26
  9. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +5 -4
  10. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +194 -0
  11. package/esm2022/src/app/core/form/form-container.class.mjs +312 -0
  12. package/esm2022/src/app/core/form/form.class.mjs +27 -36
  13. package/esm2022/src/app/core/form/form.utils.mjs +1 -1
  14. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +2 -2
  15. package/esm2022/src/app/core/services/model/settings.model.mjs +2 -1
  16. package/esm2022/src/app/core/settings/settings.page.mjs +5 -9
  17. package/esm2022/src/app/core/table/table.class.mjs +9 -5
  18. package/esm2022/src/app/core/table/table.module.mjs +16 -3
  19. package/esm2022/src/app/core/table/table.pipes.mjs +74 -0
  20. package/esm2022/src/app/core/table/testing/table.testing.mjs +39 -17
  21. package/esm2022/src/app/core/table/testing/table2.testing.mjs +40 -22
  22. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
  23. package/esm2022/src/app/shared/pipes/form.pipes.mjs +10 -10
  24. package/esm2022/src/app/shared/pipes/pipes.module.mjs +28 -3
  25. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +176 -0
  26. package/esm2022/src/app/shared/validator/validators.mjs +3 -2
  27. package/fesm2022/sumaris-net.ngx-components.mjs +655 -321
  28. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/public_api.d.ts +6 -2
  31. package/src/app/core/account/new-token.modal.d.ts +1 -1
  32. package/src/app/core/form/entity/editor.class.d.ts +18 -177
  33. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +9 -12
  34. package/src/app/core/form/entity/entity-editor.class.d.ts +10 -6
  35. package/src/app/core/form/entity/tab-editor.class.d.ts +70 -0
  36. package/src/app/core/form/form-container.class.d.ts +123 -0
  37. package/src/app/core/form/form.class.d.ts +11 -21
  38. package/src/app/core/form/form.utils.d.ts +38 -23
  39. package/src/app/core/menu/testing/menu.testing.d.ts +1 -1
  40. package/src/app/core/services/model/settings.model.d.ts +1 -0
  41. package/src/app/core/settings/settings.page.d.ts +1 -2
  42. package/src/app/core/table/table.module.d.ts +4 -3
  43. package/src/app/core/table/table.pipes.d.ts +28 -0
  44. package/src/app/core/table/testing/table.testing.d.ts +9 -5
  45. package/src/app/core/table/testing/table2.testing.d.ts +10 -5
  46. package/src/app/shared/pipes/form.pipes.d.ts +1 -1
  47. package/src/app/shared/pipes/pipes.module.d.ts +5 -4
  48. package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
  49. package/src/app/shared/validator/validators.d.ts +1 -0
  50. package/src/assets/manifest.json +1 -1
  51. package/src/theme/_ngx-components.scss +4 -0
  52. package/src/theme/_ngx-components.table.scss +4 -14
@@ -8,38 +8,22 @@ import { FormErrorTranslator, FormErrorTranslatorOptions, IFormControlPathTransl
8
8
  import { TranslateService } from '@ngx-translate/core';
9
9
  import { MatAutocompleteConfigHolder, MatAutocompleteFieldAddOptions, MatAutocompleteFieldConfig } from '../../shared/material/autocomplete/material.autocomplete.config';
10
10
  import * as i0 from "@angular/core";
11
- export declare class AppForm<T> implements IAppForm, OnInit, OnDestroy, IFormControlPathTranslator {
11
+ export declare class AppForm<T> implements IAppForm<T>, OnInit, OnDestroy, IFormControlPathTranslator {
12
12
  private _subscription;
13
13
  protected _form: UntypedFormGroup;
14
- protected _enable: boolean;
14
+ protected _enabled: boolean;
15
15
  protected errorTranslator: FormErrorTranslator;
16
16
  protected i18nFieldPrefix: string;
17
17
  protected readonly translate: TranslateService;
18
18
  protected readonly settings: LocalSettingsService;
19
19
  protected readonly destroySubject: Subject<void>;
20
+ readonly readySubject: BehaviorSubject<boolean>;
21
+ readonly loadingSubject: BehaviorSubject<boolean>;
22
+ readonly errorSubject: BehaviorSubject<string>;
20
23
  readonly autocompleteHelper: MatAutocompleteConfigHolder;
21
24
  readonly autocompleteFields: {
22
25
  [key: string]: MatAutocompleteFieldConfig;
23
26
  };
24
- readonly readySubject: BehaviorSubject<boolean>;
25
- readonly loadingSubject: BehaviorSubject<boolean>;
26
- readonly errorSubject: BehaviorSubject<string>;
27
- /**
28
- * @deprecated
29
- */
30
- protected set _loading(value: boolean);
31
- /**
32
- * @deprecated
33
- */
34
- protected get _loading(): boolean;
35
- /**
36
- * @deprecated
37
- */
38
- protected get _$ready(): BehaviorSubject<boolean>;
39
- /**
40
- * @deprecated
41
- */
42
- protected get _$loading(): BehaviorSubject<boolean>;
43
27
  get error(): string;
44
28
  set error(error: string);
45
29
  get loading(): boolean;
@@ -55,6 +39,11 @@ export declare class AppForm<T> implements IAppForm, OnInit, OnDestroy, IFormCon
55
39
  get untouched(): boolean;
56
40
  get enabled(): boolean;
57
41
  get disabled(): boolean;
42
+ /**
43
+ * @deprecated
44
+ */
45
+ protected get _enable(): boolean;
46
+ protected set _enable(value: boolean);
58
47
  disable(opts?: {
59
48
  onlySelf?: boolean;
60
49
  emitEvent?: boolean;
@@ -84,6 +73,7 @@ export declare class AppForm<T> implements IAppForm, OnInit, OnDestroy, IFormCon
84
73
  checkValid?: boolean;
85
74
  }): Promise<void>;
86
75
  setForm(form: UntypedFormGroup): void;
76
+ getValue(): Promise<T> | T;
87
77
  setValue(data: T, opts?: {
88
78
  emitEvent?: boolean;
89
79
  onlySelf?: boolean;
@@ -7,7 +7,7 @@ export declare type IAppFormGetter = () => IAppForm;
7
7
  export declare interface OnReady {
8
8
  ngOnReady(): any;
9
9
  }
10
- export interface IAppForm {
10
+ export interface IAppForm<T = any> {
11
11
  invalid: boolean;
12
12
  valid: boolean;
13
13
  dirty: boolean;
@@ -17,49 +17,64 @@ export interface IAppForm {
17
17
  disabled: boolean;
18
18
  touched: boolean;
19
19
  untouched: boolean;
20
+ disable(opts?: {
21
+ onlySelf?: boolean;
22
+ emitEvent?: boolean;
23
+ }): void;
24
+ enable(opts?: {
25
+ onlySelf?: boolean;
26
+ emitEvent?: boolean;
27
+ }): void;
20
28
  empty?: boolean;
21
29
  loading?: boolean;
30
+ loaded?: boolean;
31
+ destroyed?: boolean;
22
32
  ready(): Promise<void>;
23
33
  waitIdle(opts?: WaitForOptions): Promise<any>;
24
- disable(opts?: {
34
+ setValue?: (data: T, opts?: {
25
35
  onlySelf?: boolean;
26
36
  emitEvent?: boolean;
27
- }): any;
28
- enable(opts?: {
37
+ }) => Promise<void> | void;
38
+ patchValue?: (data: T, opts?: {
39
+ onlySelf?: boolean;
40
+ emitEvent?: boolean;
41
+ }) => Promise<void> | void;
42
+ reset?: (data?: T, opts?: {
29
43
  onlySelf?: boolean;
30
44
  emitEvent?: boolean;
31
- }): any;
45
+ }) => void;
46
+ getValue?: () => Promise<T> | T;
32
47
  markAsPristine(opts?: {
33
48
  onlySelf?: boolean;
34
49
  emitEvent?: boolean;
35
- }): any;
50
+ }): void;
36
51
  markAsUntouched(opts?: {
37
52
  onlySelf?: boolean;
38
53
  emitEvent?: boolean;
39
- }): any;
54
+ }): void;
40
55
  markAsTouched(opts?: {
41
56
  onlySelf?: boolean;
42
57
  emitEvent?: boolean;
43
- }): any;
58
+ }): void;
44
59
  markAllAsTouched(opts?: {
45
60
  emitEvent?: boolean;
46
- }): any;
61
+ }): void;
47
62
  markAsDirty(opts?: {
48
63
  onlySelf?: boolean;
49
64
  emitEvent?: boolean;
50
- }): any;
65
+ }): void;
51
66
  markAsLoading(opts?: {
52
67
  onlySelf?: boolean;
53
68
  emitEvent?: boolean;
54
- }): any;
69
+ }): void;
55
70
  markAsLoaded(opts?: {
56
71
  onlySelf?: boolean;
57
72
  emitEvent?: boolean;
58
- }): any;
73
+ }): void;
59
74
  markAsReady(opts?: {
60
75
  onlySelf?: boolean;
61
76
  emitEvent?: boolean;
62
- }): any;
77
+ }): void;
63
78
  }
64
79
  /**
65
80
  * A form that do nothing
@@ -140,42 +155,42 @@ export declare class AppFormProvider<F extends IAppForm = IAppForm> implements I
140
155
  disable(opts?: {
141
156
  onlySelf?: boolean;
142
157
  emitEvent?: boolean;
143
- }): any;
158
+ }): void;
144
159
  enable(opts?: {
145
160
  onlySelf?: boolean;
146
161
  emitEvent?: boolean;
147
- }): any;
162
+ }): void;
148
163
  markAsPristine(opts?: {
149
164
  onlySelf?: boolean;
150
165
  emitEvent?: boolean;
151
- }): any;
166
+ }): void;
152
167
  markAsUntouched(opts?: {
153
168
  onlySelf?: boolean;
154
169
  emitEvent?: boolean;
155
- }): any;
170
+ }): void;
156
171
  markAsTouched(opts?: {
157
172
  onlySelf?: boolean;
158
173
  emitEvent?: boolean;
159
- }): any;
174
+ }): void;
160
175
  markAllAsTouched(opts?: {
161
176
  emitEvent?: boolean;
162
- }): any;
177
+ }): void;
163
178
  markAsDirty(opts?: {
164
179
  onlySelf?: boolean;
165
180
  emitEvent?: boolean;
166
- }): any;
181
+ }): void;
167
182
  markAsLoading(opts?: {
168
183
  onlySelf?: boolean;
169
184
  emitEvent?: boolean;
170
- }): any;
185
+ }): void;
171
186
  markAsLoaded(opts?: {
172
187
  onlySelf?: boolean;
173
188
  emitEvent?: boolean;
174
- }): any;
189
+ }): void;
175
190
  markAsReady(opts?: {
176
191
  onlySelf?: boolean;
177
192
  emitEvent?: boolean;
178
- }): any;
193
+ }): void;
179
194
  }
180
195
  export interface FormArrayHelperOptions {
181
196
  allowEmptyArray: boolean;
@@ -1,11 +1,11 @@
1
1
  import { AfterViewInit, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
2
  import { MenuService } from '../menu.service';
3
- import { AppTabEditor } from '../../form/entity/editor.class';
4
3
  import { ActivatedRoute, Router } from '@angular/router';
5
4
  import { AlertController, NavController } from '@ionic/angular';
6
5
  import { TranslateService } from '@ngx-translate/core';
7
6
  import { Subject } from 'rxjs';
8
7
  import { MatTabGroup } from '@angular/material/tabs';
8
+ import { AppTabEditor } from '../../form/entity/tab-editor.class';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class MenuTestingPage extends AppTabEditor implements OnInit, OnDestroy, AfterViewInit {
11
11
  protected menuService: MenuService;
@@ -2,6 +2,7 @@ import { PropertiesMap, Property } from '../../../shared/types';
2
2
  import { InjectionToken } from '@angular/core';
3
3
  import { HistoryPageReference } from './history.model';
4
4
  export type UsageMode = 'DESK' | 'FIELD';
5
+ export declare function isOnFieldMode(usageMode: UsageMode): void;
5
6
  export declare interface LocaleConfig extends Property {
6
7
  country?: string;
7
8
  }
@@ -61,8 +61,7 @@ export declare class SettingsPage extends AppForm<LocalSettings> implements OnIn
61
61
  close(_?: Event): Promise<boolean>;
62
62
  clearCache(event?: Event): Promise<void>;
63
63
  executeAction(event: Event, item: IMenuItem): Promise<void>;
64
- protected getValue(): Promise<LocalSettings>;
65
- protected getJsonValueToSave(): Promise<any>;
64
+ getValue(): Promise<LocalSettings>;
66
65
  protected toggleDarkMode(): Promise<void>;
67
66
  protected markForCheck(): void;
68
67
  static ɵfac: i0.ɵɵFactoryDeclaration<SettingsPage, [null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
@@ -1,10 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./table-select-columns.component";
3
3
  import * as i2 from "./actions-column.component";
4
- import * as i3 from "../../shared/shared.module";
5
- import * as i4 from "@ngx-translate/core";
4
+ import * as i3 from "./table.pipes";
5
+ import * as i4 from "../../shared/shared.module";
6
+ import * as i5 from "@ngx-translate/core";
6
7
  export declare class AppTableModule {
7
8
  static ɵfac: i0.ɵɵFactoryDeclaration<AppTableModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<AppTableModule, [typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent], [typeof i3.SharedModule, typeof i4.TranslateModule], [typeof i4.TranslateModule, typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppTableModule, [typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent, typeof i3.IsAllSelectedPipe, typeof i3.IsNotAllSelectedPipe], [typeof i4.SharedModule, typeof i5.TranslateModule], [typeof i5.TranslateModule, typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent, typeof i3.IsAllSelectedPipe, typeof i3.IsNotAllSelectedPipe]>;
9
10
  static ɵinj: i0.ɵɵInjectorDeclaration<AppTableModule>;
10
11
  }
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectorRef } from '@angular/core';
2
+ import { SelectionModel } from '@angular/cdk/collections';
3
+ import { AbstractSelectionModelPipe } from '../../shared/pipes/selection.pipes';
4
+ import { AppTable } from './table.class';
5
+ import { Subscription } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export type AppTableRowCountProperty = 'visibleRowCount' | 'totalRowCount';
8
+ export declare abstract class AbstractTableSelectionPipe<R, O, T extends AppTable<any> = AppTable<any>> extends AbstractSelectionModelPipe<any, R, O> {
9
+ private _onRowsChanges;
10
+ protected constructor(_ref: ChangeDetectorRef);
11
+ transform(selectionOrTable: SelectionModel<any> | T, tableOrOpts?: T | O, opts?: O): R;
12
+ protected _subscribe(selection: SelectionModel<any>, table?: T, opts?: O): Subscription;
13
+ protected _dispose(): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractTableSelectionPipe<any, any, any>, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractTableSelectionPipe<any, any, any>, never, never, {}, {}, never, never, false, never>;
16
+ }
17
+ export declare class IsAllSelectedPipe extends AbstractTableSelectionPipe<boolean, AppTableRowCountProperty> {
18
+ constructor(_ref: ChangeDetectorRef);
19
+ protected _transform(selection: SelectionModel<any>, table: AppTable<any>, countPropertyName?: AppTableRowCountProperty): boolean;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsAllSelectedPipe, never>;
21
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsAllSelectedPipe, "isAllSelected", false>;
22
+ }
23
+ export declare class IsNotAllSelectedPipe extends IsAllSelectedPipe {
24
+ constructor(_ref: ChangeDetectorRef);
25
+ protected _transform(selection: SelectionModel<any>, table: AppTable<any>, countPropertyName?: AppTableRowCountProperty): boolean;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsNotAllSelectedPipe, never>;
27
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsNotAllSelectedPipe, "isNotAllSelected", false>;
28
+ }
@@ -26,30 +26,34 @@ export declare class TableTestPage extends AppTable<Referential, ReferentialFilt
26
26
  readonly statusList: readonly import("../../services/model/referential.model").IStatus[];
27
27
  readonly statusById: Readonly<import("@sumaris-net/ngx-components").KeyValueType<import("../../services/model/referential.model").IStatus>>;
28
28
  readonly columnDefinitions: FormFieldDefinitionMap;
29
+ filterPanelFloating: boolean;
29
30
  enableInfiniteScroll: boolean;
30
- useSticky: boolean;
31
+ sticky: boolean;
32
+ stickyEnd: boolean;
31
33
  get hasMoreData(): boolean;
32
34
  filterExpansionPanel: MatExpansionPanel;
33
35
  infiniteScroll: IonInfiniteScroll;
34
36
  get dataService(): InMemoryEntitiesService<Referential>;
35
37
  constructor(injector: Injector, validatorService: AppValidatorService, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef);
36
38
  ngOnInit(): void;
37
- ngAfterViewInit(): void;
39
+ ngAfterViewInit(): Promise<void>;
38
40
  ngOnDestroy(): void;
39
- protected restoreFilter(): void;
41
+ protected restoreFilter(): Promise<void>;
40
42
  toggleTimer(): void;
41
- load(): void;
43
+ load(): Promise<void>;
42
44
  fetchMore(event: any): Promise<void>;
43
45
  save(opts?: {
44
46
  keepEditing?: boolean;
45
47
  }): Promise<boolean>;
46
48
  clearControlValue(event: Event, formControl: AbstractControl): boolean;
49
+ toggleFilterPanelFloating(): void;
47
50
  applyFilterAndClosePanel(event?: Event): void;
51
+ closeFilterPanel(): void;
48
52
  resetFilter(_?: Event): void;
49
53
  startTimer(): void;
50
54
  stopTimer(): void;
51
55
  protected generateData(offset?: number, size?: number): Referential[];
52
56
  protected markForCheck(): void;
53
57
  static ɵfac: i0.ɵɵFactoryDeclaration<TableTestPage, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<TableTestPage, "app-table-testing", never, { "enableInfiniteScroll": { "alias": "enableInfiniteScroll"; "required": false; }; "useSticky": { "alias": "useSticky"; "required": false; }; }, {}, never, never, false, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableTestPage, "app-table-testing", never, { "filterPanelFloating": { "alias": "filterPanelFloating"; "required": false; }; "enableInfiniteScroll": { "alias": "enableInfiniteScroll"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "stickyEnd": { "alias": "stickyEnd"; "required": false; }; }, {}, never, never, false, never>;
55
59
  }
@@ -21,25 +21,30 @@ export declare class Table2TestPage extends AppTable<Referential, ReferentialFil
21
21
  enableInfiniteScroll: boolean;
22
22
  checkBoxSelection: boolean;
23
23
  resizable: boolean;
24
+ filterPanelFloating: boolean;
25
+ sticky: boolean;
26
+ stickyEnd: boolean;
24
27
  get hasMoreData(): boolean;
25
28
  filterExpansionPanel: MatExpansionPanel;
26
29
  infiniteScroll: IonInfiniteScroll;
27
30
  get dataService(): InMemoryEntitiesService<Referential>;
28
31
  constructor(injector: Injector, validatorService: AppValidatorService, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef);
29
32
  ngOnInit(): void;
30
- ngAfterViewInit(): void;
33
+ ngAfterViewInit(): Promise<void>;
31
34
  ngOnDestroy(): void;
32
- protected restoreFilter(): void;
33
- load(): void;
35
+ protected restoreFilter(): Promise<void>;
36
+ load(): Promise<void>;
34
37
  fetchMore(event: any): Promise<void>;
35
38
  save(opts?: {
36
39
  keepEditing?: boolean;
37
40
  }): Promise<boolean>;
38
41
  clearControlValue(event: Event, formControl: AbstractControl): boolean;
42
+ toggleFilterPanelFloating(): void;
39
43
  applyFilterAndClosePanel(event?: Event): void;
40
- resetFilter(event?: Event): void;
44
+ closeFilterPanel(): void;
45
+ resetFilter(_?: Event): void;
41
46
  protected generateData(offset?: number, size?: number): Referential[];
42
47
  protected markForCheck(): void;
43
48
  static ɵfac: i0.ɵɵFactoryDeclaration<Table2TestPage, never>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<Table2TestPage, "app-table2-testing", never, {}, {}, never, ["[suffix]"], false, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<Table2TestPage, "app-table2-testing", never, { "filterPanelFloating": { "alias": "filterPanelFloating"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "stickyEnd": { "alias": "stickyEnd"; "required": false; }; }, {}, never, ["[suffix]"], false, never>;
45
50
  }
@@ -42,7 +42,7 @@ export declare class FormGetGroupPipe implements PipeTransform {
42
42
  }
43
43
  export declare class FormGetValuePipe implements PipeTransform, OnDestroy {
44
44
  private _ref;
45
- value: any;
45
+ private _value;
46
46
  private _lastControl;
47
47
  private _lastPath;
48
48
  private _onControlValueChanges;
@@ -18,11 +18,12 @@ import * as i16 from "./form.pipes";
18
18
  import * as i17 from "./colors.pipe";
19
19
  import * as i18 from "./types.pipes";
20
20
  import * as i19 from "./maskito.pipe";
21
- import * as i20 from "@angular/common";
22
- import * as i21 from "@ionic/angular";
23
- import * as i22 from "@ngx-translate/core";
21
+ import * as i20 from "./selection.pipes";
22
+ import * as i21 from "@angular/common";
23
+ import * as i22 from "@ionic/angular";
24
+ import * as i23 from "@ngx-translate/core";
24
25
  export declare class SharedPipesModule {
25
26
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedPipesModule, never>;
26
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedPipesModule, [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, 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.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 i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, typeof i16.FormErrorTranslatePipe, typeof i16.FormGetPipe, typeof i16.FormGetControlPipe, typeof i16.FormGetArrayPipe, typeof i16.FormGetGroupPipe, typeof i16.FormGetValuePipe, typeof i1.PropertyFormatPipe, typeof i17.MatColorPipe, typeof i18.AsAnyPipe, typeof i18.AsArrayPipe, typeof i18.AsObservablePipe, typeof i18.AsFloatLabelTypePipe, typeof i19.MaskitoPlaceholderPipe], [typeof i20.CommonModule, typeof i21.IonicModule, typeof i22.TranslateModule], [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, typeof i2.DateFormatPipe, typeof i5.DateFromNowPipe, typeof i3.DateDiffDurationPipe, typeof i4.DurationPipe, 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.ArrayPluckPipe, 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 i11.ArrayIncludesPipe, typeof i11.ArrayFilterPipe, typeof i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, 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]>;
27
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedPipesModule, [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, 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.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 i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, typeof i16.FormErrorTranslatePipe, typeof i16.FormGetPipe, typeof i16.FormGetControlPipe, typeof i16.FormGetArrayPipe, typeof i16.FormGetGroupPipe, typeof i16.FormGetValuePipe, typeof i1.PropertyFormatPipe, 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.CommonModule, typeof i22.IonicModule, typeof i23.TranslateModule], [typeof i1.PropertyGetPipe, typeof i1.PropertyFormatPipe, typeof i2.DateFormatPipe, typeof i5.DateFromNowPipe, typeof i3.DateDiffDurationPipe, typeof i4.DurationPipe, 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.ArrayPluckPipe, 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 i11.ArrayIncludesPipe, typeof i11.ArrayFilterPipe, typeof i14.TranslateContextPipe, typeof i14.TranslatablePipe, typeof i15.NgInitDirective, 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]>;
27
28
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedPipesModule>;
28
29
  }
@@ -0,0 +1,62 @@
1
+ import { ChangeDetectorRef, OnDestroy, PipeTransform } from '@angular/core';
2
+ import { SelectionChange, SelectionModel } from '@angular/cdk/collections';
3
+ import { Subscription } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare abstract class AbstractSelectionModelPipe<T, R, O = void> implements PipeTransform, OnDestroy {
6
+ protected _ref: ChangeDetectorRef;
7
+ protected _result: R;
8
+ private _lastSelection;
9
+ private _lastValue;
10
+ private _lastOpts;
11
+ protected _shouldSubscribeToChanges: boolean;
12
+ private _onSelectionChanges;
13
+ protected constructor(_ref: ChangeDetectorRef);
14
+ transform(selection: SelectionModel<any>, value?: T, opts?: O): R;
15
+ ngOnDestroy(): void;
16
+ protected _subscribe(selection: SelectionModel<T>, value: T, opts?: O): Subscription;
17
+ /**
18
+ * Clean any existing subscription to change events
19
+ */
20
+ protected _dispose(): void;
21
+ protected abstract _transform(selection: SelectionModel<T>, value?: T, opts?: O): R;
22
+ protected _filterSelectionChange(selectionChange: SelectionChange<any>, value?: T, opts?: O): boolean;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractSelectionModelPipe<any, any, any>, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractSelectionModelPipe<any, any, any>, never, never, {}, {}, never, never, false, never>;
25
+ }
26
+ export declare class IsSelectedPipe extends AbstractSelectionModelPipe<any, boolean> {
27
+ constructor(_ref: ChangeDetectorRef);
28
+ protected _transform(selection: SelectionModel<any>, value: any): boolean;
29
+ protected _filterSelectionChange(selectionChange: SelectionChange<any>, value: any): boolean;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsSelectedPipe, never>;
31
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsSelectedPipe, "isSelected", false>;
32
+ }
33
+ export declare class IsNotEmptySelectionPipe extends AbstractSelectionModelPipe<void, boolean> {
34
+ constructor(_ref: ChangeDetectorRef);
35
+ protected _transform(selection: SelectionModel<any>): boolean;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsNotEmptySelectionPipe, never>;
37
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsNotEmptySelectionPipe, "isNotEmptySelection", false>;
38
+ }
39
+ export declare class IsEmptySelectionPipe extends AbstractSelectionModelPipe<void, boolean> {
40
+ constructor(_ref: ChangeDetectorRef);
41
+ protected _transform(selection: SelectionModel<any>): boolean;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsEmptySelectionPipe, never>;
43
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsEmptySelectionPipe, "isEmptySelection", false>;
44
+ }
45
+ export declare class SelectionLengthPipe extends AbstractSelectionModelPipe<void, number> {
46
+ constructor(_ref: ChangeDetectorRef);
47
+ protected _transform(selection: SelectionModel<any>): number;
48
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectionLengthPipe, never>;
49
+ static ɵpipe: i0.ɵɵPipeDeclaration<SelectionLengthPipe, "selectionLength", false>;
50
+ }
51
+ export declare class IsMultipleSelectionPipe extends AbstractSelectionModelPipe<void, boolean> {
52
+ constructor(_ref: ChangeDetectorRef);
53
+ protected _transform(selection: SelectionModel<any>): boolean;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsMultipleSelectionPipe, never>;
55
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsMultipleSelectionPipe, "isMultipleSelection", false>;
56
+ }
57
+ export declare class IsSingleSelectionPipe extends AbstractSelectionModelPipe<void, boolean> {
58
+ constructor(_ref: ChangeDetectorRef);
59
+ protected _transform(selection: SelectionModel<any>): boolean;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsSingleSelectionPipe, never>;
61
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsSingleSelectionPipe, "isSingleSelection", false>;
62
+ }
@@ -65,6 +65,7 @@ export declare class SharedFormGroupValidators {
65
65
  static dateMinDuration(startDateField: string, endDateField: string, minDuration: number, durationUnit?: moment.unitOfTime.Diff): ValidatorFn;
66
66
  static requiredIf(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
67
67
  fieldOnly?: boolean;
68
+ predicate?: (control: AbstractControl) => boolean;
68
69
  }): ValidatorFn;
69
70
  static requiredIfTrue(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
70
71
  fieldOnly?: boolean;
@@ -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.7.6",
5
+ "version": "2.8.0-rc2",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -419,6 +419,10 @@ mat-expansion-panel {
419
419
  right: 0;
420
420
  }
421
421
 
422
+ &.filter-panel-pinned {
423
+ overflow-y: scroll;
424
+ }
425
+
422
426
  .mat-expansion-panel-header,
423
427
  mat-expansion-panel-header {
424
428
  padding: var(--expansion-panel-header-padding, var(--expansion-panel-padding));
@@ -20,7 +20,7 @@
20
20
  .mat-mdc-table {
21
21
  min-width: calc(100% - 1px);
22
22
  border-collapse: separate;
23
- --mat-table-background-color: var(--ion-background-color);
23
+ --mat-table-background-color: var(--background, var(--ion-background-color));
24
24
  --mat-table-row-item-label-text-color: var(--ion-text-color);
25
25
  --mat-table-row-item-outline-color: var(--ion-border-color);
26
26
  --mat-table-row-item-label-text-size: 14px;
@@ -37,6 +37,7 @@
37
37
  --mat-form-field-state-layer-color: transparent;
38
38
  --mat-form-field-subscript-text-size: 10px;
39
39
  --mdc-checkbox-state-layer-size: 20px;
40
+ --mdc-radio-state-layer-size: 20px;
40
41
  --mdc-filled-text-field-container-color: transparent;
41
42
  --mdc-filled-text-field-disabled-container-color: transparent;
42
43
  --mdc-filled-text-field-input-text-color: var(--ion-text-color);
@@ -46,6 +47,7 @@
46
47
 
47
48
  .mat-mdc-header-cell {
48
49
  color: var(--ion-color-primary);
50
+ background: var(--mat-table-background-color) !important;
49
51
 
50
52
  &.disabled {
51
53
  color: var(--ion-color-medium, grey);
@@ -444,22 +446,10 @@
444
446
  }
445
447
  }
446
448
 
447
- .mat-boolean-field-radio.mat-mdc-form-field-appearance-fill .mat-mdc-form-field-infix,
448
- .mat-boolean-field-radio .mat-mdc-form-field-infix {
449
- // Reduce top border (because of radio height)
450
- border-top: 0.5em solid transparent !important;
451
- }
452
-
453
- .mat-boolean-field-checkbox.mat-mdc-form-field-appearance-fill .mat-mdc-form-field-infix,
454
- .mat-boolean-field-checkbox .mat-mdc-form-field-infix {
455
- // Increase top border (because of checkbox height)
456
- padding-top: 0.4em;
457
- }
458
-
459
449
  .mat-boolean-field-button.mat-mdc-form-field-appearance-fill .mat-mdc-form-field-infix,
460
450
  .mat-boolean-field-button .mat-mdc-form-field-infix {
461
451
  // Increase top border (because of button height)
462
- padding-top: 0.4em;
452
+
463
453
  }
464
454
 
465
455
  mat-date-time-field {