@posiwise/admin-module 0.0.254 → 0.0.255

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posiwise/admin-module",
3
- "version": "0.0.254",
3
+ "version": "0.0.255",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^22.2.0",
6
6
  "@angular/core": "^22.2.0",
@@ -1,53 +1,55 @@
1
1
  import * as i0 from "@angular/core";
2
- import { AfterViewInit, ChangeDetectorRef, EventEmitter, Injector, OnDestroy, OnInit, PipeTransform, QueryList, TemplateRef } from "@angular/core";
2
+ import { AfterViewInit, ChangeDetectorRef, DestroyRef, EventEmitter, Injector, OnDestroy, OnInit, PipeTransform, QueryList, TemplateRef } from "@angular/core";
3
3
  import { AhoyService, AuthService, CommonService, CustomToastService, FeatureFlagService, GroupService, NgbDateCustomParserFormatter, PermissionService, ProductService, SubscriptionService, TagService, TipsService, UserService, WindowService } from "@posiwise/common-services";
4
4
  import { LazyLoadEvent, MenuItem, SelectItem } from "primeng/api";
5
5
  import { AppBaseComponent } from "@posiwise/app-base-component";
6
- import { AdminDataService, AdminService, AmbassadorPayoutDetail, AmbassadorPayoutListResponse, AmbassadorPayoutService, AmbassadorPayoutStatus, McpOauthClient, McpOauthClientService, PayoutProvider, SubscriptionInvoice, SubscriptionInvoiceListResponse, SubscriptionInvoicePaymentType, SubscriptionInvoiceService } from "@posiwise/admin-module-utils";
7
- import * as i132 from "@posiwise/shared-components";
6
+ import { AdminDataService, AdminService, AmbassadorPayoutDetail, AmbassadorPayoutListResponse, AmbassadorPayoutService, AmbassadorPayoutStatus, McpOauthClient, McpOauthClientService, OnboardingAdminService, OnboardingAdminStep, OnboardingCatalogue, OnboardingCatalogueSource, OnboardingFamily, PayoutProvider, SubscriptionInvoice, SubscriptionInvoiceListResponse, SubscriptionInvoicePaymentType, SubscriptionInvoiceService } from "@posiwise/admin-module-utils";
7
+ import * as i134 from "@posiwise/shared-components";
8
8
  import { CollapsibleSidebarService, ConfirmDialogService, PasswordValidationComponent, PermissionTreeComponent } from "@posiwise/shared-components";
