@sumaris-net/ngx-components 18.26.13 → 18.26.14-alpha2

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 (71) hide show
  1. package/doc/changelog.md +44 -1
  2. package/esm2022/public_api.mjs +2 -1
  3. package/esm2022/src/app/admin/users/users.mjs +2 -2
  4. package/esm2022/src/app/core/about/about.modal.mjs +74 -13
  5. package/esm2022/src/app/core/account/account.page.mjs +1 -1
  6. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +2 -2
  7. package/esm2022/src/app/core/form/properties/properties.form.mjs +20 -3
  8. package/esm2022/src/app/core/form/properties/properties.table.mjs +3 -3
  9. package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
  10. package/esm2022/src/app/core/register/register.form.mjs +1 -1
  11. package/esm2022/src/app/core/services/account.service.mjs +10 -5
  12. package/esm2022/src/app/core/services/config/core.config.mjs +6 -1
  13. package/esm2022/src/app/core/services/local-settings.service.mjs +3 -7
  14. package/esm2022/src/app/core/services/network.service.mjs +7 -1
  15. package/esm2022/src/app/core/services/platform.service.mjs +37 -7
  16. package/esm2022/src/app/core/settings/settings.page.mjs +55 -22
  17. package/esm2022/src/app/core/table/async-table.class.mjs +28 -15
  18. package/esm2022/src/app/core/table/column/row-field.component.mjs +8 -6
  19. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +1 -1
  20. package/esm2022/src/app/core/table/table.class.mjs +20 -14
  21. package/esm2022/src/app/shared/alerts.mjs +42 -8
  22. package/esm2022/src/app/shared/capacitor/plugins.mjs +2 -1
  23. package/esm2022/src/app/shared/form/field.component.mjs +7 -3
  24. package/esm2022/src/app/shared/gitlab/gitlab.utils.mjs +170 -0
  25. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +5 -5
  26. package/esm2022/src/app/shared/image/gallery/slideshow/image-gallery-slideshow.component.mjs +2 -2
  27. package/esm2022/src/app/shared/image/image.service.mjs +3 -3
  28. package/esm2022/src/app/shared/markdown/markdown.component.mjs +6 -5
  29. package/esm2022/src/app/shared/markdown/markdown.utils.mjs +3 -12
  30. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +2 -2
  31. package/esm2022/src/app/shared/material/material.animations.mjs +7 -6
  32. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +25 -14
  33. package/esm2022/src/app/shared/platforms.mjs +23 -1
  34. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +10 -4
  35. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +41 -4
  36. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +1 -1
  37. package/esm2022/src/app/shared/version/versions.mjs +10 -3
  38. package/esm2022/src/app/social/feed/feed.component.mjs +3 -3
  39. package/esm2022/src/environments/environment.class.mjs +2 -1
  40. package/esm2022/src/environments/environment.mjs +2 -1
  41. package/fesm2022/sumaris-net.ngx-components.mjs +595 -144
  42. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  43. package/package.json +14 -13
  44. package/public_api.d.ts +1 -0
  45. package/src/app/core/about/about.modal.d.ts +9 -2
  46. package/src/app/core/form/entity/entity-editor.class.d.ts +4 -1
  47. package/src/app/core/form/properties/properties.form.d.ts +1 -0
  48. package/src/app/core/services/account.service.d.ts +1 -1
  49. package/src/app/core/services/config/core.config.d.ts +1 -0
  50. package/src/app/core/services/platform.service.d.ts +2 -0
  51. package/src/app/core/settings/settings.page.d.ts +2 -1
  52. package/src/app/core/table/async-table.class.d.ts +15 -3
  53. package/src/app/core/table/column/row-field.component.d.ts +3 -2
  54. package/src/app/core/table/table.class.d.ts +13 -3
  55. package/src/app/shared/alerts.d.ts +39 -4
  56. package/src/app/shared/capacitor/plugins.d.ts +1 -0
  57. package/src/app/shared/form/field.component.d.ts +2 -1
  58. package/src/app/shared/gitlab/gitlab.utils.d.ts +109 -0
  59. package/src/app/shared/image/gallery/image-gallery.component.d.ts +4 -0
  60. package/src/app/shared/markdown/markdown.utils.d.ts +0 -2
  61. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +5 -1
  62. package/src/app/shared/platforms.d.ts +1 -0
  63. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +5 -1
  64. package/src/app/shared/upload-file/upload-file.component.d.ts +6 -2
  65. package/src/app/shared/upload-file/upload-file.model.d.ts +7 -0
  66. package/src/assets/i18n/en-US.json +4 -1
  67. package/src/assets/i18n/en.json +4 -1
  68. package/src/assets/i18n/fr.json +4 -1
  69. package/src/assets/manifest.json +1 -1
  70. package/src/environments/environment.class.d.ts +1 -0
  71. package/src/theme/_ngx-components.table.scss +5 -0
