@sumaris-net/ngx-components 2.7.5-rc2 → 2.7.5-rc21

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/README.md +4 -3
  2. package/esm2022/src/app/core/account/new-token.modal.mjs +7 -9
  3. package/esm2022/src/app/core/account/token.table.mjs +2 -3
  4. package/esm2022/src/app/core/form/properties/properties.table.mjs +1 -1
  5. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +9 -10
  6. package/esm2022/src/app/core/services/account.service.mjs +3 -2
  7. package/esm2022/src/app/core/services/model/person.model.mjs +9 -6
  8. package/esm2022/src/app/core/services/model/referential.model.mjs +12 -4
  9. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  10. package/esm2022/src/app/core/services/platform.service.mjs +37 -16
  11. package/esm2022/src/app/core/table/actions-column.component.mjs +3 -3
  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/form/field.component.mjs +3 -3
  15. package/esm2022/src/app/shared/functions.mjs +1 -1
  16. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +7 -4
  17. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +1 -1
  18. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +6 -3
  19. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +1 -1
  20. package/esm2022/src/app/shared/material/chips/material.chips.mjs +7 -4
  21. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +1 -1
  22. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +3 -3
  23. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +6 -3
  24. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
  25. package/esm2022/src/app/shared/material/testing/common.test.mjs +1 -1
  26. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +15 -7
  27. package/esm2022/src/app/shared/pipes/property.pipes.mjs +3 -3
  28. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +18 -23
  29. package/esm2022/src/app/shared/toolbar/toolbar.mjs +15 -15
  30. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +4 -3
  31. package/esm2022/src/app/shared/validator/validators.mjs +10 -1
  32. package/esm2022/src/app/social/message/message.form.mjs +1 -1
  33. package/fesm2022/sumaris-net.ngx-components.mjs +194 -140
  34. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  35. package/package.json +1 -1
  36. package/src/app/core/account/new-token.modal.d.ts +1 -1
  37. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +3 -1
  38. package/src/app/core/services/model/person.model.d.ts +6 -2
  39. package/src/app/core/services/model/referential.model.d.ts +5 -1
  40. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +3 -1
  41. package/src/app/core/services/platform.service.d.ts +6 -2
  42. package/src/app/shared/functions.d.ts +1 -1
  43. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +3 -2
  44. package/src/app/shared/material/boolean/material.boolean.d.ts +3 -2
  45. package/src/app/shared/material/chips/material.chips.d.ts +3 -2
  46. package/src/app/shared/material/swipe/material.swipe.d.ts +3 -2
  47. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +8 -4
  48. package/src/app/shared/pipes/property.pipes.d.ts +1 -1
  49. package/src/app/shared/storage/storage-explorer.component.d.ts +4 -3
  50. package/src/app/shared/toolbar/toolbar.d.ts +2 -2
  51. package/src/app/shared/validator/validators.d.ts +1 -0
  52. package/src/assets/manifest.json +1 -1
  53. package/src/theme/_mixins.scss +0 -1
  54. package/src/theme/_theme.variables.scss +4 -0
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.7.5-rc2",
4
+ "version": "2.7.5-rc21",
5
5
  "author": "contact@e-is.pro",
6
6
  "license": "AGPL-3.0",
7
7
  "readmeFilename": "README.md",
@@ -18,9 +18,9 @@ export declare class NewTokenModal extends AppEntityEditorModal<UserToken> imple
18
18
  tokenForm: UntypedFormGroup;
19
19
  tokenAppForm: IAppForm;
20
20
  tokenConfig: MatAutocompleteFieldConfig;
21
- copiedLabel: string;
22
21
  tokenScopes: TokenScope[];
23
22
  existingNames: string[];
23
+ private readonly platform;
24
24
  constructor(injector: Injector, validator: UserTokenValidatorService, accountService: AccountService);
25
25
  get valid(): boolean;
26
26
  get invalid(): boolean;
@@ -1,12 +1,14 @@
1
1
  import { PopoverController, ToastController } from '@ionic/angular';
2
2
  import { TextPopoverOptions } from '../text-popover.component';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
