@sumaris-net/ngx-components 2.12.16-rc2 → 2.12.16-rc4

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 (60) hide show
  1. package/esm2022/public_api.mjs +5 -1
  2. package/esm2022/src/app/admin/users/users.mjs +3 -3
  3. package/esm2022/src/app/core/account/account.module.mjs +17 -4
  4. package/esm2022/src/app/core/account/account.page.mjs +14 -5
  5. package/esm2022/src/app/core/account/password/change-password.form.mjs +60 -0
  6. package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
  7. package/esm2022/src/app/core/account/password/change-password.page.mjs +144 -0
  8. package/esm2022/src/app/core/auth/auth.form.mjs +41 -22
  9. package/esm2022/src/app/core/auth/auth.module.mjs +14 -5
  10. package/esm2022/src/app/core/auth/reset-password.modal.mjs +77 -0
  11. package/esm2022/src/app/core/core.module.mjs +5 -1
  12. package/esm2022/src/app/core/form/form.module.mjs +7 -3
  13. package/esm2022/src/app/core/form/username/username.form.mjs +52 -0
  14. package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
  15. package/esm2022/src/app/core/home/home.mjs +23 -9
  16. package/esm2022/src/app/core/register/register-confirm.page.mjs +10 -8
  17. package/esm2022/src/app/core/register/register.form.mjs +3 -3
  18. package/esm2022/src/app/core/services/account.service.mjs +96 -12
  19. package/esm2022/src/app/core/services/config/core.config.mjs +7 -1
  20. package/esm2022/src/app/core/services/errors.mjs +2 -1
  21. package/esm2022/src/app/core/settings/settings.page.mjs +3 -3
  22. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
  23. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +55 -72
  24. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  25. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +5 -4
  26. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +2 -2
  27. package/esm2022/src/app/shared/toolbar/toolbar.mjs +13 -8
  28. package/esm2022/src/app/shared/validator/validators.mjs +13 -1
  29. package/esm2022/src/environments/environment.mjs +12 -6
  30. package/fesm2022/sumaris-net.ngx-components.mjs +714 -237
  31. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  32. package/package.json +5 -4
  33. package/public_api.d.ts +4 -0
  34. package/src/app/core/account/account.module.d.ts +2 -1
  35. package/src/app/core/account/account.page.d.ts +23 -14
  36. package/src/app/core/account/password/change-password.form.d.ts +19 -0
  37. package/src/app/core/account/password/change-password.module.d.ts +11 -0
  38. package/src/app/core/account/password/change-password.page.d.ts +36 -0
  39. package/src/app/core/auth/auth.form.d.ts +11 -9
  40. package/src/app/core/auth/auth.module.d.ts +6 -4
  41. package/src/app/core/auth/reset-password.modal.d.ts +26 -0
  42. package/src/app/core/core.module.d.ts +2 -1
  43. package/src/app/core/form/form.module.d.ts +2 -1
  44. package/src/app/core/form/username/username.form.d.ts +19 -0
  45. package/src/app/core/form/username/username.module.d.ts +9 -0
  46. package/src/app/core/home/home.d.ts +9 -1
  47. package/src/app/core/services/account.service.d.ts +8 -0
  48. package/src/app/core/services/config/core.config.d.ts +1 -0
  49. package/src/app/core/services/errors.d.ts +1 -0
  50. package/src/app/shared/inputs.d.ts +1 -1
  51. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +1 -0
  52. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +2 -0
  53. package/src/app/shared/toolbar/toolbar.d.ts +5 -0
  54. package/src/app/shared/validator/validators.d.ts +2 -0
  55. package/src/assets/i18n/en-US.json +26 -12
  56. package/src/assets/i18n/en.json +26 -13
  57. package/src/assets/i18n/fr.json +20 -9
  58. package/src/assets/manifest.json +1 -1
  59. package/src/theme/_ionic.globals.scss +1 -0
  60. package/src/theme/_mixins.scss +1 -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.12.16-rc2",
4
+ "version": "2.12.16-rc4",
5
5
  "author": "contact@e-is.pro",
6
6
  "license": "AGPL-3.0",
7
7
  "readmeFilename": "README.md",
@@ -16,6 +16,9 @@
16
16
  "access": "public"
17
17
  },
18
18
  "dependencies": {
19
+ "@maskito/angular": "~2.0.2",
20
+ "@maskito/core": "~2.0.2",
21
+ "@maskito/kit": "~2.0.2",
19
22
  "@noble/ed25519": "^1.7.3",
20
23
  "@polkadot/util": "~12.6.2",
21
24
  "@polkadot/util-crypto": "~12.6.2",
@@ -23,9 +26,7 @@
23
26
  "@rx-angular/state": "~17.2.0",
24
27
  "@rx-angular/template": "~17.3.1",
25
28
  "clone": "~2.1.2",
26
- "@maskito/angular": "~2.0.2",
27
- "@maskito/core": "~2.0.2",
28
- "@maskito/kit": "~2.0.2",
29
+ "maildev": "^2.1.0",
29
30
  "tslib": "^2.3.0"
30
31
  },