9
- import * as i139 from "@angular/forms";
9
+ import * as i141 from "@angular/forms";
10
10
  import { FormArray, FormBuilder, FormGroup, NgForm, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
11
11
  import { FAQ, Paging, Plotly, Product, ResourceInsightResponse, ResourcePost, Role, Subscription, SubscriptionMember, User } from "@posiwise/common-utilities";
12
12
  import { CdkDragDrop } from "@angular/cdk/drag-drop";
13
13
  import { CustomUploaderComponent } from "@posiwise/utils";
14
- import * as i128 from "@ng-bootstrap/ng-bootstrap";
15
- import { NgbDateParserFormatter, NgbDatepickerConfig, NgbModal } from "@ng-bootstrap/ng-bootstrap";
14
+ import * as i130 from "@ng-bootstrap/ng-bootstrap";
15
+ import { NgbActiveModal, NgbDateParserFormatter, NgbDatepickerConfig, NgbModal } from "@ng-bootstrap/ng-bootstrap";
16
+ import { HasUnsavedChanges, UnsavedChangesService } from "@posiwise/core-guards";
16
17
  import { Observable } from "rxjs";
17
- import * as i130 from "@angular/common";
18
+ import { TranslocoService } from "@jsverse/transloco";
19
+ import * as i132 from "@angular/common";
18
20
  import { DatePipe } from "@angular/common";
19
21
  import { DomSanitizer, SafeHtml } from "@angular/platform-browser";
20
- import * as i133 from "@angular-magic/ngx-gp-autocomplete";
22
+ import * as i135 from "@angular-magic/ngx-gp-autocomplete";
21
23
  import { NgxGpAutocompleteDirective } from "@angular-magic/ngx-gp-autocomplete";
22
- import * as i116 from "primeng/autocomplete";
24
+ import * as i118 from "primeng/autocomplete";
23
25
  import { AutoComplete } from "primeng/autocomplete";
24
26
  import moment$1 from "moment";
25
- import * as i113 from "primeng/table";
27
+ import * as i115 from "primeng/table";
26
28
  import { Table } from "primeng/table";
27
- import * as i118 from "primeng/multiselect";
29
+ import * as i120 from "primeng/multiselect";
28
30
  import { MultiSelect } from "primeng/multiselect";
29
- import * as i129 from "ngx-uploader";
31
+ import * as i131 from "ngx-uploader";
30
32
  import { UploadFile, UploadInput, UploadOutput, UploaderOptions, humanizeBytes } from "ngx-uploader";
31
- import * as i114 from "primeng/tooltip";
32
- import * as i115 from "primeng/accordion";
33
- import * as i117 from "primeng/select";
34
- import * as i119 from "primeng/inputtext";
35
- import * as i120 from "primeng/iconfield";
36
- import * as i121 from "primeng/inputicon";
37
- import * as i122 from "@posiwise/app-loader";
38
- import * as i123 from "ngx-daterangepicker-material";
39
- import * as i124 from "ngx-json-viewer";
40
- import * as i125 from "primeng/datepicker";
41
- import * as i126 from "angular-plotly.js";
42
- import * as i127 from "primeng/fileupload";
43
- import * as i131 from "ngx-ui-switch";
44
- import * as i134 from "@posiwise/core-transloco";
45
- import * as i135 from "@posiwise/pipes";
46
- import * as i137 from "@posiwise/directives";
33
+ import * as i116 from "primeng/tooltip";
34
+ import * as i117 from "primeng/accordion";
35
+ import * as i119 from "primeng/select";
36
+ import * as i121 from "primeng/inputtext";
37
+ import * as i122 from "primeng/iconfield";
38
+ import * as i123 from "primeng/inputicon";
39
+ import * as i124 from "@posiwise/app-loader";
40
+ import * as i125 from "ngx-daterangepicker-material";
41
+ import * as i126 from "ngx-json-viewer";
42
+ import * as i127 from "primeng/datepicker";
43
+ import * as i128 from "angular-plotly.js";
44
+ import * as i129 from "primeng/fileupload";
45
+ import * as i133 from "ngx-ui-switch";
46
+ import * as i136 from "@posiwise/core-transloco";
47
+ import * as i137 from "@posiwise/pipes";
48
+ import * as i139 from "@posiwise/directives";
47
49
  import * as i1 from "@angular/router";
48
50
  import { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot } from "@angular/router";
49
- import * as i140 from "ngx-pagination";
50
- import * as i141 from "ngx-quill";
51
+ import * as i142 from "ngx-pagination";
52
+ import * as i143 from "ngx-quill";
51
53
  declare namespace users_tabs_component_d_exports {
52
54
  export { UserTabComponent };
53
55
  }
@@ -1312,13 +1314,15 @@ export declare class LoginNotificationsListComponent extends AppBaseComponent im
1312
1314
  declare namespace login_notification_details_component_d_exports {
1313
1315
  export { LoginNotificationDetailsComponent };
1314
1316
  }
1315
- export declare class LoginNotificationDetailsComponent extends AppBaseComponent implements OnInit {
1317
+ export declare class LoginNotificationDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy, HasUnsavedChanges {
1316
1318
  private readonly cdr;
1317
1319
  private readonly adminService;
1318
1320
  private readonly productService;
1321
+ private readonly unsavedChanges;
1319
1322
  form: UntypedFormGroup;
1320
1323
  submitted: boolean;
1321
1324
  buttonBusy: boolean;
1325
+ saved: boolean;
1322
1326
  id: number;
1323
1327
  routers: {
1324
1328
  globalConfigDetails: string;
@@ -1369,8 +1373,11 @@ export declare class LoginNotificationDetailsComponent extends AppBaseComponent
1369
1373
  loginNotificationTypes$: Observable<string>;
1370
1374
  isLoading: boolean;
1371
1375
  featureKeys: any[];
1372
- constructor(injector: Injector, cdr: ChangeDetectorRef, adminService: AdminService, productService: ProductService);
1376
+ private unregisterUnsaved;
1377
+ constructor(injector: Injector, cdr: ChangeDetectorRef, adminService: AdminService, productService: ProductService, unsavedChanges: UnsavedChangesService);
1373
1378
  ngOnInit(): void;
1379
+ ngOnDestroy(): void;
1380
+ hasUnsavedChanges(): boolean;
1374
1381
  get f(): {
1375
1382
  [key: string]: import("@angular/forms").AbstractControl<any, any, any>;
1376
1383
  };
@@ -1602,8 +1609,9 @@ declare class FeatureFlagsListComponent extends AppBaseComponent {
1602
1609
  declare namespace feature_flag_details_component_d_exports {
1603
1610
  export { FeatureFlagDetailsComponent };
1604
1611
  }
1605
- declare class FeatureFlagDetailsComponent extends AppBaseComponent implements OnInit {
1612
+ declare class FeatureFlagDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy, HasUnsavedChanges {
1606
1613
  private readonly adminService;
1614
+ private readonly unsavedChanges;
1607
1615
  form: import("@angular/forms").UntypedFormGroup;
1608
1616
  routers: {
1609
1617
  globalConfigDetails: string;
@@ -1654,13 +1662,17 @@ declare class FeatureFlagDetailsComponent extends AppBaseComponent implements On
1654
1662
  isLoading: boolean;
1655
1663
  submitted: boolean;
1656
1664
  buttonBusy: boolean;
1665
+ saved: boolean;
1657
1666
  flagTypeOptions: any[];
1658
1667
  statusOptions: any[];
1659
1668
  allUsers: any[];
1660
1669
  filteredUsers: any[];
1661
1670
  subscriptionId: number;
1662
- constructor(injector: Injector, adminService: AdminService);
1671
+ private unregisterUnsaved;
1672
+ constructor(injector: Injector, adminService: AdminService, unsavedChanges: UnsavedChangesService);
1663
1673
  ngOnInit(): void;
1674
+ ngOnDestroy(): void;
1675
+ hasUnsavedChanges(): boolean;
1664
1676
  loadSupportedOptions(): void;
1665
1677
  loadOwners(): void;
1666
1678
  searchOwners(event: any): void;
@@ -1812,7 +1824,8 @@ declare namespace products_tabs_component_d_exports {
1812
1824
  }
1813
1825
  export declare class ProductsTabComponent {
1814
1826
  items: MenuItem[];
1815
- constructor();
1827
+ constructor(transloco: TranslocoService, destroyRef: DestroyRef);
1828
+ private tabs;
1816
1829
  static ɵfac: i0.ɵɵFactoryDeclaration<ProductsTabComponent, never>;
1817
1830
  static ɵcmp: i0.ɵɵComponentDeclaration<ProductsTabComponent, "pw-products-tabs", never, {}, {}, never, never, false, never>;
1818
1831
  }
@@ -2491,12 +2504,19 @@ declare abstract class UsersListBaseComponent extends AppBaseComponent {
2491
2504
  value: string;
2492
2505
  }[];
2493
2506
  constructor(adminService: AdminService, productService: ProductService, injector: Injector, cdr: ChangeDetectorRef, sidebarService: CollapsibleSidebarService);
2494
- getTableState(): void;
2495
- private initializeSearchText;
2496
- private initializeSelectedOption;
2497
- private initializeSearchDataSource;
2498
- private initializeCriteria;
2499
- private initializeFilters;
2507
+ onTableStateRestore(event: {
2508
+ filters?: Record<string, {
2509
+ value: unknown;
2510
+ }>;
2511
+ }): void;
2512
+ /**
2513
+ * Rebuild `searchDataSource` from the dataset that matches `selectedOption.value`.
2514
+ * Called from `onTableStateRestore` (so a restored criteria multiselect has its
2515
+ * options back) and from `getRoles`/`getProducts` resolution (so a late data
2516
+ * fetch after restore still populates the multiselect). Mirrors the mapping in
2517
+ * the concrete `onSearchOptionChange`.
2518
+ */
2519
+ protected refreshSearchDataSource(): void;
2500
2520
  onLazyLoad(event: LazyLoadEvent): void;
2501
2521
  protected getRoles(): void;
2502
2522
  protected getProducts(): void;
@@ -2748,15 +2768,17 @@ export declare class SubscriptionsListComponent extends AppBaseComponent impleme
2748
2768
  ngOnInit(): void;
2749
2769
  openRecoverSubscriptionModal(item: any): void;
2750
2770
  onRecoverConfirmed(): void;
2751
- getTableState(): void;
2771
+ onStateRestore(event: {
2772
+ filters?: Record<string, {
2773
+ value: unknown;
2774
+ }>;
2775
+ }): void;
2752
2776
  onLazyLoad(event: LazyLoadEvent): void;
2753
2777
  getSupportedCurrency(): void;
2754
2778
  getMinMaxUnits(): void;
2755
2779
  private getData;
2756
2780
  onDelete(item: any): void;
2757
2781
  private getProductsList;
2758
- onSearchOptionChange(event: any): void;
2759
- filterByStatus(value: string): void;
2760
2782
  sortObj(obj: any): {};
2761
2783
  searchProduct(event: any): void;
2762
2784
  onProductChange(event: any): void;
@@ -2773,7 +2795,7 @@ export declare class SubscriptionsListComponent extends AppBaseComponent impleme
2773
2795
  declare namespace invite_users_component_d_exports {
2774
2796
  export { InviteUsersComponent };
2775
2797
  }
2776
- declare class InviteUsersComponent extends AppBaseComponent implements OnInit, OnDestroy {
2798
+ declare class InviteUsersComponent extends AppBaseComponent implements OnInit {
2777
2799
  private readonly fb;
2778
2800
  private readonly adminService;
2779
2801
  private readonly productService;
@@ -2858,7 +2880,6 @@ declare class InviteUsersComponent extends AppBaseComponent implements OnInit, O
2858
2880
  subscriptionInsights: FeatureKey[];
2859
2881
  constructor(fb: UntypedFormBuilder, adminService: AdminService, productService: ProductService, injector: Injector, commonService: CommonService, cdr: ChangeDetectorRef);
2860
2882
  ngOnInit(): void;
2861
- getTableState(): void;
2862
2883
  onLazyLoad(event: LazyLoadEvent): void;
2863
2884
  getSupportedCurrency(): void;
2864
2885
  getMinMaxUnits(): void;
@@ -2874,7 +2895,6 @@ declare class InviteUsersComponent extends AppBaseComponent implements OnInit, O
2874
2895
  'text-danger fw-bold': boolean;
2875
2896
  'text-warning text-bold-700': boolean;
2876
2897
  };
2877
- ngOnDestroy(): void;
2878
2898
  static ɵfac: i0.ɵɵFactoryDeclaration<InviteUsersComponent, never>;
2879
2899
  static ɵcmp: i0.ɵɵComponentDeclaration<InviteUsersComponent, "pw-invite-users", never, {}, {}, never, never, false, never>;
2880
2900
  }
@@ -3239,6 +3259,117 @@ export declare class ProductInsightComponent extends AppBaseComponent implements
3239
3259
  static ɵfac: i0.ɵɵFactoryDeclaration<ProductInsightComponent, never>;
3240
3260
  static ɵcmp: i0.ɵɵComponentDeclaration<ProductInsightComponent, "pw-admin-product-insight", never, {}, {}, never, never, false, never>;
3241
3261
  }
3262
+ declare namespace onboarding_steps_component_d_exports {
3263
+ export { OnboardingStepsComponent };
3264
+ }
3265
+ /**
3266
+ * Admin → Products → Onboarding (cloudolive-api#441): the master subscription admin edits each product family's
3267
+ * onboarding checklist. Only families this app registered a catalogue for appear (ONBOARDING_CATALOGUES):
3268
+ * the catalogue says which checks the product can run, so a family without one could not be checked.
3269
+ */
3270
+ declare class OnboardingStepsComponent extends AppBaseComponent implements OnInit {
3271
+ private readonly onboarding;
3272
+ private readonly commonService;
3273
+ private readonly confirmDialog;
3274
+ private readonly modal;
3275
+ private readonly cdr;
3276
+ private readonly sources;
3277
+ families: (OnboardingFamily & {
3278
+ label: string;
3279
+ })[];
3280
+ permissionKey: string | null;
3281
+ /** The product (plan) the list is filtered to; null = every product of the family. */
3282
+ planFilter: string | null;
3283
+ steps: OnboardingAdminStep[];
3284
+ catalogue: OnboardingCatalogue;
3285
+ faqs: {
3286
+ slug: string;
3287
+ question: string;
3288
+ }[];
3289
+ loading: boolean;
3290
+ loadFailed: boolean;
3291
+ busy: boolean;
3292
+ constructor(injector: Injector, onboarding: OnboardingAdminService, commonService: CommonService, confirmDialog: ConfirmDialogService, modal: NgbModal, cdr: ChangeDetectorRef, sources: OnboardingCatalogueSource[] | null);
3293
+ /** The selected master subscription, read on every request — never a snapshot (TEN2). */
3294
+ get subscriptionId(): number;
3295
+ ngOnInit(): void;
3296
+ get plans(): {
3297
+ feature_key: string;
3298
+ name: string;
3299
+ }[];
3300
+ /** The steps a customer of the filtered product sees. */
3301
+ get visibleSteps(): OnboardingAdminStep[];
3302
+ selectFamily(permissionKey: string | null): void;
3303
+ completedBy(step: OnboardingAdminStep): string | null;
3304
+ planNames(step: OnboardingAdminStep): string | null;
3305
+ install(): void;
3306
+ /** Swaps a step with its neighbour in the visible (possibly filtered) list. */
3307
+ move(index: number, offset: number): void;
3308
+ toggle(step: OnboardingAdminStep, enabled: boolean): void;
3309
+ remove(step: OnboardingAdminStep): Promise<void>;
3310
+ edit(step: OnboardingAdminStep | null): void;
3311
+ private save;
3312
+ /** Runs a change, then shows the list it answers with, or reloads the list when it answers with none. */
3313
+ private run;
3314
+ private source;
3315
+ private refresh;
3316
+ static ɵfac: i0.ɵɵFactoryDeclaration<OnboardingStepsComponent, [null, null, null, null, null, null, {
3317
+ optional: true;
3318
+ }]>;
3319
+ static ɵcmp: i0.ɵɵComponentDeclaration<OnboardingStepsComponent, "pw-onboarding-steps", never, {}, {}, never, never, false, never>;
3320
+ }
3321
+ declare namespace onboarding_step_form_component_d_exports {
3322
+ export { OnboardingStepFormComponent };
3323
+ }
3324
+ /**
3325
+ * Add / edit one onboarding step (cloudolive-api#441), opened as a modal by OnboardingStepsComponent. Closes with
3326
+ * the step's attributes; the parent saves them. "How it's completed" offers the product's checks plus Manual
3327
+ * (the customer ticks it).
3328
+ */
3329
+ declare class OnboardingStepFormComponent {
3330
+ plans: {
3331
+ feature_key: string;
3332
+ name: string;
3333
+ }[];
3334
+ checks: OnboardingCatalogue['checks'];
3335
+ faqs: {
3336
+ slug: string;
3337
+ question: string;
3338
+ }[];
3339
+ otherSteps: OnboardingAdminStep[];
3340
+ submitted: boolean;
3341
+ readonly kinds: string[];
3342
+ readonly modal: NgbActiveModal;
3343
+ private readonly fb;
3344
+ readonly form: import("@angular/forms").FormGroup<{
3345
+ title: import("@angular/forms").FormControl<string>;
3346
+ description: import("@angular/forms").FormControl<string>;
3347
+ kind: import("@angular/forms").FormControl<string>;
3348
+ check_key: import("@angular/forms").FormControl<string>;
3349
+ feature_keys: import("@angular/forms").FormControl<string[]>;
3350
+ depends_on: import("@angular/forms").FormControl<string[]>;
3351
+ route: import("@angular/forms").FormControl<string>;
3352
+ faq_slug: import("@angular/forms").FormControl<string>;
3353
+ activation: import("@angular/forms").FormControl<boolean>;
3354
+ admin_only: import("@angular/forms").FormControl<boolean>;
3355
+ enabled: import("@angular/forms").FormControl<boolean>;
3356
+ }>;
3357
+ private current;
3358
+ /**
3359
+ * The step being edited (null = a new one). A setter, not ngOnInit: the parent assigns it after
3360
+ * NgbModal.open() has already created the component, so the form is filled on assignment.
3361
+ */
3362
+ get step(): OnboardingAdminStep | null;
3363
+ set step(value: OnboardingAdminStep | null);
3364
+ get checkOptions(): {
3365
+ check_key: string;
3366
+ title: string;
3367
+ description?: string;
3368
+ }[];
3369
+ save(): void;
3370
+ static ɵfac: i0.ɵɵFactoryDeclaration<OnboardingStepFormComponent, never>;
3371
+ static ɵcmp: i0.ɵɵComponentDeclaration<OnboardingStepFormComponent, "pw-onboarding-step-form", never, {}, {}, never, never, false, never>;
3372
+ }
3242
3373
  declare namespace resources_admin_tabs_component_d_exports {
3243
3374
  export { ResourcesAdminIndexComponent };
3244
3375
  }
@@ -4165,17 +4296,21 @@ export declare class TermsOfServiceTabsComponent {
4165
4296
  declare namespace terms_of_service_details_component_d_exports {
4166
4297
  export { TermsOfServiceDetailsComponent };
4167
4298
  }
4168
- export declare class TermsOfServiceDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy, AfterViewInit {
4299
+ export declare class TermsOfServiceDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy, AfterViewInit, HasUnsavedChanges {
4169
4300
  private readonly adminService;
4170
4301
  private readonly cdr;
4302
+ private readonly unsavedChanges;
4171
4303
  form: UntypedFormGroup;
4172
4304
  id: number;
4173
4305
  data: PrivacyTos;
4174
4306
  isLoading: boolean;
4175
4307
  submitted: boolean;
4308
+ saved: boolean;
4176
4309
  editorConfig: any;
4177
- constructor(adminService: AdminService, injector: Injector, cdr: ChangeDetectorRef);
4310
+ private unregisterUnsaved;
4311
+ constructor(adminService: AdminService, injector: Injector, cdr: ChangeDetectorRef, unsavedChanges: UnsavedChangesService);
4178
4312
  ngOnInit(): void;
4313
+ hasUnsavedChanges(): boolean;
4179
4314
  ngAfterViewInit(): void;
4180
4315
  onSave(): void;
4181
4316
  get f(): {
@@ -4751,12 +4886,14 @@ declare class OauthClientsComponent extends AppBaseComponent implements OnInit {
4751
4886
  declare namespace oauth_clients_details_component_d_exports {
4752
4887
  export { OauthClientsDetailsComponent };
4753
4888
  }
4754
- declare class OauthClientsDetailsComponent extends AppBaseComponent implements OnInit {
4889
+ declare class OauthClientsDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy, HasUnsavedChanges {
4755
4890
  private readonly fb;
4756
4891
  private readonly oauthClientService;
4757
4892
  private readonly cdr;
4893
+ private readonly unsavedChanges;
4758
4894
  form: FormGroup;
4759
4895
  submitting: boolean;
4896
+ saved: boolean;
4760
4897
  /** Set in edit mode — the record being edited. null while creating. */
4761
4898
  editId: number | null;
4762
4899
  /** Gates the form in edit mode until the client is fetched (AI54). */
@@ -4808,8 +4945,11 @@ declare class OauthClientsDetailsComponent extends AppBaseComponent implements O
4808
4945
  posts: string;
4809
4946
  resourcesList: string;
4810
4947
  };
4811
- constructor(fb: FormBuilder, oauthClientService: McpOauthClientService, injector: Injector, cdr: ChangeDetectorRef);
4948
+ private unregisterUnsaved;
4949
+ constructor(fb: FormBuilder, oauthClientService: McpOauthClientService, injector: Injector, cdr: ChangeDetectorRef, unsavedChanges: UnsavedChangesService);
4812
4950
  ngOnInit(): void;
4951
+ ngOnDestroy(): void;
4952
+ hasUnsavedChanges(): boolean;
4813
4953
  /** In edit mode the client_id is immutable and is not part of the editable form. */
4814
4954
  private loadClient;
4815
4955
  onSubmit(): void;
@@ -4817,6 +4957,12 @@ declare class OauthClientsDetailsComponent extends AppBaseComponent implements O
4817
4957
  private updateClient;
4818
4958
  copy(value: string): void;
4819
4959
  backToList(): void;
4960
+ /**
4961
+ * Clear the dirty state so a programmatic post-save navigation (or the
4962
+ * secret-shown confirmation screen that follows a create) never trips
4963
+ * the unsaved-changes prompt.
4964
+ */
4965
+ private markClean;
4820
4966
  static ɵfac: i0.ɵɵFactoryDeclaration<OauthClientsDetailsComponent, never>;
4821
4967
  static ɵcmp: i0.ɵɵComponentDeclaration<OauthClientsDetailsComponent, "pw-oauth-clients-details", never, {}, {}, never, never, false, never>;
4822
4968
  }
@@ -6011,7 +6157,7 @@ export declare class AdminRoutingModule {
6011
6157
  }
6012
6158
  export declare class AdminModule {
6013
6159
  static ɵfac: i0.ɵɵFactoryDeclaration<AdminModule, never>;
6014
- static ɵmod: i0.ɵɵNgModuleDeclaration<AdminModule, [typeof UserTabComponent, typeof SubscriptionComponent, typeof MailerComponent, typeof MailerListComponent, typeof MailerDetailsComponent, typeof NewsletterComponent, typeof FaqListComponent, typeof DomainConfigListComponent, typeof DomainConfigDetailsComponent, typeof DomainConfigBuildComponent, typeof DomainConfigCoreComponent, typeof DomainConfigOrganizationComponent, typeof DomainConfigSecurityComponent, typeof DomainConfigSocialComponent, typeof DomainConfigIntegrationsComponent, typeof DomainConfigInterfaceComponent, typeof DomainConfigTabsComponent, typeof LoginNotificationTabsComponent, typeof LoginNotificationsListComponent, typeof LoginNotificationDetailsComponent, typeof FeedbackQuestionsListComponent, typeof FeedbackQuestionsDetailsComponent, typeof FeatureFlagsListComponent, typeof FeatureFlagDetailsComponent, typeof FeatureFlagRulesComponent, typeof FeatureFlagsTabsComponent, typeof UserDetailsComponent, typeof ProductsTabComponent, typeof SubscriptionDetailsComponent, typeof NewsletterDetailsComponent, typeof NewsletterItemDetailsComponent, typeof NewsLetterItemViewComponent, typeof ProductDetailsComponent, typeof ProductBackupCardComponent, typeof RoleDetailsComponent, typeof TagsTabsComponent, typeof TipComponent, typeof TipsComponent, typeof AgentDetailsComponent, typeof UserListComponent, typeof RolesListComponent, typeof SubscriptionsListComponent, typeof InviteUsersComponent, typeof SubscriptionProductDetailsComponent, typeof InsightComponent, typeof SubscriptionInsightNpsComponent, typeof SubscriptionInsightAveragePriceComponent, typeof SubscriptionInsightProcuctSessionComponent, typeof SubscriptionInsightUserSessionComponent, typeof SubscriptionInsightAverageUserComponent, typeof SubscriptionInsightRevenueComponent, typeof SubscriptionInsightChurnComponent, typeof ProductsListComponent, typeof ProductInsightComponent, typeof ResourcesAdminIndexComponent, typeof ResourceAdminDetailsComponent, typeof TagDetailsComponent, typeof ResourcesIndexComponent, typeof ResourcesInsightComponent, typeof ResourcesListsInsightComponent, typeof NewslettersListComponent, typeof NewslettersItemsComponent, typeof NewsletterInsightComponent, typeof UserInsightComponent, typeof TagsCategoryComponent, typeof TagsListComponent, typeof TipsTabsComponent, typeof GenericMiscComponent, typeof GenericInsightComponent, typeof FaqTabsComponent, typeof ContactUsTabsComponent, typeof GeneralTabsComponent, typeof PermissionsListComponent, typeof PermissionsDetailsComponent, typeof PermissionsTabsComponent, typeof TermsOfServiceComponent, typeof TermsOfServiceTabsComponent, typeof TermsOfServiceDetailsComponent, typeof CredentialsComponent, typeof SubscriptionCredentialsComponent, typeof SubscriptionCredentialsDetailsComponent, typeof CredentialsDetailsComponent, typeof CredentialsTabComponent, typeof AmbassadorPayoutsTabsComponent, typeof AmbassadorPayoutsListComponent, typeof AmbassadorPayoutDetailsComponent, typeof OauthClientsTabsComponent, typeof OauthClientsComponent, typeof OauthClientsDetailsComponent, typeof AhoyEventsComponent, typeof TrackingComponent, typeof AhoyMessagesComponent, typeof AhoyVisitsComponent, typeof EventsComponent, typeof VersionsComponent, typeof UsersListForProductComponent, typeof NewsletterUsersListComponent, typeof GlobalConfigListComponent, typeof GlobalConfigDetailsComponent, typeof GlobalConfigTabsComponent, typeof SubscriptionProductsComponent, typeof SubscriptionUsersComponent, typeof AddMembersComponent, typeof SubscriptionAgentsListComponent, typeof SubscriptionInvoicesComponent, typeof SubscriptionInsightTabsComponent, typeof ContactUsListComponent, typeof IncidentListComponent, typeof IncidentTabsComponent, typeof AddEditIncidentComponent, typeof AddEditFaqComponent, typeof UsersInformationSidebarComponent], [typeof i113.TableModule, typeof i114.TooltipModule, typeof i115.AccordionModule, typeof i116.AutoCompleteModule, typeof i117.SelectModule, typeof i118.MultiSelectModule, typeof i119.InputTextModule, typeof i120.IconFieldModule, typeof i121.InputIconModule, typeof i122.AppLoaderModule, typeof i123.NgxDaterangepickerMd, typeof i124.NgxJsonViewerModule, typeof i125.DatePickerModule, typeof i126.PlotlyViaCDNModule, typeof i127.FileUploadModule, typeof i128.NgbTooltipModule, typeof i129.NgxUploaderModule, typeof i130.CommonModule, typeof i131.UiSwitchModule, typeof i132.SharedComponentsModule, typeof i132.CollapsibleSidebarTriggerDirective, typeof i133.NgxGpAutocompleteModule, typeof i134.CoreTranslocoModule, typeof i135.PipesModule, typeof KpiInsightPipe, typeof i137.DirectivesModule, typeof AdminRoutingModule, typeof i128.NgbModalModule, typeof i139.FormsModule, typeof i139.ReactiveFormsModule, typeof i140.NgxPaginationModule, typeof i128.NgbNavModule, typeof i128.NgbDatepickerModule, typeof i141.QuillModule], never>;
6160
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AdminModule, [typeof UserTabComponent, typeof SubscriptionComponent, typeof MailerComponent, typeof MailerListComponent, typeof MailerDetailsComponent, typeof NewsletterComponent, typeof FaqListComponent, typeof DomainConfigListComponent, typeof DomainConfigDetailsComponent, typeof DomainConfigBuildComponent, typeof DomainConfigCoreComponent, typeof DomainConfigOrganizationComponent, typeof DomainConfigSecurityComponent, typeof DomainConfigSocialComponent, typeof DomainConfigIntegrationsComponent, typeof DomainConfigInterfaceComponent, typeof DomainConfigTabsComponent, typeof LoginNotificationTabsComponent, typeof LoginNotificationsListComponent, typeof LoginNotificationDetailsComponent, typeof FeedbackQuestionsListComponent, typeof FeedbackQuestionsDetailsComponent, typeof FeatureFlagsListComponent, typeof FeatureFlagDetailsComponent, typeof FeatureFlagRulesComponent, typeof FeatureFlagsTabsComponent, typeof UserDetailsComponent, typeof ProductsTabComponent, typeof SubscriptionDetailsComponent, typeof NewsletterDetailsComponent, typeof NewsletterItemDetailsComponent, typeof NewsLetterItemViewComponent, typeof ProductDetailsComponent, typeof ProductBackupCardComponent, typeof RoleDetailsComponent, typeof TagsTabsComponent, typeof TipComponent, typeof TipsComponent, typeof AgentDetailsComponent, typeof UserListComponent, typeof RolesListComponent, typeof SubscriptionsListComponent, typeof InviteUsersComponent, typeof SubscriptionProductDetailsComponent, typeof InsightComponent, typeof SubscriptionInsightNpsComponent, typeof SubscriptionInsightAveragePriceComponent, typeof SubscriptionInsightProcuctSessionComponent, typeof SubscriptionInsightUserSessionComponent, typeof SubscriptionInsightAverageUserComponent, typeof SubscriptionInsightRevenueComponent, typeof SubscriptionInsightChurnComponent, typeof ProductsListComponent, typeof ProductInsightComponent, typeof OnboardingStepsComponent, typeof OnboardingStepFormComponent, typeof ResourcesAdminIndexComponent, typeof ResourceAdminDetailsComponent, typeof TagDetailsComponent, typeof ResourcesIndexComponent, typeof ResourcesInsightComponent, typeof ResourcesListsInsightComponent, typeof NewslettersListComponent, typeof NewslettersItemsComponent, typeof NewsletterInsightComponent, typeof UserInsightComponent, typeof TagsCategoryComponent, typeof TagsListComponent, typeof TipsTabsComponent, typeof GenericMiscComponent, typeof GenericInsightComponent, typeof FaqTabsComponent, typeof ContactUsTabsComponent, typeof GeneralTabsComponent, typeof PermissionsListComponent, typeof PermissionsDetailsComponent, typeof PermissionsTabsComponent, typeof TermsOfServiceComponent, typeof TermsOfServiceTabsComponent, typeof TermsOfServiceDetailsComponent, typeof CredentialsComponent, typeof SubscriptionCredentialsComponent, typeof SubscriptionCredentialsDetailsComponent, typeof CredentialsDetailsComponent, typeof CredentialsTabComponent, typeof AmbassadorPayoutsTabsComponent, typeof AmbassadorPayoutsListComponent, typeof AmbassadorPayoutDetailsComponent, typeof OauthClientsTabsComponent, typeof OauthClientsComponent, typeof OauthClientsDetailsComponent, typeof AhoyEventsComponent, typeof TrackingComponent, typeof AhoyMessagesComponent, typeof AhoyVisitsComponent, typeof EventsComponent, typeof VersionsComponent, typeof UsersListForProductComponent, typeof NewsletterUsersListComponent, typeof GlobalConfigListComponent, typeof GlobalConfigDetailsComponent, typeof GlobalConfigTabsComponent, typeof SubscriptionProductsComponent, typeof SubscriptionUsersComponent, typeof AddMembersComponent, typeof SubscriptionAgentsListComponent, typeof SubscriptionInvoicesComponent, typeof SubscriptionInsightTabsComponent, typeof ContactUsListComponent, typeof IncidentListComponent, typeof IncidentTabsComponent, typeof AddEditIncidentComponent, typeof AddEditFaqComponent, typeof UsersInformationSidebarComponent], [typeof i115.TableModule, typeof i116.TooltipModule, typeof i117.AccordionModule, typeof i118.AutoCompleteModule, typeof i119.SelectModule, typeof i120.MultiSelectModule, typeof i121.InputTextModule, typeof i122.IconFieldModule, typeof i123.InputIconModule, typeof i124.AppLoaderModule, typeof i125.NgxDaterangepickerMd, typeof i126.NgxJsonViewerModule, typeof i127.DatePickerModule, typeof i128.PlotlyViaCDNModule, typeof i129.FileUploadModule, typeof i130.NgbTooltipModule, typeof i131.NgxUploaderModule, typeof i132.CommonModule, typeof i133.UiSwitchModule, typeof i134.SharedComponentsModule, typeof i134.CollapsibleSidebarTriggerDirective, typeof i135.NgxGpAutocompleteModule, typeof i136.CoreTranslocoModule, typeof i137.PipesModule, typeof KpiInsightPipe, typeof i139.DirectivesModule, typeof AdminRoutingModule, typeof i130.NgbModalModule, typeof i141.FormsModule, typeof i141.ReactiveFormsModule, typeof i142.NgxPaginationModule, typeof i130.NgbNavModule, typeof i130.NgbDatepickerModule, typeof i143.QuillModule], never>;
6015
6161
  static ɵinj: i0.ɵɵInjectorDeclaration<AdminModule>;
6016
6162
  }
6017
6163
  export declare class AdminGuardService {