+ import { PlatformService } from '../../../services/platform.service';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class TextPopoverTestingPage {
6
7
  private popoverController;
7
8
  private toastController;
8
9
  private translate;
9
- constructor(popoverController: PopoverController, toastController: ToastController, translate: TranslateService);
10
+ private platform;
11
+ constructor(popoverController: PopoverController, toastController: ToastController, translate: TranslateService, platform: PlatformService);
10
12
  showPopover(event: Event, opts?: Partial<TextPopoverOptions>): Promise<void>;
11
13
  protected showSharePopoverWithButtons(event: UIEvent, opts?: Partial<TextPopoverOptions>): Promise<void>;
12
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TextPopoverTestingPage, never>;
@@ -27,7 +27,11 @@ export declare class PersonUtils {
27
27
  static getMainProfile(profiles?: string[]): UserProfileLabel;
28
28
  static getMainProfileIndex(profiles?: string[]): number;
29
29
  static hasUpperOrEqualsProfile(actualProfiles: string[], expectedProfile: UserProfileLabel): boolean;
30
- static personToString(obj: Person): string;
31
- static personsToString(data: Person[], separator?: string): string;
30
+ static personToString(obj: Person, opts?: {
31
+ withDepartment?: boolean;
32
+ }): string;
33
+ static personsToString(data: Person[], separator?: string, opts?: {
34
+ withDepartment?: boolean;
35
+ }): string;
32
36
  static roleToProfile(role: string, defaultProfile?: UserProfileLabel): UserProfileLabel;
33
37
  }
@@ -31,7 +31,7 @@ export declare abstract class BaseReferential<T extends BaseReferential<T, ID, A
31
31
  parentId: number;
32
32
  entityName: string;
33
33
  icon?: IconRef;
34
- constructor(__typename?: string);
34
+ protected constructor(__typename?: string);
35
35
  asObject(opts?: AO): any;
36
36
  fromObject(source: any, opts?: FO): void;
37
37
  equals(other: T): boolean;
@@ -54,6 +54,7 @@ export declare class ReferentialUtils {
54
54
  export interface ReferentialAsObjectOptions extends EntityAsObjectOptions {
55
55
  keepEntityName?: boolean;
56
56
  keepIcon?: boolean;
57
+ keepProperties?: boolean;
57
58
  }
58
59
  /**
59
60
  * Used to store an entity locally
@@ -72,6 +73,9 @@ export declare class ReferentialRef<T extends ReferentialRef<any, ID> = Referent
72
73
  levelId: number;
73
74
  entityName: string;
74
75
  icon?: IconRef;
76
+ properties?: {
77
+ [key: string]: any;
78
+ };
75
79
  constructor();
76
80
  asObject(opts?: O): any;
77
81
  fromObject(source: any, opts?: FO): void;
@@ -2,7 +2,9 @@ import { PipeTransform } from '@angular/core';
2
2
  import { Person } from '../model/person.model';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class PersonToStringPipe implements PipeTransform {
5
- transform(value: Person | Person[], separator?: string): string;
5
+ transform(value: Person | Person[], separator?: string, opts?: {
6
+ withDepartment?: boolean;
7
+ }): string;
6
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PersonToStringPipe, never>;
7
9
  static ɵpipe: i0.ɵɵPipeDeclaration<PersonToStringPipe, "personToString", false>;
8
10
  static ɵprov: i0.ɵɵInjectableDeclaration<PersonToStringPipe>;
@@ -17,6 +17,8 @@ import { Downloader, DownloadRequest } from '@ionic-native/downloader/ngx';
17
17
  import { StartableService } from '../../shared/services/startable-service.class';
18
18
  import { OpenOptions } from '@capacitor/browser';
19
19
  import { ILoggingService } from '../../shared/logging/logger.model';
20
+ import { Clipboard as CdkClipboard } from '@angular/cdk/clipboard';
21
+ import { WriteOptions } from '@capacitor/clipboard/dist/esm/definitions';
20
22
  import * as i0 from "@angular/core";
21
23
  export declare const AndroidOsEnvironment: Readonly<{
22
24
  DIRECTORY_DOWNLOADS: "Download";
@@ -25,6 +27,7 @@ export declare const AndroidOsEnvironment: Readonly<{
25
27
  export declare class PlatformService extends StartableService {
26
28
  private ionicPlatform;
27
29
  private cdkPlatform;
30
+ private cdkClipboard;
28
31
  private toastController;
29
32
  private translate;
30
33
  private dateAdapter;
@@ -44,7 +47,7 @@ export declare class PlatformService extends StartableService {
44
47
  private _capacitor;
45
48
  private _android;
46
49
  private _ios;
47
- constructor(ionicPlatform: Platform, cdkPlatform: CdkPlatform, toastController: ToastController, translate: TranslateService, dateAdapter: MomentDateAdapter, entitiesStorage: EntitiesStorage, settings: LocalSettingsService, networkService: NetworkService, accountService: AccountService, configService: ConfigService, cache: CacheService, audioProvider: AudioProvider, environment: Environment, loggingService: ILoggingService, downloader: Downloader);
50
+ constructor(ionicPlatform: Platform, cdkPlatform: CdkPlatform, cdkClipboard: CdkClipboard, toastController: ToastController, translate: TranslateService, dateAdapter: MomentDateAdapter, entitiesStorage: EntitiesStorage, settings: LocalSettingsService, networkService: NetworkService, accountService: AccountService, configService: ConfigService, cache: CacheService, audioProvider: AudioProvider, environment: Environment, loggingService: ILoggingService, downloader: Downloader);
48
51
  private _downloadingJobs;
49
52
  private checkAppVersionTimer;
50
53
  is(platformName: Platforms): boolean;
@@ -79,6 +82,7 @@ export declare class PlatformService extends StartableService {
79
82
  uri: string;
80
83
  filename?: string;
81
84
  } & Partial<DownloadRequest>): Observable<string | undefined>;
85
+ copyToClipboard(data: string | WriteOptions, opts?: ShowToastOptions): Promise<void>;
82
86
  protected configureGlobalCssClass(mobile: boolean, win?: any): void;
83
87
  protected configureCapacitorPlugins(): Promise<void>;
84
88
  protected configureTranslate(): void;
@@ -90,6 +94,6 @@ export declare class PlatformService extends StartableService {
90
94
  }): Promise<void>;
91
95
  protected showToast(opts: ShowToastOptions): Promise<HTMLIonToastElement>;
92
96
  protected onStartupError(err: any): Promise<void>;
93
- static ɵfac: i0.ɵɵFactoryDeclaration<PlatformService, [null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
97
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlatformService, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
94
98
  static ɵprov: i0.ɵɵInjectableDeclaration<PlatformService>;
95
99
  }
@@ -67,7 +67,7 @@ export declare function sort<T>(array: T[], attribute?: string, opts?: Intl.Coll
67
67
  export declare function isInt(value: string): boolean;
68
68
  export declare function isNumber(value: string): boolean;
69
69
  export declare function isNumberRange(value: string): boolean;
70
- export declare function getPropertyByPath(obj: any, path: string | string[], defaultValue?: any): any;
70
+ export declare function getPropertyByPath(obj: any, path: string | Array<string | number>, defaultValue?: any): any;
71
71
  export declare function getProperty<T = any, K extends keyof T = any>(obj: T, key: K): T[K];
72
72
  export declare function getPropertyByPathAsString(obj: any, path: string | string[]): string | undefined;
73
73
  export declare function setPropertyByPath(obj: any, path: string | string[], value: any): any;
@@ -4,7 +4,7 @@ import { BehaviorSubject, Observable } from 'rxjs';
4
4
  import { SuggestFn } from '../../services/entity-service.class';
5
5
  import { InputElement } from '../../inputs';
6
6
  import { AppFloatLabelType, DisplayFn, EqualsFn } from '../../form/field.model';
7
- import { MatFormFieldAppearance } from '@angular/material/form-field';
7
+ import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
8
8
  import { MatSelect } from '@angular/material/select';
9
9
  import { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete';
10
10
  import { IonSearchbar, ModalController } from '@ionic/angular';
@@ -40,6 +40,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
40
40
  formControlName: string;
41
41
  floatLabel: AppFloatLabelType;
42
42
  appearance: MatFormFieldAppearance;
43
+ subscriptSizing: SubscriptSizing;
43
44
  placeholder: string;
44
45
  suggestFn: SuggestFn<any, any>;
45
46
  required: boolean;
@@ -139,5 +140,5 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
139
140
  */
140
141
  private _fixSearchbarOverlay;
141
142
  static ɵfac: i0.ɵɵFactoryDeclaration<MatAutocompleteField, [null, null, null, null, { optional: true; }]>;
142
- 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; }; "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; }; "classList": { "alias": "class"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matError]", "[matAfter]", "[matPrefix]", "[matSuffix]"], false, never>;
143
+ 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; }; "classList": { "alias": "class"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matError]", "[matAfter]", "[matPrefix]", "[matSuffix]"], false, never>;
143
144
  }
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
- import { MatFormFieldAppearance } from '@angular/material/form-field';
2
+ import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
3
3
  import { ControlValueAccessor, FormGroupDirective, UntypedFormControl } from '@angular/forms';