31
32
  "peerDependencies": {
package/public_api.d.ts CHANGED
@@ -214,9 +214,13 @@ export * from './src/app/core/account/account.module';
214
214
  export * from './src/app/core/account/account.page';
215
215
  export * from './src/app/core/account/token.table';
216
216
  export * from './src/app/core/account/new-token.modal';
217
+ export * from './src/app/core/account/password/change-password.module';
218
+ export * from './src/app/core/account/password/change-password.form';
219
+ export * from './src/app/core/account/password/change-password.page';
217
220
  export * from './src/app/core/auth/auth.form';
218
221
  export * from './src/app/core/auth/auth.modal';
219
222
  export * from './src/app/core/auth/auth.module';
223
+ export * from './src/app/core/auth/reset-password.modal';
220
224
  export * from './src/app/core/register/register-confirm.page';
221
225
  export * from './src/app/core/register/register.form';
222
226
  export * from './src/app/core/register/register.modal';
@@ -8,8 +8,9 @@ import * as i6 from "@ngx-translate/core";
8
8
  import * as i7 from "../form/buttons/form-buttons-bar.module";
9
9
  import * as i8 from "../form/properties/properties.module";
10
10
  import * as i9 from "../table/table.module";
11
+ import * as i10 from "./password/change-password.module";
11
12
  export declare class AppAccountModule {
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<AppAccountModule, never>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<AppAccountModule, [typeof i1.AccountPage, typeof i2.UserTokenTable, typeof i3.NewTokenModal], [typeof i4.CommonModule, typeof i5.SharedModule, typeof i6.TranslateModule, typeof i7.AppFormButtonsBarModule, typeof i8.AppPropertiesFormModule, typeof i9.AppTableModule], [typeof i6.TranslateModule, typeof i1.AccountPage, typeof i2.UserTokenTable, typeof i3.NewTokenModal]>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppAccountModule, [typeof i1.AccountPage, typeof i2.UserTokenTable, typeof i3.NewTokenModal], [typeof i4.CommonModule, typeof i5.SharedModule, typeof i6.TranslateModule, typeof i7.AppFormButtonsBarModule, typeof i8.AppPropertiesFormModule, typeof i9.AppTableModule, typeof i10.AppChangePasswordModule], [typeof i6.TranslateModule, typeof i1.AccountPage, typeof i2.UserTokenTable, typeof i3.NewTokenModal, typeof i10.AppChangePasswordModule]>;
14
15
  static ɵinj: i0.ɵɵInjectorDeclaration<AppAccountModule>;
15
16
  }
@@ -27,23 +27,31 @@ export declare class AccountPage extends AppForm<Account> implements OnInit, OnD
27
27
  tabGroup: MatTabGroup;
28
28
  propertiesTable: AppPropertiesTable;
29
29
  tokensTable: UserTokenTable;
30
- selectedTabIndex: number;
31
- isLogin: boolean;
32
- changesSubscription: Subscription;
33
- networkSubscription: Subscription;
34
- email: any;
35
- additionalFields: FormFieldDefinition[];
36
- optionDefinitions: FormFieldDefinition[];
30
+ protected selectedTabIndex: number;
31
+ protected isLogin: boolean;
32
+ protected changesSubscription: Subscription;
33
+ protected networkSubscription: Subscription;
34
+ protected email: {
35
+ confirmed: boolean;
36
+ notConfirmed: boolean;
37
+ sending: boolean;
38
+ error: any;
39
+ };
40
+ protected additionalFields: FormFieldDefinition[];
41
+ protected optionDefinitions: FormFieldDefinition[];
37
42
  get settingsForm(): UntypedFormGroup;
38
- locales: LocaleConfig[];
39
- latLongFormats: import("../../shared/material/latlong/latlong.utils").LatLongPattern[];
40
- saving: boolean;
41
- submitted: boolean;
42
- accountReadOnly: boolean;
43
- readonly mobile: boolean;
43
+ protected locales: LocaleConfig[];
44
+ protected latLongFormats: import("../../shared/material/latlong/latlong.utils").LatLongPattern[];
45
+ protected saving: boolean;
46
+ protected submitted: boolean;
47
+ protected accountReadOnly: boolean;
48
+ protected readonly mobile: boolean;
44
49
  get valid(): boolean;
45
- protected showApiTokens: boolean;
46
50
  protected showLatLonFormat: boolean;
51
+ protected canChangePassword: boolean;
52
+ protected showSecurityDetails: boolean;
53
+ protected showTechnicalDetails: boolean;
54
+ protected showApiTokens: boolean;
47
55
  constructor(injector: Injector, formBuilder: UntypedFormBuilder, accountService: AccountService, network: NetworkService, navController: NavController, validatorService: AccountValidatorService, configService: ConfigService, cd: ChangeDetectorRef, locales: LocaleConfig[]);
48
56
  ngOnInit(): void;
49
57
  ngOnDestroy(): void;
@@ -66,6 +74,7 @@ export declare class AccountPage extends AppForm<Account> implements OnInit, OnD
66
74
  close(_?: Event): Promise<boolean>;
67
75
  protected onConfigLoaded(config: Configuration): void;
68
76
  protected markForCheck(): void;
77
+ openChangePasswordPage(): void;
69
78
  static ɵfac: i0.ɵɵFactoryDeclaration<AccountPage, never>;
70
79
  static ɵcmp: i0.ɵɵComponentDeclaration<AccountPage, "app-account-page", never, {}, {}, never, never, false, never>;
71
80
  }