@@ -11,7 +11,9 @@ export interface UploadFilePopoverOptions<T> {
11
11
  instantUpload?: boolean;
12
12
  uniqueFile?: boolean;
13
13
  fileExtension?: string;
14
+ fileExtensionsExcluded?: string[];
14
15
  maxParallelUpload?: number;
16
+ maxFileSizeMb?: number;
15
17
  autoHideDropArea?: boolean;
16
18
  okButtonText?: string;
17
19
  cancelButtonText?: string;
@@ -26,12 +28,14 @@ export declare class UploadFilePopover implements UploadFilePopoverOptions<any>
26
28
  protected cd: ChangeDetectorRef;
27
29
  uploader: UploadFileComponent;
28
30
  fileExtension: string;
31
+ fileExtensionsExcluded: string[];
29
32
  title: string;
30
33
  uniqueFile: boolean;
31
34
  instantUpload: boolean;
32
35
  uploadFn: FileUploadFn<any>;
33
36
  deleteFn: FileDeleteFn<any>;
34
37
  maxParallelUpload: number;
38
+ maxFileSizeMb: number;
35
39
  autoHideDropArea: boolean;
36
40
  okButtonText: string;
37
41
  cancelButtonText: string;
@@ -45,5 +49,5 @@ export declare class UploadFilePopover implements UploadFilePopoverOptions<any>
45
49
  cancel(): Promise<boolean>;
46
50
  protected resetError(): void;
47
51
  static ɵfac: i0.ɵɵFactoryDeclaration<UploadFilePopover, never>;
48
- static ɵcmp: i0.ɵɵComponentDeclaration<UploadFilePopover, "app-upload-file-popover", never, { "fileExtension": { "alias": "fileExtension"; "required": false; }; "title": { "alias": "title"; "required": false; }; "uniqueFile": { "alias": "uniqueFile"; "required": false; }; "instantUpload": { "alias": "instantUpload"; "required": false; }; "uploadFn": { "alias": "uploadFn"; "required": false; }; "deleteFn": { "alias": "deleteFn"; "required": false; }; "maxParallelUpload": { "alias": "maxParallelUpload"; "required": false; }; "autoHideDropArea": { "alias": "autoHideDropArea"; "required": false; }; "okButtonText": { "alias": "okButtonText"; "required": false; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; }; }, {}, never, never, false, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<UploadFilePopover, "app-upload-file-popover", never, { "fileExtension": { "alias": "fileExtension"; "required": false; }; "fileExtensionsExcluded": { "alias": "fileExtensionsExcluded"; "required": false; }; "title": { "alias": "title"; "required": false; }; "uniqueFile": { "alias": "uniqueFile"; "required": false; }; "instantUpload": { "alias": "instantUpload"; "required": false; }; "uploadFn": { "alias": "uploadFn"; "required": false; }; "deleteFn": { "alias": "deleteFn"; "required": false; }; "maxParallelUpload": { "alias": "maxParallelUpload"; "required": false; }; "maxFileSizeMb": { "alias": "maxFileSizeMb"; "required": false; }; "autoHideDropArea": { "alias": "autoHideDropArea"; "required": false; }; "okButtonText": { "alias": "okButtonText"; "required": false; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; }; }, {}, never, never, false, never>;
49
53
  }
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectorRef, ElementRef } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
- import { FileDeleteFn, FileUploadFn, UploadFile } from './upload-file.model';
3
+ import { FileCheck, FileDeleteFn, FileUploadFn, UploadFile } from './upload-file.model';
4
4
  import { WaitForOptions } from '../observables';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class UploadFileComponent {
@@ -8,14 +8,17 @@ export declare class UploadFileComponent {
8
8
  protected translate: TranslateService;
9
9
  fileDropEl: ElementRef;
10
10
  fileExtension: string;
11
+ fileExtensionsExcluded: string[];
11
12
  uniqueFile: boolean;
12
13
  instantUpload: boolean;
13
14
  uploadFn: FileUploadFn<any>;
14
15
  deleteFn: FileDeleteFn<any>;
15
16
  maxParallelUpload: number;
17
+ maxFileSizeMb: number;
16
18
  autoHideDropArea: boolean;
17
19
  files: UploadFile<any>[];
18
20
  uploading: boolean;
21
+ checks: FileCheck[];
19
22
  get processingFiles(): UploadFile<any>[];
20
23
  get processedFiles(): UploadFile<any>[];
21
24
  get processingFilesCount(): number;
@@ -40,11 +43,12 @@ export declare class UploadFileComponent {
40
43
  * @param files (Files List)
41
44
  */
42
45
  prepareFilesList(files: FileList | File[]): void;
46
+ checkFiles(): void;
43
47
  /**
44
48
  * Execute upload
45
49
  */
46
50
  uploadFiles(files?: File[]): Promise<UploadFile<any>[]>;
47
51
  waitIdle(opts?: WaitForOptions): Promise<void>;
48
52
  static ɵfac: i0.ɵɵFactoryDeclaration<UploadFileComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<UploadFileComponent, "app-upload-file", never, { "fileExtension": { "alias": "fileExtension"; "required": false; }; "uniqueFile": { "alias": "uniqueFile"; "required": false; }; "instantUpload": { "alias": "instantUpload"; "required": false; }; "uploadFn": { "alias": "uploadFn"; "required": false; }; "deleteFn": { "alias": "deleteFn"; "required": false; }; "maxParallelUpload": { "alias": "maxParallelUpload"; "required": false; }; "autoHideDropArea": { "alias": "autoHideDropArea"; "required": false; }; }, {}, never, never, false, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<UploadFileComponent, "app-upload-file", never, { "fileExtension": { "alias": "fileExtension"; "required": false; }; "fileExtensionsExcluded": { "alias": "fileExtensionsExcluded"; "required": false; }; "uniqueFile": { "alias": "uniqueFile"; "required": false; }; "instantUpload": { "alias": "instantUpload"; "required": false; }; "uploadFn": { "alias": "uploadFn"; "required": false; }; "deleteFn": { "alias": "deleteFn"; "required": false; }; "maxParallelUpload": { "alias": "maxParallelUpload"; "required": false; }; "maxFileSizeMb": { "alias": "maxFileSizeMb"; "required": false; }; "autoHideDropArea": { "alias": "autoHideDropArea"; "required": false; }; }, {}, never, never, false, never>;
50
54
  }
@@ -6,6 +6,13 @@ export declare class UploadFile<T> extends File {
6
6
  error?: string;
7
7
  response?: FileResponse<T> | HttpResponse<T>;
8
8
  }
9
+ export type FileCheckEnabledFn = () => boolean;
10
+ export type FileHasErrorFn = (file: UploadFile<any>) => boolean;
11
+ export interface FileCheck {
12
+ isEnabled: FileCheckEnabledFn;
13
+ hasError: FileHasErrorFn;
14
+ error: string;
15
+ }
9
16
  export type FileUploadFn<T> = (file: File) => Observable<FileEvent<T> | HttpEvent<T>>;
10
17
  export type FileDeleteFn<T> = (file: UploadFile<T>) => Promise<boolean>;
11
18
  export interface FileProgressEvent {
@@ -263,7 +263,8 @@
263
263
  "DEVELOPED_BY": "Developed by:",
264
264
  "PARTNERS": "Partners and sponsors:",
265
265
  "POD_VERSION": "Pod v{{version}}",
266
- "APP_VERSION": "App v{{version}}"
266
+ "APP_VERSION": "App v{{version}}",
267
+ "BTN_CHANGELOG": "Changelog"
267
268
  },
268
269
  "HOME": {
269
270
  "WELCOME_WEB": "Welcome to the {{appName}} web site!",
@@ -648,6 +649,8 @@
648
649
  "IMPORTING": "Import in progress",
649
650
  "BTN_IMPORT_POLICY_DOTS": "Import policy...",
650
651
  "ERROR": "Error while uploading file",
652
+ "MAX_FILE_SIZE_ERROR": "The file size is too large to be uploaded ({{maxFileSizeMb}} MB max)",
653
+ "EXTENSION_NOT_ALLOWED_ERROR": "The file extension is not allowed ({{fileExtensionsExcluded}} excluded)",
651
654
  "IMPORT_POLICY": {
652
655
  "TITLE": "Import options",
653
656
  "INSERT-ONLY": "Inserts only",
@@ -263,7 +263,8 @@
263
263
  "DEVELOPED_BY": "Developed by:",
264
264
  "PARTNERS": "Partners and sponsors:",
265
265
  "POD_VERSION": "Pod v{{version}}",
266
- "APP_VERSION": "App v{{version}}"
266
+ "APP_VERSION": "App v{{version}}",
267
+ "BTN_CHANGELOG": "Changelog"
267
268
  },
268
269
  "HOME": {
269
270
  "WELCOME_WEB": "Welcome to the {{appName}} web site!",
@@ -648,6 +649,8 @@
648
649
  "IMPORTING": "Import in progress",
649
650
  "BTN_IMPORT_POLICY_DOTS": "Import policy...",
650
651
  "ERROR": "Error while uploading file",
652
+ "MAX_FILE_SIZE_ERROR": "The file size is too large to be uploaded ({{maxFileSizeMb}} MB max)",
653
+ "EXTENSION_NOT_ALLOWED_ERROR": "The file extension is not allowed ({{fileExtensionsExcluded}} excluded)",
651
654
  "IMPORT_POLICY": {
652
655
  "TITLE": "Import options",
653
656
  "INSERT-ONLY": "Inserts only",
@@ -263,7 +263,8 @@
263
263
  "DEVELOPED_BY": "Développé par :",
264
264
  "PARTNERS": "Partenaires et sponsors :",
265
265
  "POD_VERSION": "Pod v{{version}}",
266
- "APP_VERSION": "App v{{version}}"
266
+ "APP_VERSION": "App v{{version}}",
267
+ "BTN_CHANGELOG": "Notes de version"
267
268
  },
268
269
  "HOME": {
269
270
  "WELCOME_WEB": "Bienvenue sur le site web {{appName}} !",
@@ -650,6 +651,8 @@
650
651
  "IMPORTING": "Importation en cours",
651
652
  "BTN_IMPORT_POLICY_DOTS": "Stratégie d'importation...",
652
653
  "ERROR": "Erreur durant l'envoi de fichier",
654
+ "MAX_FILE_SIZE_ERROR": "La taille du fichier est trop importante pour être téléversé ({{maxFileSizeMb}} Mo max).",
655
+ "EXTENSION_NOT_ALLOWED_ERROR": "L'extension du fichier n'est pas autorisée ({{fileExtensionsExcluded}} exclus).",
653
656
  "IMPORT_POLICY": {
654
657
  "TITLE": "Stratégie d'importation",
655
658
  "INSERT-ONLY": "Insertions uniquement",
@@ -2,7 +2,7 @@
2
2
  "name": "ngx-sumaris-components",
3
3
  "short_name": "ngx-sumaris-components",
4
4
  "manifest_version": 1,
5
- "version": "18.26.13",
5
+ "version": "18.26.14-alpha2",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -57,6 +57,7 @@ export declare class Environment {
57
57
  storageSavePeriodMs?: number;
58
58
  sourceUrl?: string;
59
59
  reportIssueUrl?: string;
60
+ changelogUrl?: string;
60
61
  forumUrl?: string;
61
62
  helpUrl?: string;
62
63
  privacyPolicyUrl?: string;
@@ -115,6 +115,8 @@
115
115
  .mat-mdc-footer-cell {
116
116
  // Remove default padding
117
117
  padding-inline: 0;
118
+ padding-inline-start: 0; // Compat Chrome < 87 (padding-inline not exists yet)
119
+ padding-inline-end: 0; // Compat Chrome < 87 (padding-inline not exists yet)
118
120
 
119
121
  &.ion-padding-start {
120
122
  padding-inline-start: var(--mat-cell-horizontal-padding);
@@ -352,7 +354,10 @@
352
354
  }
353
355
 
354
356
  .mdc-text-field {
357
+ // Remove default padding
355
358
  padding-inline: 0;
359
+ padding-inline-start: 0; // Compat Chrome < 87 (padding-inline not exists yet)
360
+ padding-inline-end: 0; // Compat Chrome < 87 (padding-inline not exists yet)
356
361
  }
357
362
 
358
363
  // Prefix