4
4
  import { MatRadioButton, MatRadioChange } from '@angular/material/radio';
5
5
  import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
@@ -19,6 +19,7 @@ export declare class MatBooleanField implements OnInit, ControlValueAccessor, In
19
19
  placeholder: string;
20
20
  floatLabel: AppFloatLabelType;
21
21
  appearance: MatFormFieldAppearance;
22
+ subscriptSizing: SubscriptSizing;
22
23
  readonly: boolean;
23
24
  required: boolean;
24
25
  compact: boolean;
@@ -59,5 +60,5 @@ export declare class MatBooleanField implements OnInit, ControlValueAccessor, In
59
60
  private updateTabIndex;
60
61
  private markForCheck;
61
62
  static ɵfac: i0.ɵɵFactoryDeclaration<MatBooleanField, [null, { optional: true; }]>;
62
- static ɵcmp: i0.ɵɵComponentDeclaration<MatBooleanField, "mat-boolean-field", never, { "disabled": { "alias": "disabled"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "style": { "alias": "style"; "required": false; }; "buttonsColCount": { "alias": "buttonsColCount"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "yesLabel": { "alias": "yesLabel"; "required": false; }; "noLabel": { "alias": "noLabel"; "required": false; }; "showButtonIcons": { "alias": "showButtonIcons"; "required": false; }; "yesIcon": { "alias": "yesIcon"; "required": false; }; "noIcon": { "alias": "noIcon"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "onPressEnter": "keyup.enter"; "onBlur": "onBlur"; }, never, ["[matPrefix]", "[matSuffix]"], false, never>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatBooleanField, "mat-boolean-field", never, { "disabled": { "alias": "disabled"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "style": { "alias": "style"; "required": false; }; "buttonsColCount": { "alias": "buttonsColCount"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "yesLabel": { "alias": "yesLabel"; "required": false; }; "noLabel": { "alias": "noLabel"; "required": false; }; "showButtonIcons": { "alias": "showButtonIcons"; "required": false; }; "yesIcon": { "alias": "yesIcon"; "required": false; }; "noIcon": { "alias": "noIcon"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "onPressEnter": "keyup.enter"; "onBlur": "onBlur"; }, never, ["[matPrefix]", "[matSuffix]"], false, never>;
63
64
  }
@@ -6,7 +6,7 @@ import { SuggestFn } from '../../services/entity-service.class';
6
6
  import { AppFloatLabelType, DisplayFn, EqualsFn } from '../../form/field.model';
7
7
  import { ThemePalette } from '@angular/material/core';
8
8
  import { MatAutocompleteFieldConfig } from '../autocomplete/material.autocomplete.config';
9
- import { MatFormFieldAppearance } from '@angular/material/form-field';
9
+ import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
10
10
  import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
11
11
  import * as i0 from "@angular/core";
12
12
  export declare class MatChipsField implements OnInit, OnDestroy, InputElement, ControlValueAccessor {
@@ -20,6 +20,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
20
20
  formControlName: string;
21
21
  floatLabel: AppFloatLabelType;
22
22
  appearance: MatFormFieldAppearance;
23
+ subscriptSizing: SubscriptSizing;
23
24
  placeholder: string;
24
25
  suggestFn: SuggestFn<any, any>;
25
26
  required: boolean;
@@ -121,5 +122,5 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
121
122
  private markForCheck;
122
123
  private markAsLoading;
123
124
  static ɵfac: i0.ɵɵFactoryDeclaration<MatChipsField, [null, { optional: true; }]>;
124
- 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; }; "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; }; "classList": { "alias": "class"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "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; }; "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, ["[matError]", "[matAfter]", "[matPrefix]", "[matSuffix]"], false, never>;
125
+ 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; }; "classList": { "alias": "class"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "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; }; "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, ["[matError]", "[matAfter]", "[matPrefix]", "[matSuffix]"], false, never>;
125
126
  }
@@ -4,7 +4,7 @@ import { BehaviorSubject, Observable } from 'rxjs';
4
4
  import { InputElement, selectInputContent } from '../../inputs';
5
5
  import { AppFloatLabelType, DisplayFn, EqualsFn } from '../../form/field.model';
6
6
  import { Swiper } from 'swiper/types';
7
- import { MatFormFieldAppearance } from '@angular/material/form-field';
7
+ import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
8
8
  import { MatButton } from '@angular/material/button';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class MatSwipeField implements OnInit, InputElement, OnDestroy, ControlValueAccessor {
@@ -29,6 +29,7 @@ export declare class MatSwipeField implements OnInit, InputElement, OnDestroy, C
29
29
  formControlName: string;
30
30
  floatLabel: AppFloatLabelType;
31
31
  appearance: MatFormFieldAppearance;
32
+ subscriptSizing: SubscriptSizing;
32
33
  placeholder: string;
33
34
  debug: boolean;
34
35
  required: boolean;
@@ -85,5 +86,5 @@ export declare class MatSwipeField implements OnInit, InputElement, OnDestroy, C
85
86
  getSwiper(): Promise<Swiper>;
86
87
  ready(): Promise<void>;
87
88
  static ɵfac: i0.ɵɵFactoryDeclaration<MatSwipeField, [null, { optional: true; }]>;
88
- static ɵcmp: i0.ɵɵComponentDeclaration<MatSwipeField, "mat-swipe-field", never, { "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; }; "placeholder": { "alias": "placeholder"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "equals": { "alias": "equals"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "appAutofocus": { "alias": "appAutofocus"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "onClick": "click"; "blurred": "blur"; "focused": "focus"; }, never, never, false, never>;
89
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatSwipeField, "mat-swipe-field", never, { "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; }; "debug": { "alias": "debug"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "equals": { "alias": "equals"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "appAutofocus": { "alias": "appAutofocus"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "onClick": "click"; "blurred": "blur"; "focused": "focus"; }, never, never, false, never>;
89
90
  }
@@ -2,10 +2,11 @@ import { ChangeDetectorRef, EventEmitter, Injector, OnInit } from '@angular/core
2
2
  import { UntypedFormBuilder } from '@angular/forms';
3
3
  import { PopoverController, ToastController } from '@ionic/angular';
4
4
  import { AppForm } from '../../core/form/form.class';
5
- import { INamedFilterService, NamedFilterLoadOptions, NamedFilterWatchOptions } from './named-filter.service';
6
5
  import { MatAutocompleteField } from '../material/autocomplete/material.autocomplete';
7
- import { INamedFilter, INamedFilterFilter, NamedFilter } from './named-filter.model';
8
6
  import { MatAutocompleteFieldConfig } from '../material/autocomplete/material.autocomplete.config';
7
+ import { INamedFilter, INamedFilterFilter, NamedFilter } from './named-filter.model';
8
+ import { INamedFilterService, NamedFilterLoadOptions, NamedFilterWatchOptions } from './named-filter.service';
9
+ import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
9
10
  import * as i0 from "@angular/core";
10
11
  export declare class NamedFilterSelector extends AppForm<any> implements OnInit {
11
12
  protected injector: Injector;
@@ -14,11 +15,14 @@ export declare class NamedFilterSelector extends AppForm<any> implements OnInit
14
15
  protected toastController: ToastController;
15
16
  protected popoverController: PopoverController;
16
17
  protected dataService: INamedFilterService<INamedFilter<any>, INamedFilterFilter<any, any>, NamedFilterWatchOptions, NamedFilterLoadOptions>;
17
- protected logPrefix: string;
18
+ protected readonly logPrefix = "[named-filter-selector]";
19
+ protected readonly mobile: boolean;
18
20
  private _entityName;
19
21
  private _deleteDisabled;
20
22
  set entityName(entityName: string);
21
23
  get entityName(): string;
24
+ appearance: MatFormFieldAppearance;
25
+ subscriptSizing: SubscriptSizing;
22
26
  filterContentProvider: () => any;
23
27
  filterImportCallback: (namedFilter: NamedFilter) => Promise<NamedFilter>;
24
28
  filterFormDirty: boolean;
@@ -45,5 +49,5 @@ export declare class NamedFilterSelector extends AppForm<any> implements OnInit
45
49
  protected onFilterChanges(value: NamedFilter | string): Promise<void>;
46
50
  protected setControlValue(value: NamedFilter): void;
47
51
  static ɵfac: i0.ɵɵFactoryDeclaration<NamedFilterSelector, never>;
48
- static ɵcmp: i0.ɵɵComponentDeclaration<NamedFilterSelector, "app-named-filter-selector", never, { "entityName": { "alias": "entityName"; "required": false; }; "filterContentProvider": { "alias": "filterContentProvider"; "required": false; }; "filterImportCallback": { "alias": "filterImportCallback"; "required": false; }; "filterFormDirty": { "alias": "filterFormDirty"; "required": false; }; "showButtons": { "alias": "showButtons"; "required": false; }; "exportFileNamePrefix": { "alias": "exportFileNamePrefix"; "required": false; }; "autocompleteConfig": { "alias": "autocompleteConfig"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; }, { "filterSelected": "filterSelected"; "filterDeleted": "filterDeleted"; }, never, never, false, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<NamedFilterSelector, "app-named-filter-selector", never, { "entityName": { "alias": "entityName"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "filterContentProvider": { "alias": "filterContentProvider"; "required": false; }; "filterImportCallback": { "alias": "filterImportCallback"; "required": false; }; "filterFormDirty": { "alias": "filterFormDirty"; "required": false; }; "showButtons": { "alias": "showButtons"; "required": false; }; "exportFileNamePrefix": { "alias": "exportFileNamePrefix"; "required": false; }; "autocompleteConfig": { "alias": "autocompleteConfig"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; }, { "filterSelected": "filterSelected"; "filterDeleted": "filterDeleted"; }, never, never, false, never>;
49
53
  }
@@ -4,7 +4,7 @@ import { FormFieldDefinition } from '../form/field.model';
4
4
  import { TranslateService } from '@ngx-translate/core';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class PropertyGetPipe implements PipeTransform {
7
- transform(obj: any, args: string | {
7
+ transform(obj: any, args: string | Array<string | number> | {
8
8
  key: string;
9
9
  defaultValue?: any;
10
10
  }): any;
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectorRef, InjectionToken, OnInit } from '@angular/core';
2
- import { AlertController, IonModal, Platform, ToastController } from '@ionic/angular';
2
+ import { AlertController, IonModal, ToastController } from '@ionic/angular';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import { IStorage } from './storage.utils';
5
5
  import { IDebugDataService } from '../debug/debug-service.class';
@@ -8,6 +8,7 @@ import { Environment } from '../../../environments/environment.class';
8
8
  import { Log, LogUtils } from '../logging/logger.model';
9
9
  import { MomentDateAdapter } from '@angular/material-moment-adapter';
10
10
  import { LogLevel } from '../logging/log-level.model';
11
+ import { PlatformService } from '../../core/services/platform.service';
11
12
  import * as i0 from "@angular/core";
12
13
  interface StorageItemInfo {
13
14
  key: string;
@@ -16,7 +17,7 @@ interface StorageItemInfo {
16
17
  }
17
18
  export declare const APP_STORAGE_EXPLORER_PROTECTED_KEYS: InjectionToken<string[]>;
18
19
  export declare class StorageExplorerComponent implements OnInit {
19
- protected platform: Platform;
20
+ protected platform: PlatformService;
20
21
  protected toastController: ToastController;
21
22
  protected alertCtrl: AlertController;
22
23
  protected translate: TranslateService;
@@ -37,7 +38,7 @@ export declare class StorageExplorerComponent implements OnInit {
37
38
  showSendButton: boolean;
38
39
  sendDataModal: IonModal;
39
40
  viewDataModal: IonModal;
40
- constructor(platform: Platform, toastController: ToastController, alertCtrl: AlertController, translate: TranslateService, dateAdapter: MomentDateAdapter, cd: ChangeDetectorRef, storage: IStorage, environment: Environment, debugDataService: IDebugDataService, _protectedKeys: string[]);
41
+ constructor(platform: PlatformService, toastController: ToastController, alertCtrl: AlertController, translate: TranslateService, dateAdapter: MomentDateAdapter, cd: ChangeDetectorRef, storage: IStorage, environment: Environment, debugDataService: IDebugDataService, _protectedKeys: string[]);
41
42
  ngOnInit(): void;
42
43
  sendDataClick(event: Event, key: string): Promise<void>;
43
44
  viewDataClick(event: Event, key: string): Promise<void>;
@@ -25,7 +25,8 @@ export declare class ToolbarComponent implements ToolbarToken, OnInit, OnDestroy
25
25
  private _validateTapCount;
26
26
  private _defaultBackHref;
27
27
  private _backHref;
28
- protected readonly _progressBarMode$: BehaviorSubject<ProgressBarMode>;
28
+ protected readonly progressBarMode$: BehaviorSubject<ProgressBarMode>;
29
+ protected showSearchBar: boolean;
29
30
  set progressBarMode(value: ProgressBarMode);
30
31
  get progressBarMode(): ProgressBarMode;
31
32
  title: string;
@@ -45,7 +46,6 @@ export declare class ToolbarComponent implements ToolbarToken, OnInit, OnDestroy
45
46
  onValidateAndClose: EventEmitter<Event>;
46
47
  onBackClick: EventEmitter<Event>;
47
48
  onSearch: EventEmitter<CustomEvent<ISearchbarSearchbarChangeEventDetail>>;
48
- showSearchBar: boolean;
49
49
  searchbar: IonSearchbar;
50
50
  menuToggle: IonMenuToggle;
51
51
  constructor(route: ActivatedRoute, router: Router, navController: NavController, routerOutlet: IonRouterOutlet, cd: ChangeDetectorRef, progressBarService: IProgressBarService);
@@ -88,6 +88,7 @@ export declare class SharedFormArrayValidators {
88
88
  */
89
89
  static uniqueEntity(controlName: string): ValidatorFn;
90
90
  static requiredArrayMinLength(minLength?: number): ValidatorFn;
91
+ static arrayMaxLength(maxLength?: number): ValidatorFn;
91
92
  /**
92
93
  * Validate the sum of control values in an FormArray not overflow the max value
93
94
  *
@@ -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.4",
5
+ "version": "2.7.5-rc21",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -8,7 +8,6 @@
8
8
  font-size: calculateRem($size) !important;
9
9
  }
10
10
 
11
-
12
11
  @mixin font-roboto($size: false, $colour: false, $weight: false, $lh: false) {
13
12
  font-family: 'Roboto', Helvetica, Arial, sans-serif;
14
13
 
@@ -1,6 +1,10 @@
1
1
  /** Inject all CSS Variables **/
2
2
  html {
3
3
  @include css-variables-to-root();
4
+
5
+ &.plt-mobile {
6
+ @include css-variables-to-root-mobile();
7
+ }
4
8
  }
5
9
 
6
10
  html.dark {