@@ -0,0 +1,19 @@
1
+ import { ChangeDetectorRef, Injector, OnInit } from '@angular/core';
2
+ import { UntypedFormBuilder } from '@angular/forms';
3
+ import { AppForm } from '../../form/form.class';
4
+ import { AuthData } from '../../services/account.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ChangePasswordForm extends AppForm<AuthData> implements OnInit {
7
+ private cd;
8
+ protected showPwd: boolean;
9
+ protected showConfirmPwd: boolean;
10
+ usernamePlaceholder: string;
11
+ emailValidator: boolean;
12
+ set username(value: string);
13
+ get username(): string;
14
+ constructor(injector: Injector, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef);
15
+ ngOnInit(): void;
16
+ protected markForCheck(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChangePasswordForm, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordForm, "app-change-password-form", never, { "usernamePlaceholder": { "alias": "usernamePlaceholder"; "required": false; }; "emailValidator": { "alias": "emailValidator"; "required": false; }; "username": { "alias": "username"; "required": false; }; }, {}, never, never, false, never>;
19
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./change-password.form";
3
+ import * as i2 from "./change-password.page";
4
+ import * as i3 from "../../../shared/shared.module";
5
+ import * as i4 from "@angular/router";
6
+ import * as i5 from "@ngx-translate/core";
7
+ export declare class AppChangePasswordModule {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppChangePasswordModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppChangePasswordModule, [typeof i1.ChangePasswordForm, typeof i2.AppChangePasswordPage], [typeof i3.SharedModule, typeof i4.RouterModule, typeof i5.TranslateModule], [typeof i5.TranslateModule, typeof i1.ChangePasswordForm, typeof i2.AppChangePasswordPage]>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppChangePasswordModule>;
11
+ }
@@ -0,0 +1,36 @@
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { AccountService } from '../../services/account.service';
3
+ import { ActivatedRoute } from '@angular/router';
4
+ import { ConfigService } from '../../services/config.service';
5
+ import { NavController, ToastController } from '@ionic/angular';
6
+ import { Configuration } from '../../services/model/config.model';
7
+ import { AppFormContainer } from '../../form/form-container.class';
8
+ import { ShowToastOptions } from '../../../shared/toast/toasts';
9
+ import { TranslateService } from '@ngx-translate/core';
10
+ import * as i0 from "@angular/core";
11
+ export declare class AppChangePasswordPage extends AppFormContainer implements OnInit, OnDestroy {
12
+ protected configService: ConfigService;
13
+ protected accountService: AccountService;
14
+ protected toastController: ToastController;
15
+ protected translate: TranslateService;
16
+ protected navController: NavController;
17
+ protected activatedRoute: ActivatedRoute;
18
+ protected cd: ChangeDetectorRef;
19
+ protected token: string;
20
+ protected username: string;
21
+ protected contentStyle: {};
22
+ protected sending: boolean;
23
+ protected isLogin: boolean;
24
+ protected usernamePlaceholder: string;
25
+ protected emailValidator: boolean;
26
+ private form;
27
+ constructor(configService: ConfigService, accountService: AccountService, toastController: ToastController, translate: TranslateService, navController: NavController, activatedRoute: ActivatedRoute, cd: ChangeDetectorRef);
28
+ ngOnInit(): Promise<void>;
29
+ ngOnDestroy(): void;
30
+ onConfigReady(config: Configuration): Promise<void>;
31
+ doSubmit(event?: Event): Promise<void>;
32
+ protected showToast(opts: ShowToastOptions): Promise<void>;
33
+ protected markForCheck(): void;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppChangePasswordPage, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppChangePasswordPage, "app-change-password-page", never, {}, {}, never, never, false, never>;
36
+ }
@@ -4,8 +4,8 @@ import { ModalController } from '@ionic/angular';
4
4
  import { AuthData } from '../services/account.service';
5
5
  import { NetworkService } from '../services/network.service';
6
6
  import { LocalSettingsService } from '../services/local-settings.service';
7
- import { PlatformService } from '../services/platform.service';
8
7
  import { AppForm } from '../form/form.class';
8
+ import { Environment } from '../../../environments/environment.class';
9
9
  import { ConfigService } from '../services/config.service';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class AppAuthForm extends AppForm<AuthData> implements OnInit {
@@ -13,24 +13,26 @@ export declare class AppAuthForm extends AppForm<AuthData> implements OnInit {
13
13
  private modalCtrl;
14
14
  network: NetworkService;
15
15
  private cd;
16
- protected environment: any;
17
- readonly mobile: boolean;
18
- canWorkOffline: boolean;
19
- showPwd: boolean;
20
- canRegister: boolean;
21
- usernamePlaceholder: string;
16
+ protected environment: Environment;
17
+ protected readonly mobile: boolean;
18
+ protected canWorkOffline: boolean;
19
+ protected showPwd: boolean;
20
+ protected canRegister: boolean;
21
+ protected canResetPassword: boolean;
22
+ protected usernamePlaceholder: string;
22
23
  onCancel: EventEmitter<any>;
23
24
  onSubmit: EventEmitter<AuthData>;
24
25
  disable(opts?: {
25
26
  onlySelf?: boolean;
26
27
  emitEvent?: boolean;
27
28
  }): void;
28
- constructor(injector: Injector, platform: PlatformService, formBuilder: UntypedFormBuilder, settings: LocalSettingsService, configService: ConfigService, modalCtrl: ModalController, network: NetworkService, cd: ChangeDetectorRef, environment: any);
29
+ constructor(injector: Injector, formBuilder: UntypedFormBuilder, settings: LocalSettingsService, configService: ConfigService, modalCtrl: ModalController, network: NetworkService, cd: ChangeDetectorRef, environment: Environment);
29
30
  ngOnInit(): void;
30
31
  cancel(): Promise<void>;
31
32
  doSubmit(event?: Event): Promise<void>;
32
33
  register(): void;
34
+ resetPassword(): void;
33
35
  protected markForCheck(): void;
34
- static ɵfac: i0.ɵɵFactoryDeclaration<AppAuthForm, [null, null, null, null, null, null, null, null, { optional: true; }]>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppAuthForm, [null, null, null, null, null, null, null, { optional: true; }]>;
35
37
  static ɵcmp: i0.ɵɵComponentDeclaration<AppAuthForm, "app-auth-form", never, {}, { "onCancel": "onCancel"; "onSubmit": "onSubmit"; }, never, never, false, never>;
36
38
  }
@@ -1,11 +1,13 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./auth.form";
3
3
  import * as i2 from "./auth.modal";
4
- import * as i3 from "../../shared/shared.module";
5
- import * as i4 from "@ngx-translate/core";
6
- import * as i5 from "../register/register.module";
4
+ import * as i3 from "./reset-password.modal";
5
+ import * as i4 from "../../shared/shared.module";
6
+ import * as i5 from "@ngx-translate/core";
7
+ import * as i6 from "../register/register.module";
8
+ import * as i7 from "../form/username/username.module";
7
9
  export declare class AppAuthModule {
8
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AppAuthModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AppAuthModule, [typeof i1.AppAuthForm, typeof i2.AppAuthModal], [typeof i3.SharedModule, typeof i4.TranslateModule, typeof i5.AppRegisterModule], [typeof i4.TranslateModule, typeof i1.AppAuthForm, typeof i2.AppAuthModal]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppAuthModule, [typeof i1.AppAuthForm, typeof i2.AppAuthModal, typeof i3.AppResetPasswordModal], [typeof i4.SharedModule, typeof i5.TranslateModule, typeof i6.AppRegisterModule, typeof i7.AppUsernameFormModule], [typeof i5.TranslateModule, typeof i1.AppAuthForm, typeof i2.AppAuthModal, typeof i3.AppResetPasswordModal]>;
10
12
  static ɵinj: i0.ɵɵInjectorDeclaration<AppAuthModule>;
11
13
  }
@@ -0,0 +1,26 @@
1
+ import { ChangeDetectorRef, OnInit } from '@angular/core';
2
+ import { ModalController, ToastController } from '@ionic/angular';
3
+ import { AccountService } from '../services/account.service';
4
+ import { ShowToastOptions } from '../../shared/toast/toasts';
5
+ import { TranslateService } from '@ngx-translate/core';
6
+ import * as i0 from "@angular/core";
7
+ export declare class AppResetPasswordModal implements OnInit {
8
+ protected accountService: AccountService;
9
+ protected viewCtrl: ModalController;
10
+ protected toastController: ToastController;
11
+ protected translate: TranslateService;
12
+ protected cd: ChangeDetectorRef;
13
+ protected sending: boolean;
14
+ username: string;
15
+ usernamePlaceholder: string;
16
+ emailValidator: boolean;
17
+ private form;
18
+ constructor(accountService: AccountService, viewCtrl: ModalController, toastController: ToastController, translate: TranslateService, cd: ChangeDetectorRef);
19
+ ngOnInit(): void;
20
+ cancel(): Promise<void>;
21
+ doSubmit(event?: any): Promise<void>;
22
+ protected showToast(opts: ShowToastOptions): Promise<void>;
23
+ protected markForCheck(): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppResetPasswordModal, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppResetPasswordModal, "app-reset-password-modal", never, { "username": { "alias": "username"; "required": false; }; "usernamePlaceholder": { "alias": "usernamePlaceholder"; "required": false; }; "emailValidator": { "alias": "emailValidator"; "required": false; }; }, {}, never, never, false, never>;
26
+ }
@@ -20,9 +20,10 @@ import * as i17 from "./table/table.module";
20
20
  import * as i18 from "./install/install-upgrade-card.module";
21
21
  import * as i19 from "./offline/update-offline-mode-card.module";
22
22
  import * as i20 from "./services/pipes/pipes.module";
23
+ import * as i21 from "./account/password/change-password.module";
23
24
  export declare class CoreModule {
24
25
  static forRoot(): ModuleWithProviders<CoreModule>;
25
26
  static ɵfac: i0.ɵɵFactoryDeclaration<CoreModule, never>;
26
- static ɵmod: i0.ɵɵNgModuleDeclaration<CoreModule, never, [typeof i1.SharedModule, typeof i2.RouterModule, typeof i3.HttpClientModule, typeof i4.CacheModule, typeof i5.IonicStorageModule, typeof i6.AppGraphQLModule, typeof i7.AppMenuModule, typeof i8.AppIconModule, typeof i9.AppAccountModule, typeof i10.AppRegisterModule, typeof i11.AppAuthModule, typeof i12.AppHomePageModule, typeof i13.AppAboutModalModule, typeof i14.AppSettingsPageModule, typeof i15.AppSelectPeerModule, typeof i16.AppFormModule, typeof i17.AppTableModule, typeof i18.AppInstallUpgradeCardModule, typeof i19.AppUpdateOfflineModeCardModule, typeof i20.CorePipesModule], [typeof i1.SharedModule, typeof i2.RouterModule, typeof i6.AppGraphQLModule, typeof i7.AppMenuModule, typeof i10.AppRegisterModule, typeof i11.AppAuthModule, typeof i12.AppHomePageModule, typeof i13.AppAboutModalModule, typeof i14.AppSettingsPageModule, typeof i8.AppIconModule, typeof i15.AppSelectPeerModule, typeof i16.AppFormModule, typeof i17.AppTableModule, typeof i18.AppInstallUpgradeCardModule, typeof i19.AppUpdateOfflineModeCardModule, typeof i20.CorePipesModule]>;
27
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CoreModule, never, [typeof i1.SharedModule, typeof i2.RouterModule, typeof i3.HttpClientModule, typeof i4.CacheModule, typeof i5.IonicStorageModule, typeof i6.AppGraphQLModule, typeof i7.AppMenuModule, typeof i8.AppIconModule, typeof i9.AppAccountModule, typeof i10.AppRegisterModule, typeof i11.AppAuthModule, typeof i12.AppHomePageModule, typeof i13.AppAboutModalModule, typeof i14.AppSettingsPageModule, typeof i15.AppSelectPeerModule, typeof i16.AppFormModule, typeof i17.AppTableModule, typeof i18.AppInstallUpgradeCardModule, typeof i19.AppUpdateOfflineModeCardModule, typeof i20.CorePipesModule], [typeof i1.SharedModule, typeof i2.RouterModule, typeof i6.AppGraphQLModule, typeof i7.AppMenuModule, typeof i10.AppRegisterModule, typeof i21.AppChangePasswordModule, typeof i11.AppAuthModule, typeof i12.AppHomePageModule, typeof i13.AppAboutModalModule, typeof i14.AppSettingsPageModule, typeof i8.AppIconModule, typeof i15.AppSelectPeerModule, typeof i16.AppFormModule, typeof i17.AppTableModule, typeof i18.AppInstallUpgradeCardModule, typeof i19.AppUpdateOfflineModeCardModule, typeof i20.CorePipesModule]>;
27
28
  static ɵinj: i0.ɵɵInjectorDeclaration<CoreModule>;
28
29
  }
@@ -6,8 +6,9 @@ import * as i4 from "./list/list.module";
6
6
  import * as i5 from "./properties/properties.module";
7
7
  import * as i6 from "./text-popover/text-popover.module";
8
8
  import * as i7 from "./buttons/form-buttons-bar.module";
9
+ import * as i8 from "./username/username.module";
9
10
  export declare class AppFormModule {
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<AppFormModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<AppFormModule, never, [typeof i1.SharedModule, typeof i2.TranslateModule, typeof i3.AppEntityFormModule, typeof i4.AppListFormModule, typeof i5.AppPropertiesFormModule, typeof i6.AppTextPopoverModule, typeof i7.AppFormButtonsBarModule], [typeof i2.TranslateModule, typeof i3.AppEntityFormModule, typeof i4.AppListFormModule, typeof i5.AppPropertiesFormModule, typeof i6.AppTextPopoverModule, typeof i7.AppFormButtonsBarModule]>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppFormModule, never, [typeof i1.SharedModule, typeof i2.TranslateModule, typeof i3.AppEntityFormModule, typeof i4.AppListFormModule, typeof i5.AppPropertiesFormModule, typeof i6.AppTextPopoverModule, typeof i7.AppFormButtonsBarModule, typeof i8.AppUsernameFormModule], [typeof i2.TranslateModule, typeof i3.AppEntityFormModule, typeof i4.AppListFormModule, typeof i5.AppPropertiesFormModule, typeof i6.AppTextPopoverModule, typeof i7.AppFormButtonsBarModule]>;
12
13
  static ɵinj: i0.ɵɵInjectorDeclaration<AppFormModule>;
13
14
  }
@@ -0,0 +1,19 @@
1
+ import { ChangeDetectorRef, Injector } from '@angular/core';
2
+ import { UntypedFormBuilder } from '@angular/forms';
3
+ import { AppForm } from '../form.class';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AppUsernameForm extends AppForm<{
6
+ username: string;
7
+ }> {
8
+ protected cd: ChangeDetectorRef;
9
+ mobile: boolean;
10
+ usernamePlaceHolder: string;
11
+ emailValidator: boolean;
12
+ constructor(injector: Injector, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef);
13
+ ngOnInit(): void;
14
+ markForCheck(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppUsernameForm, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppUsernameForm, "app-username-form", never, { "mobile": { "alias": "mobile"; "required": false; }; "usernamePlaceHolder": { "alias": "usernamePlaceHolder"; "required": false; }; "emailValidator": { "alias": "emailValidator"; "required": false; }; }, {}, never, never, false, never>;
17
+ static ngAcceptInputType_mobile: unknown;
18
+ static ngAcceptInputType_emailValidator: unknown;
19
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./username.form";
3
+ import * as i2 from "../../../shared/shared.module";
4
+ import * as i3 from "@ngx-translate/core";
5
+ export declare class AppUsernameFormModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppUsernameFormModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppUsernameFormModule, [typeof i1.AppUsernameForm], [typeof i2.SharedModule, typeof i3.TranslateModule], [typeof i3.TranslateModule, typeof i1.AppUsernameForm]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppUsernameFormModule>;
9
+ }
@@ -17,7 +17,15 @@ import { Environment } from '../../../environments/environment.class';
17
17
  import { HistoryPageReference } from '../services/model/history.model';
18
18
  import { RxState } from '@rx-angular/state';
19
19
  import * as i0 from "@angular/core";
20
- export declare const getRandomImage: (files: string[]) => string;
20
+ /**
21
+ * @param files
22
+ * @deprecated use `getRandomImageWithCredit()` instead
23
+ **/
24
+ export declare function getRandomImage(files: string[]): string | undefined;
25
+ export declare function getRandomImageWithCredit(files: string[]): {
26
+ image: string;
27
+ credits: string;
28
+ };
21
29
  export declare const APP_HOME_BUTTONS: InjectionToken<IMenuItem[]>;
22
30
  export interface HomePageState {
23
31
  loading: boolean;
@@ -40,6 +40,11 @@ export interface AuthData {
40
40
  export interface RegisterData extends AuthData {
41
41
  account: Account;
42
42
  }
43
+ export interface ChangePasswordData {
44
+ password: string;
45
+ confirmPassword: string;
46
+ email: string;
47
+ }
43
48
  export interface UserSettingsOptions {
44
49
  options: FormFieldDefinitionMap;
45
50
  }
@@ -149,6 +154,9 @@ export declare class AccountService extends BaseGraphqlService<Account, any, num
149
154
  isEmailExists(email: string): Promise<boolean>;
150
155
  sendConfirmationEmail(email: string, locale?: string): Promise<boolean>;
151
156
  confirmEmail(email: string, code: string): Promise<boolean>;
157
+ sendResetPasswordEmail(username: string, locale?: string): Promise<boolean>;
158
+ updatePubkey(data: AuthData): Promise<boolean>;
159
+ resetPubkey(data: AuthData, token: string): Promise<boolean>;
152
160
  listenChanges(opts?: AccountWatchOptions): Subscription;
153
161
  get additionalFields(): FormFieldDefinition[];
154
162
  get $additionalFields(): Observable<FormFieldDefinition[]>;
@@ -10,6 +10,7 @@ export declare const CORE_CONFIG_OPTIONS: Readonly<{
10
10
  DEFAULT_LAT_LONG_FORMAT_ENABLED: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
11
11
  REGISTRATION_ENABLE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
12
12
  AUTH_TOKEN_TYPE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
13
+ AUTH_RESET_PASSWORD_ENABLE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
13
14
  AUTH_API_TOKEN_ENABLED: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
14
15
  AUTH_API_TOKEN_SCOPE_ENABLED: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
15
16
  DEFAULT_AUTH_API_TOKEN_SCOPE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
@@ -40,6 +40,7 @@ export declare const ErrorCodes: {
40
40
  INTERNAL_SERVER_ERROR: number;
41
41
  AUTH_CHALLENGE_ERROR: number;
42
42
  AUTH_SERVER_ERROR: number;
43
+ AUTH_UPDATE_PUBKEY_ERROR: number;
43
44
  LOAD_CONFIG_ERROR: number;
44
45
  SAVE_CONFIG_ERROR: number;
45
46
  LOAD_TRASH_ENTITY_ERROR: number;
@@ -16,7 +16,7 @@ export interface InputElement extends FocusableElement {
16
16
  }
17
17
  export declare function isInputElement(object: any): object is InputElement;
18
18
  export declare function asInputElement(object: ElementRef): InputElement | undefined;
19
- export declare function tabindexComparator(a: InputElement, b: InputElement): 0 | 1 | -1;
19
+ export declare function tabindexComparator(a: InputElement, b: InputElement): 1 | 0 | -1;
20
20
  export interface CanGainFocusOptions {
21
21
  minTabindex?: number;
22
22
  maxTabindex?: number;
@@ -20,6 +20,7 @@ export declare interface MatAutocompleteFieldConfig<T = any, F = any> {
20
20
  debounceTime?: number;
21
21
  suggestLengthThreshold?: number;
22
22
  highlightAccent?: boolean;
23
+ applyImplicitValue?: boolean;
23
24
  /**
24
25
  * Class to apply to the `div.mat-mdc-select-panel`
25
26
  */
@@ -166,5 +166,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
166
166
  static ngAcceptInputType_debug: unknown;
167
167
  static ngAcceptInputType_showSearchBar: unknown;
168
168
  static ngAcceptInputType_stickySearchBar: unknown;
169
+ static ngAcceptInputType_trimSearchText: unknown;
170
+ static ngAcceptInputType_splitSearchText: unknown;
169
171
  static ngAcceptInputType_readonly: unknown;
170
172
  }
@@ -60,4 +60,9 @@ export declare class ToolbarComponent implements ToolbarToken, OnInit, OnDestroy
60
60
  protected markForCheck(): void;
61
61
  static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, [null, null, null, null, null, { optional: true; }]>;
62
62
  static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "app-toolbar", never, { "progressBarMode": { "alias": "progressBarMode"; "required": false; }; "title": { "alias": "title"; "required": false; }; "color": { "alias": "color"; "required": false; }; "class": { "alias": "class"; "required": false; }; "backHref": { "alias": "backHref"; "required": false; }; "defaultBackHref": { "alias": "defaultBackHref"; "required": false; }; "hasValidate": { "alias": "hasValidate"; "required": false; }; "hasClose": { "alias": "hasClose"; "required": false; }; "hasSearch": { "alias": "hasSearch"; "required": false; }; "canGoBack": { "alias": "canGoBack"; "required": false; }; "canShowMenu": { "alias": "canShowMenu"; "required": false; }; }, { "onValidate": "onValidate"; "onClose": "onClose"; "onValidateAndClose": "onValidateAndClose"; "onBackClick": "onBackClick"; "onSearch": "onSearch"; }, never, ["[slot=start]", "ion-title, ion-segment", "ion-buttons[slot=end]", "[slot=end]"], false, never>;
63
+ static ngAcceptInputType_hasValidate: unknown;
64
+ static ngAcceptInputType_hasClose: unknown;
65
+ static ngAcceptInputType_hasSearch: unknown;
66
+ static ngAcceptInputType_canGoBack: unknown;
67
+ static ngAcceptInputType_canShowMenu: unknown;
63
68
  }
@@ -4,6 +4,7 @@ import { Observable, Subscription } from 'rxjs';
4
4
  export declare class SharedValidators {
5
5
  private static _DOUBLE_REGEXP_CACHE;
6
6
  private static getDoubleRegexp;
7
+ static equals(otherControlName: string): ValidatorFn;
7
8
  static readonly I18N_ERROR_KEYS: {
8
9
  required: string;
9
10
  min: string;
@@ -27,6 +28,7 @@ export declare class SharedValidators {
27
28
  pattern: string;
28
29
  unique: string;
29
30
  entity: string;
31
+ equals: string;
30
32
  };
31
33
  static latitude(control: UntypedFormControl): ValidationErrors | null;
32
34
  static longitude(control: UntypedFormControl): ValidationErrors | null;
@@ -77,7 +77,6 @@
77
77
  "DATE_YEAR_PLACEHOLDER": "yyyy",
78
78
  "DATE_PLACEHOLDER": "mm/dd/yyyy",
79
79
  "DATE_TIME_PLACEHOLDER": "mm/dd/yyyy hh:mm",
80
-
81
80
  "LAT_LONG": {
82
81
  "DDMMSS_PLACEHOLDER": "DD° MM' SS\"",
83
82
  "DDMM_PLACEHOLDER": "DD° MM.MMM'",
@@ -92,9 +91,7 @@
92
91
  "LONG_SIGN_E": "E",
93
92
  "LONG_SIGN_W": "W"
94
93
  },
95
-
96
94
  "METADATA": "Metadata:",
97
-
98
95
  "DAY_UNIT": "j",
99
96
  "DATE": "Date",
100
97
  "TIME": "Time",
@@ -103,10 +100,8 @@
103
100
  "TIME_PLACEHOLDER": "hh:mm",
104
101
  "DURATION_PLACEHOLDER": "hhh:mm",
105
102
  "DURATION_DOTS": "Duration:",
106
-
107
103
  "YES": "Yes",
108
104
  "NO": "No",
109
- "DEBUG": "Debug",
110
105
 
111
106
  "UPDATED_ON": "Last modification on",
112
107
  "RECORDER": "Recorder",
@@ -122,10 +117,12 @@
122
117
  "HAS_ERROR": "Please correct errors in the form"
123
118
  },
124
119
  "PAGINATOR": {
125
- "ITEMS_PER_PAGE":"Items per page",
126
- "NEXT_PAGE":"Next page",
127
- "PREVIOUS_PAGE":"Previous page",
128
- "OF": "on"
120
+ "ITEMS_PER_PAGE": "Items per page",
121
+ "NEXT_PAGE": "Next page",
122
+ "PREVIOUS_PAGE": "Previous page",
123
+ "OF": "on",
124
+ "FIRST_PAGE": "First page",
125
+ "LAST_PAGE": "Last page"
129
126
  },
130
127
  "TABLE": {
131
128
  "FILTERED_PARENTHESIS": "(filtered)"
@@ -221,7 +218,6 @@
221
218
  "LOGOUT": "Logout",
222
219
  "ABOUT": "About",
223
220
  "BTN_MY_ACCOUNT": "My account",
224
-
225
221
  "TRIPS": "Trips",
226
222
  "LOGBOOKS": "Logbooks",
227
223
  "OCCASIONS": "Occasions",
@@ -258,11 +254,22 @@
258
254
  "BTN_LOGIN": "Log In",
259
255
  "BTN_REGISTER": "Sign up",
260
256
  "NO_ACCOUNT_QUESTION": "Don't have an account?",
257
+ "RESET_PASSWORD_QUESTION": "Don't have access to your account anymore?",
258
+ "BTN_RESET_PASSWORD": "Reset your password",
261
259
  "OFFLINE_MODE": "Force offline mode?",
262
260
  "LOGOUT": {
263
261
  "CONFIRM_TITLE": "Confirmation",
264
262
  "CONFIRM_MESSAGE": "Are you sure you want to logout?",
265
263
  "BTN_CONFIRM": "Yes, continue"
264
+ },
265
+ "RESET_PASSWORD": {
266
+ "TITLE": "Password Reset",
267
+ "HELP": "Please enter your account username. A <b>recovery link</b> will then be sent to you by email:",
268
+ "BTN_SEND": "Send request"
269
+ },
270
+ "CONFIRM": {
271
+ "RESET_PASSWORD_SENT": "Request sent! You should receive a recovery link by email.",
272
+ "PASSWORD_CHANGED": "Password updated <b>successfully</b>!"
266
273
  }
267
274
  },
268
275
  "REGISTER": {
@@ -327,6 +334,11 @@
327
334
  "VALUE": "Value"
328
335
  }
329
336
  },
337
+ "SECURITY": {
338
+ "TITLE": "Security",
339
+ "PASSWORD": "Password",
340
+ "BTN_CHANGE_PASSWORD": "Change the password"
341
+ },
330
342
  "TOKENS": {
331
343
  "TITLE": "Tokens",
332
344
  "DESCRIPTION": "Authentication tokens",
@@ -363,7 +375,8 @@
363
375
  "RELOADED": "Your user account has been updated!"
364
376
  },
365
377
  "ERROR": {
366
- "SUBSCRIBE_ERROR": "Error while listening account's changes."
378
+ "SUBSCRIBE_ERROR": "Error while listening account's changes.",
379
+ "UPDATE_PUBKEY_ERROR": "Password change failed.<br/><small>If the problem persists, please contact your administrator</small>"
367
380
  }
368
381
  },
369
382
  "SETTINGS": {
@@ -384,7 +397,7 @@
384
397
  "USAGE_MODE": "Usage mode",
385
398
  "USAGE_MODE_FIELD": "<b>On field</b> mode",
386
399
  "USAGE_MODE_DESK": "<b>In office</b> mode",
387
- "USAGE_MODES": {
400
+ "USAGE_MODES": {
388
401
  "FIELD": "On field",
389
402
  "DESK": "In office"
390
403
  },
@@ -587,6 +600,7 @@
587
600
  "FIELD_NOT_VALID_PATTERN": "Invalid format",
588
601
  "FIELD_NOT_VALID_PUBKEY": "Invalid public key",
589
602
  "FIELD_NOT_UNIQUE": "Value already used",
603
+ "FIELD_NOT_EQUALS": "Value not equals",
590
604
  "SPACE_NOT_ALLOW": "Spaces or special characters not allowed",
591
605
  "SCRYPT_ERROR": "Unable to create account keys",
592
606
  "INVALID_OR_INCOMPLETE_FILL": "Invalid or incomplete fill",