@posiwise/smart-crm 0.0.37 → 0.0.38

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 (84) hide show
  1. package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-details/smart-crm-account-details.component.mjs +10 -10
  2. package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-files/smart-crm-account-files.component.mjs +8 -8
  3. package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-info/smart-crm-account-info.component.mjs +23 -23
  4. package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-invoices/smart-crm-account-invoices.component.mjs +10 -10
  5. package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-accounts.component.mjs +9 -9
  6. package/esm2022/lib/private/components/smart-crm-actions/smart-crm-actions.component.mjs +12 -12
  7. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions-details/smart-crm-actions-details.component.mjs +5 -5
  8. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.mjs +5 -5
  9. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-configuration.component.mjs +4 -4
  10. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories-details/smart-crm-opportunity-categories-details.component.mjs +3 -3
  11. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.mjs +6 -6
  12. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source-details/smart-crm-source-details.component.mjs +3 -3
  13. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source.component.mjs +9 -9
  14. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stage-details/smart-crm-stage-details.component.mjs +4 -4
  15. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.mjs +9 -9
  16. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets-details/smart-crm-widgets-details.component.mjs +3 -3
  17. package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets.component.mjs +8 -8
  18. package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.mjs +8 -8
  19. package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-info/smart-crm-contact-info.component.mjs +17 -17
  20. package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contacts.component.mjs +11 -11
  21. package/esm2022/lib/private/components/smart-crm-customer/smart-crm-customer-success/smart-crm-customer-success.component.mjs +3 -3
  22. package/esm2022/lib/private/components/smart-crm-insight/smart-crm-account-insight/smart-crm-account-insight.component.mjs +3 -3
  23. package/esm2022/lib/private/components/smart-crm-insight/smart-crm-analysis-insight/smart-crm-analysis.component.mjs +3 -3
  24. package/esm2022/lib/private/components/smart-crm-insight/smart-crm-contact-insight/smart-crm-contact-insight.component.mjs +5 -5
  25. package/esm2022/lib/private/components/smart-crm-insight/smart-crm-insight.component.mjs +4 -4
  26. package/esm2022/lib/private/components/smart-crm-insight/smart-crm-marketing-insight/smart-crm-marketing-insight.component.mjs +5 -5
  27. package/esm2022/lib/private/components/smart-crm-insight/smart-crm-opportunities-insight/smart-crm-opportunities-insight.component.mjs +10 -10
  28. package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.mjs +6 -6
  29. package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads.component.mjs +7 -7
  30. package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-contacts/smart-crm-marketing-contacts.component.mjs +7 -7
  31. package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-details/smart-crm-marketing-details.component.mjs +6 -6
  32. package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-list.component.mjs +10 -10
  33. package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-view-details/smart-crm-marketing-view-details.component.mjs +3 -3
  34. package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-board/smart-crm-board.component.mjs +9 -9
  35. package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.mjs +17 -17
  36. package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-info/smart-crm-opportunities-info.component.mjs +13 -11
  37. package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.mjs +10 -10
  38. package/esm2022/lib/private/components/smart-crm-tabs/smart-crm-tabs.component.mjs +3 -3
  39. package/esm2022/lib/private/smart-crm-private.module.mjs +33 -33
  40. package/esm2022/lib/private/smart-crm-private.routing.module.mjs +8 -8
  41. package/esm2022/lib/public/components/smart-crm-newsletter-confirmation/smart-crm-newsletter-confirmation.component.mjs +1 -1
  42. package/esm2022/lib/public/components/smart-crm-newsletter-unsubscribe/smart-crm-newsletter-unsubscribe.component.mjs +3 -3
  43. package/esm2022/lib/public/components/smart-crm-signup/smart-crm-signup.component.mjs +2 -2
  44. package/esm2022/lib/public/smart-crm-public.module.mjs +4 -4
  45. package/esm2022/lib/public/smart-crm-public.routing.module.mjs +1 -1
  46. package/fesm2022/posiwise-smart-crm.mjs +155 -153
  47. package/fesm2022/posiwise-smart-crm.mjs.map +1 -1
  48. package/lib/private/components/smart-crm-accounts/smart-crm-account-details/smart-crm-account-details.component.d.ts +16 -16
  49. package/lib/private/components/smart-crm-accounts/smart-crm-account-files/smart-crm-account-files.component.d.ts +12 -12
  50. package/lib/private/components/smart-crm-accounts/smart-crm-account-info/smart-crm-account-info.component.d.ts +46 -47
  51. package/lib/private/components/smart-crm-accounts/smart-crm-account-invoices/smart-crm-account-invoices.component.d.ts +10 -10
  52. package/lib/private/components/smart-crm-accounts/smart-crm-accounts.component.d.ts +12 -12
  53. package/lib/private/components/smart-crm-actions/smart-crm-actions.component.d.ts +15 -15
  54. package/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions-details/smart-crm-actions-details.component.d.ts +8 -8
  55. package/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.d.ts +5 -5
  56. package/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories-details/smart-crm-opportunity-categories-details.component.d.ts +4 -4
  57. package/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.d.ts +7 -7
  58. package/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source-details/smart-crm-source-details.component.d.ts +1 -1
  59. package/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source.component.d.ts +6 -6
  60. package/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stage-details/smart-crm-stage-details.component.d.ts +5 -5
  61. package/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.d.ts +8 -8
  62. package/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets-details/smart-crm-widgets-details.component.d.ts +7 -7
  63. package/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets.component.d.ts +9 -9
  64. package/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.d.ts +11 -11
  65. package/lib/private/components/smart-crm-contacts/smart-crm-contact-info/smart-crm-contact-info.component.d.ts +27 -27
  66. package/lib/private/components/smart-crm-contacts/smart-crm-contacts.component.d.ts +19 -19
  67. package/lib/private/components/smart-crm-insight/smart-crm-account-insight/smart-crm-account-insight.component.d.ts +19 -19
  68. package/lib/private/components/smart-crm-insight/smart-crm-analysis-insight/smart-crm-analysis.component.d.ts +7 -7
  69. package/lib/private/components/smart-crm-insight/smart-crm-contact-insight/smart-crm-contact-insight.component.d.ts +13 -13
  70. package/lib/private/components/smart-crm-insight/smart-crm-marketing-insight/smart-crm-marketing-insight.component.d.ts +8 -8
  71. package/lib/private/components/smart-crm-insight/smart-crm-opportunities-insight/smart-crm-opportunities-insight.component.d.ts +18 -18
  72. package/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.d.ts +6 -6
  73. package/lib/private/components/smart-crm-leads/smart-crm-leads.component.d.ts +9 -9
  74. package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-contacts/smart-crm-marketing-contacts.component.d.ts +7 -7
  75. package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-details/smart-crm-marketing-details.component.d.ts +10 -10
  76. package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-list.component.d.ts +8 -8
  77. package/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-view-details/smart-crm-marketing-view-details.component.d.ts +3 -3
  78. package/lib/private/components/smart-crm-opportunities/smart-crm-board/smart-crm-board.component.d.ts +10 -10
  79. package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.d.ts +23 -23
  80. package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-info/smart-crm-opportunities-info.component.d.ts +27 -27
  81. package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.d.ts +12 -12
  82. package/lib/private/components/smart-crm-tabs/smart-crm-tabs.component.d.ts +1 -1
  83. package/lib/public/components/smart-crm-newsletter-unsubscribe/smart-crm-newsletter-unsubscribe.component.d.ts +1 -1
  84. package/package.json +1 -1
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, EventEmitter, Input, Inject, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
- import * as i3 from '@angular/forms';
4
- import { UntypedFormBuilder, Validators, UntypedFormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import * as i1 from '@posiwise/smart-crm-shared';
6
- import { CRM_ACCOUNT_FILES_PATH, CRM_PERMISSIONS, CRM_KEYS } from '@posiwise/smart-crm-shared';
7
- import { PAGE_SIZE, DOCUMENT_TYPE_EXT, TOKEN_HEADER_KEY, POLL_TIMEOUT } from '@posiwise/common-utilities';
8
3
  import { AppBaseComponent } from '@posiwise/app-base-component';
9
4
  import * as i2 from '@posiwise/common-services';
10
5
  import { PermissionService, FormHelperService } from '@posiwise/common-services';
6
+ import { PAGE_SIZE, DOCUMENT_TYPE_EXT, TOKEN_HEADER_KEY, POLL_TIMEOUT } from '@posiwise/common-utilities';
11
7
  import { HelperService } from '@posiwise/helper-service';
8
+ import * as i1 from '@posiwise/smart-crm-shared';
9
+ import { CRM_ACCOUNT_FILES_PATH, CRM_PERMISSIONS, CRM_KEYS } from '@posiwise/smart-crm-shared';
10
+ import * as i3 from '@angular/forms';
11
+ import { UntypedFormBuilder, Validators, UntypedFormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
12
12
  import * as i2$1 from '@angular/common';
13
13
  import { DOCUMENT, CommonModule } from '@angular/common';
14
14
  import * as i5 from '@posiwise/directives';
@@ -21,10 +21,10 @@ import * as i11 from '@posiwise/shared-components';
21
21
  import { SharedComponentsModule } from '@posiwise/shared-components';
22
22
  import * as i11$1 from '@jsverse/transloco';
23
23
  import { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco';
24
- import * as i2$2 from '@ng-bootstrap/ng-bootstrap';
25
- import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
26
24
  import * as i12 from 'ngx-uploader';
27
25
  import { UploadStatus, NgxUploaderModule } from 'ngx-uploader';
26
+ import * as i2$2 from '@ng-bootstrap/ng-bootstrap';
27
+ import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
28
28
  import * as i4 from 'primeng/inputtext';
29
29
  import { InputTextModule } from 'primeng/inputtext';
30
30
  import * as i1$1 from '@angular/router';
@@ -33,8 +33,8 @@ import * as i8 from 'primeng/api';
33
33
  import * as i10 from 'primeng/table';
34
34
  import * as i14 from '@posiwise/pipes';
35
35
  import { PipesModule } from '@posiwise/pipes';
36
- import swal from 'sweetalert2';
37
36
  import moment from 'moment';
37
+ import swal from 'sweetalert2';
38
38
  import * as i4$1 from 'ngx-ui-switch';
39
39
  import { UiSwitchModule } from 'ngx-ui-switch';
40
40
  import * as i17 from 'ngx-infinite-scroll';
@@ -57,10 +57,10 @@ import uniqBy from 'lodash/uniqBy';
57
57
  import * as i4$3 from 'ngx-pagination';
58
58
  import { NgxPaginationModule } from 'ngx-pagination';
59
59
  import { PageAccessGuard } from '@posiwise/core-guards';
60
- import { CoreTranslocoModule } from '@posiwise/core-transloco';
61
- import { Loader } from '@googlemaps/js-api-loader';
62
60
  import { AppConfigService } from '@posiwise/app-config-service';
61
+ import { CoreTranslocoModule } from '@posiwise/core-transloco';
63
62
  import { DropdownModule } from 'primeng/dropdown';
63
+ import { Loader } from '@googlemaps/js-api-loader';
64
64
  import { StatusCodes } from 'http-status-codes';
65
65
  import * as i3$1 from '@posiwise/layouts';
66
66
  import { LayoutsModule } from '@posiwise/layouts';
@@ -284,15 +284,15 @@ class SmartCrmCompanyDetailsComponent extends AppBaseComponent {
284
284
  this.crmService = crmService;
285
285
  this.commonService = commonService;
286
286
  this.geoService = geoService;
287
- this.submitted = false;
288
- this.buttonBusy = false;
289
- this.isLoading = true;
290
- this.onEdit = false;
287
+ this.countryNames = [];
291
288
  this.subscriptionMembers = [];
292
289
  this.status = [];
293
290
  this.priority = [];
294
291
  this.source = [];
295
- this.countryNames = [];
292
+ this.isLoading = true;
293
+ this.onEdit = false;
294
+ this.submitted = false;
295
+ this.buttonBusy = false;
296
296
  this.form = AppSmartCrm.getAccountsForm();
297
297
  }
298
298
  onSearchOwner(event) {
@@ -474,11 +474,11 @@ class SmartCrmCompanyFilesComponent extends AppBaseComponent {
474
474
  this.modalService = modalService;
475
475
  this.authService = authService;
476
476
  this.cdr = cdr;
477
+ this.page = 1;
477
478
  this.isLoaded = false;
479
+ this.loading = true;
478
480
  this.searchText = '';
479
481
  this.totalRecordsUnFiltered = 0;
480
- this.loading = true;
481
- this.page = 1;
482
482
  this.routers = ROUTERS;
483
483
  this.options = { concurrency: 1, maxUploads: 3 };
484
484
  this.uploadInput = new EventEmitter();
@@ -638,15 +638,15 @@ class SmartCrmCompanyAccountInvoiceComponent extends AppBaseComponent {
638
638
  constructor(injector, crmService) {
639
639
  super(injector);
640
640
  this.crmService = crmService;
641
+ this.page = 0;
642
+ this.intervalTimer = interval(POLL_TIMEOUT * 60 * 1000);
641
643
  this.invoices = [];
642
- this.buttonBusy = false;
643
- this.totalRecordsUnFiltered = 0;
644
+ this.invoiceFrequency = ['week', 'month', 'year'];
644
645
  this.searchText = '';
645
- this.intervalTimer = interval(POLL_TIMEOUT * 60 * 1000);
646
- this.isLoaded = false;
647
- this.page = 0;
646
+ this.totalRecordsUnFiltered = 0;
648
647
  this.totalRecords = 0;
649
- this.invoiceFrequency = ['week', 'month', 'year'];
648
+ this.isLoaded = false;
649
+ this.buttonBusy = false;
650
650
  this.subscriptionId = PermissionService.selectedSubscription.id;
651
651
  }
652
652
  onLazyLoad(event) {
@@ -699,29 +699,29 @@ class SmartCrmCompanyInfoComponent extends AppBaseComponent {
699
699
  this.cdr = cdr;
700
700
  this.logoCacheService = logoCacheService;
701
701
  this.document = document;
702
- this.isFormEdit = true;
703
- this.isDataLoaded = false;
704
- this.submitted = false;
702
+ this.page = 1;
703
+ this.totalContacts = 0;
704
+ this.isContactValid = true;
705
705
  this.accountComments = [];
706
+ this.potential = ['low', 'medium', 'high'];
707
+ this.selector = '.timeline-container';
708
+ this.searchText = '';
709
+ this.totalRecordsUnFiltered = 0;
710
+ this.currentPage = 1;
706
711
  this.hasAccess = false;
707
- this.editComment = false;
708
- this.isContactValid = true;
712
+ this.isDataLoaded = false;
709
713
  this.isLoaded = false;
710
- this.totalRecordsUnFiltered = 0;
711
714
  this.loading = true;
712
- this.searchText = '';
713
- this.potential = ['low', 'medium', 'high'];
715
+ this.isFormEdit = true;
716
+ this.submitted = false;
717
+ this.editComment = false;
714
718
  this.showFullComment = false;
719
+ this.submitAction = false;
715
720
  this.isDisabled = false;
721
+ this.buttonBusy = false;
716
722
  this.updating = false;
717
723
  this.direction = '';
718
- this.page = 1;
719
- this.currentPage = 1;
720
- this.totalContacts = 0;
721
- this.selector = '.timeline-container';
722
- this.submitAction = false;
723
724
  this.routers = ROUTERS;
724
- this.buttonBusy = false;
725
725
  this.options = { concurrency: 1, maxUploads: 3 };
726
726
  this.uploadInput = new EventEmitter();
727
727
  this.token = btoa(this.authService.getToken());
@@ -1269,16 +1269,13 @@ class SmartCrmCompaniesComponent extends AppBaseComponent {
1269
1269
  this.commonService = commonService;
1270
1270
  this.logoCacheService = logoCacheService;
1271
1271
  this.cdr = cdr;
1272
+ this.page = 1;
1272
1273
  this.data = {
1273
1274
  accounts: [],
1274
1275
  object_count: 0,
1275
1276
  unfiltered_count: 0
1276
1277
  };
1277
- this.searchText = '';
1278
- this.loading = true;
1279
1278
  this.organizationSizes = [];
1280
- this.hasAccess = false;
1281
- this.isLoaded = false;
1282
1279
  this.searchOptions = [];
1283
1280
  this.filterByIndustries = [];
1284
1281
  this.status = [];
@@ -1288,8 +1285,11 @@ class SmartCrmCompaniesComponent extends AppBaseComponent {
1288
1285
  this.filterByStatus = [];
1289
1286
  this.filterByPriority = [];
1290
1287
  this.filterBySizeId = [];
1288
+ this.searchText = '';
1291
1289
  this.accountActivities = [];
1292
- this.page = 1;
1290
+ this.loading = true;
1291
+ this.hasAccess = false;
1292
+ this.isLoaded = false;
1293
1293
  this.routers = ROUTERS;
1294
1294
  this.actionNames = [];
1295
1295
  }
@@ -1580,11 +1580,11 @@ class SmartCrmSettingsDetailsComponent extends AppBaseComponent {
1580
1580
  constructor(crmService, injector) {
1581
1581
  super(injector);
1582
1582
  this.crmService = crmService;
1583
+ this.targetWeek = [];
1584
+ this.targetWeekMin = [];
1583
1585
  this.submitted = false;
1584
1586
  this.buttonBusy = false;
1585
1587
  this.isLoading = true;
1586
- this.targetWeek = [];
1587
- this.targetWeekMin = [];
1588
1588
  this.form = AppSmartCrm.getSettingsForm();
1589
1589
  }
1590
1590
  ngOnInit() {
@@ -1667,6 +1667,7 @@ class SmartCrmActionsComponent extends AppBaseComponent {
1667
1667
  super(injector);
1668
1668
  this.crmService = crmService;
1669
1669
  this.cdr = cdr;
1670
+ this.page = 1;
1670
1671
  this.data = {
1671
1672
  crm_actions: [],
1672
1673
  object_count: 0,
@@ -1676,7 +1677,6 @@ class SmartCrmActionsComponent extends AppBaseComponent {
1676
1677
  this.loading = true;
1677
1678
  this.hasAccess = false;
1678
1679
  this.isLoaded = false;
1679
- this.page = 1;
1680
1680
  this.routers = ROUTERS;
1681
1681
  }
1682
1682
  ngOnInit() {
@@ -1766,16 +1766,16 @@ class SmartCrmCompanySourceComponent extends AppBaseComponent {
1766
1766
  super(injector);
1767
1767
  this.crmService = crmService;
1768
1768
  this.cdr = cdr;
1769
- this.searchText = '';
1770
- this.loading = true;
1771
- this.hasAccess = false;
1772
- this.isLoaded = false;
1769
+ this.page = 1;
1773
1770
  this.data = {
1774
1771
  crm_sources: [],
1775
1772
  object_count: 0,
1776
1773
  unfiltered_count: 0
1777
1774
  };
1778
- this.page = 1;
1775
+ this.searchText = '';
1776
+ this.loading = true;
1777
+ this.hasAccess = false;
1778
+ this.isLoaded = false;
1779
1779
  this.routers = ROUTERS;
1780
1780
  }
1781
1781
  ngOnInit() {
@@ -1855,17 +1855,17 @@ class SmartCrmWidgetsComponent extends AppBaseComponent {
1855
1855
  super(injector);
1856
1856
  this.crmService = crmService;
1857
1857
  this.cdr = cdr;
1858
- this.searchText = '';
1859
- this.loading = true;
1858
+ this.page = 1;
1860
1859
  this.data = {
1861
1860
  crm_widget_relationships: [],
1862
1861
  object_count: 0,
1863
1862
  unfiltered_count: 0
1864
1863
  };
1864
+ this.positions = [];
1865
+ this.searchText = '';
1866
+ this.loading = true;
1865
1867
  this.hasAccess = false;
1866
1868
  this.isLoaded = false;
1867
- this.positions = [];
1868
- this.page = 1;
1869
1869
  this.routers = ROUTERS;
1870
1870
  }
1871
1871
  ngOnInit() {
@@ -1961,20 +1961,20 @@ class SmartCrmStagesComponent extends AppBaseComponent {
1961
1961
  super(injector);
1962
1962
  this.crmService = crmService;
1963
1963
  this.cdr = cdr;
1964
- this.searchText = '';
1965
- this.loading = true;
1964
+ this.page = 1;
1966
1965
  this.data = {
1967
1966
  crm_opportunity_stages: [],
1968
1967
  object_count: 0,
1969
1968
  unfiltered_count: 0
1970
1969
  };
1971
- this.hasAccess = false;
1972
- this.isLoaded = false;
1973
- this.page = 1;
1974
1970
  this.filterByCategory = [];
1975
1971
  this.stageNames = [];
1976
1972
  this.categories = [];
1977
1973
  this.availableCategories = [];
1974
+ this.searchText = '';
1975
+ this.loading = true;
1976
+ this.hasAccess = false;
1977
+ this.isLoaded = false;
1978
1978
  this.routers = ROUTERS;
1979
1979
  }
1980
1980
  ngOnInit() {
@@ -2097,17 +2097,17 @@ class SmartCrmOpportunityCategoriesComponent extends AppBaseComponent {
2097
2097
  super(injector);
2098
2098
  this.crmService = crmService;
2099
2099
  this.cdr = cdr;
2100
+ this.page = 1;
2100
2101
  this.data = {
2101
2102
  crm_opportunity_categories: [],
2102
2103
  object_count: 0,
2103
2104
  unfiltered_count: 0
2104
2105
  };
2106
+ this.categoryNames = [];
2105
2107
  this.searchText = '';
2106
2108
  this.loading = true;
2107
2109
  this.hasAccess = false;
2108
2110
  this.isLoaded = false;
2109
- this.page = 1;
2110
- this.categoryNames = [];
2111
2111
  this.routers = ROUTERS;
2112
2112
  }
2113
2113
  ngOnInit() {
@@ -2208,11 +2208,11 @@ class SmartCrmConfigurationComponent extends AppBaseComponent {
2208
2208
  });
2209
2209
  }
2210
2210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmConfigurationComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2211
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmConfigurationComponent, selector: "pw-configuration", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'SubscriptionAdmin' && 'SuperAdmin'\">\n <a ngbNavLink>Widgets</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-widgets></pw-smart-crm-widgets>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'admin'\"\n *rbacAllow=\"'SubscriptionAdmin' && 'SuperAdmin'\">\n <a ngbNavLink>Admin</a>\n <ng-template ngbNavContent>\n <pw-coming-soon message=\"Admin\"></pw-coming-soon>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i2$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i2$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i2$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i2$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i2$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i2$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i2$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i11.ComingSoonComponent, selector: "pw-coming-soon", inputs: ["message"] }, { kind: "component", type: SmartCrmCompanySourceComponent, selector: "pw-smart-crm-source" }, { kind: "component", type: SmartCrmWidgetsComponent, selector: "pw-smart-crm-widgets" }, { kind: "component", type: SmartCrmActionsComponent, selector: "pw-smart-crm-actions" }, { kind: "component", type: SmartCrmStagesComponent, selector: "pw-smart-crm-stages" }, { kind: "component", type: SmartCrmOpportunityCategoriesComponent, selector: "pw-smart-crm-opportunity-categories" }] }); }
2211
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmConfigurationComponent, selector: "pw-configuration", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Widgets</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-widgets></pw-smart-crm-widgets>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'admin'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Admin</a>\n <ng-template ngbNavContent>\n <pw-coming-soon message=\"Admin\"></pw-coming-soon>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i2$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i2$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i2$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i2$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i2$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i2$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i2$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i11.ComingSoonComponent, selector: "pw-coming-soon", inputs: ["message"] }, { kind: "component", type: SmartCrmCompanySourceComponent, selector: "pw-smart-crm-source" }, { kind: "component", type: SmartCrmWidgetsComponent, selector: "pw-smart-crm-widgets" }, { kind: "component", type: SmartCrmActionsComponent, selector: "pw-smart-crm-actions" }, { kind: "component", type: SmartCrmStagesComponent, selector: "pw-smart-crm-stages" }, { kind: "component", type: SmartCrmOpportunityCategoriesComponent, selector: "pw-smart-crm-opportunity-categories" }] }); }
2212
2212
  }
2213
2213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmConfigurationComponent, decorators: [{
2214
2214
  type: Component,
2215
- args: [{ selector: 'pw-configuration', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'SubscriptionAdmin' && 'SuperAdmin'\">\n <a ngbNavLink>Widgets</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-widgets></pw-smart-crm-widgets>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'admin'\"\n *rbacAllow=\"'SubscriptionAdmin' && 'SuperAdmin'\">\n <a ngbNavLink>Admin</a>\n <ng-template ngbNavContent>\n <pw-coming-soon message=\"Admin\"></pw-coming-soon>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
2215
+ args: [{ selector: 'pw-configuration', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>CRM Configuration</h2>\n </div>\n</div>\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n (navChange)=\"onTabChange($event)\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'actions'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Actions</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-actions></pw-smart-crm-actions>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'categories'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Categories</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-opportunity-categories></pw-smart-crm-opportunity-categories>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'stage'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Stages</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-stages></pw-smart-crm-stages>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'source'\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <a ngbNavLink>Sources</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-source></pw-smart-crm-source>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'widget'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Widgets</a>\n <ng-template ngbNavContent>\n <pw-smart-crm-widgets></pw-smart-crm-widgets>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'admin'\"\n *rbacAllow=\"'SuperAdmin'\">\n <a ngbNavLink>Admin</a>\n <ng-template ngbNavContent>\n <pw-coming-soon message=\"Admin\"></pw-coming-soon>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
2216
2216
  }], ctorParameters: () => [{ type: i0.Injector }] });
2217
2217
 
2218
2218
  class SmartCrmOpportunityCategoriesDetailsComponent extends AppBaseComponent {
@@ -2357,9 +2357,9 @@ class SmartCrmStageDetailsComponent extends AppBaseComponent {
2357
2357
  constructor(injector, crmService) {
2358
2358
  super(injector);
2359
2359
  this.crmService = crmService;
2360
+ this.categories = [];
2360
2361
  this.buttonBusy = false;
2361
2362
  this.isLoading = true;
2362
- this.categories = [];
2363
2363
  this.form = AppSmartCrm.getStageForm();
2364
2364
  }
2365
2365
  ngOnInit() {
@@ -2530,12 +2530,12 @@ class SmartCrmContactDetailsComponent extends AppBaseComponent {
2530
2530
  this.commonService = commonService;
2531
2531
  this.crmService = crmService;
2532
2532
  this.cdr = cdr;
2533
- this.submitted = false;
2534
- this.buttonBusy = false;
2535
- this.isLoading = true;
2536
2533
  this.filteredAccounts = [];
2537
2534
  this.potentials = [];
2538
2535
  this.labels = [];
2536
+ this.submitted = false;
2537
+ this.buttonBusy = false;
2538
+ this.isLoading = true;
2539
2539
  this.form = AppSmartCrm.getContactsForm();
2540
2540
  }
2541
2541
  ngOnInit() {
@@ -2566,8 +2566,8 @@ class SmartCrmContactDetailsComponent extends AppBaseComponent {
2566
2566
  this.getContactDetails(this.id);
2567
2567
  }
2568
2568
  else if (this.accountId) {
2569
- const accountyData = this.accounts.find(x => x.id === this.accountId);
2570
- this.form.get('crm_account_id').patchValue(accountyData);
2569
+ const accountData = this.accounts.find(x => x.id === this.accountId);
2570
+ this.form.get('crm_account_id').patchValue(accountData);
2571
2571
  }
2572
2572
  });
2573
2573
  }
@@ -2666,22 +2666,22 @@ class SmartCrmContactInfoComponent extends AppBaseComponent {
2666
2666
  this.modalService = modalService;
2667
2667
  this.authService = authService;
2668
2668
  this.document = document;
2669
- this.isDisabled = false;
2670
2669
  this.actions = [];
2671
- this.isFormEdit = true;
2670
+ this.filteredAccounts = [];
2672
2671
  this.accounts = [];
2673
- this.submitted = false;
2674
- this.buttonBusy = false;
2675
2672
  this.contactComments = [];
2676
- this.hasAccess = false;
2677
2673
  this.contactVersioning = [];
2678
- this.isDataLoaded = false;
2679
- this.updating = false;
2680
2674
  this.potentials = ['low', 'medium', 'high'];
2681
2675
  this.labels = [];
2682
- this.filteredAccounts = [];
2683
- this.showFullComment = false;
2676
+ this.submitted = false;
2677
+ this.buttonBusy = false;
2678
+ this.isDisabled = false;
2679
+ this.isFormEdit = true;
2684
2680
  this.isLoaded = false;
2681
+ this.isDataLoaded = false;
2682
+ this.hasAccess = false;
2683
+ this.updating = false;
2684
+ this.showFullComment = false;
2685
2685
  this.submitAction = false;
2686
2686
  this.routers = ROUTERS;
2687
2687
  this.options = { concurrency: 1, maxUploads: 3 };
@@ -3102,22 +3102,22 @@ class SmartCrmContactComponent extends AppBaseComponent {
3102
3102
  super(injector);
3103
3103
  this.crmService = crmService;
3104
3104
  this.cdr = cdr;
3105
+ this.page = 1;
3105
3106
  this.data = {
3106
3107
  contacts: [],
3107
3108
  object_count: 0,
3108
3109
  unfiltered_count: 0
3109
3110
  };
3110
- this.searchText = '';
3111
- this.loading = true;
3112
- this.hasAccess = false;
3113
- this.isLoaded = false;
3114
3111
  this.potential = [];
3115
3112
  this.labels = [];
3116
- this.page = 1;
3117
- this.routers = ROUTERS;
3118
3113
  this.selectedLabels = [];
3119
3114
  this.selectedAccount = [];
3120
3115
  this.accountDropDown = [];
3116
+ this.searchText = '';
3117
+ this.loading = true;
3118
+ this.hasAccess = false;
3119
+ this.isLoaded = false;
3120
+ this.routers = ROUTERS;
3121
3121
  }
3122
3122
  ngOnInit() {
3123
3123
  this.route.params.subscribe(data => {
@@ -3367,11 +3367,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
3367
3367
 
3368
3368
  class SmartCrmCustomerSuccessComponent {
3369
3369
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCustomerSuccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3370
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCustomerSuccessComponent, selector: "pw-smart-crm-customer-success", ngImport: i0, template: "<pw-coming-soon message=\"Customer Success\"></pw-coming-soon>\n", dependencies: [{ kind: "component", type: i11.ComingSoonComponent, selector: "pw-coming-soon", inputs: ["message"] }] }); }
3370
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCustomerSuccessComponent, selector: "pw-smart-crm-customer-success", ngImport: i0, template: "<pw-coming-soon message=\"CX & Success\"></pw-coming-soon>\n", dependencies: [{ kind: "component", type: i11.ComingSoonComponent, selector: "pw-coming-soon", inputs: ["message"] }] }); }
3371
3371
  }
3372
3372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCustomerSuccessComponent, decorators: [{
3373
3373
  type: Component,
3374
- args: [{ selector: 'pw-smart-crm-customer-success', template: "<pw-coming-soon message=\"Customer Success\"></pw-coming-soon>\n" }]
3374
+ args: [{ selector: 'pw-smart-crm-customer-success', template: "<pw-coming-soon message=\"CX & Success\"></pw-coming-soon>\n" }]
3375
3375
  }] });
3376
3376
 
3377
3377
  class SmartCrmSocialMediaComponent {
@@ -3388,14 +3388,14 @@ class SmartCrmCommunicationsInsightComponent extends AppBaseComponent {
3388
3388
  super(injector);
3389
3389
  this.crmService = crmService;
3390
3390
  this.cdr = cdr;
3391
- this.searchText = '';
3392
3391
  this.data = {
3393
3392
  crm_newsletters: [],
3394
3393
  object_count: 0,
3395
3394
  unfiltered_count: 0
3396
3395
  };
3397
- this.isLoaded = false;
3396
+ this.searchText = '';
3398
3397
  this.loading = true;
3398
+ this.isLoaded = false;
3399
3399
  this.communicationsInsightLoaded = false;
3400
3400
  this.geographyLoaded = false;
3401
3401
  this.routers = ROUTERS;
@@ -3541,10 +3541,10 @@ class SmartCrmContactInsightComponent extends AppBaseComponent {
3541
3541
  this.cdr = cdr;
3542
3542
  this.adminService = adminService;
3543
3543
  this.loading = true;
3544
- this.routers = ROUTERS;
3545
3544
  this.contactInsightLoaded = false;
3546
3545
  this.geographyLoaded = false;
3547
3546
  this.userBaseLoaded = false;
3547
+ this.routers = ROUTERS;
3548
3548
  }
3549
3549
  ngOnInit() {
3550
3550
  this.getUserSubscription().subscribe(response => {
@@ -3620,29 +3620,29 @@ class SmartCrmOpportunitiesInsightComponent extends AppBaseComponent {
3620
3620
  this.crmService = crmService;
3621
3621
  this.cdr = cdr;
3622
3622
  this.productService = productService;
3623
- this.hasAccess = false;
3624
- this.searchText = '';
3625
3623
  this.data = {
3626
3624
  crm_opportunities: [],
3627
3625
  object_count: 0,
3628
3626
  unfiltered_count: 0
3629
3627
  };
3630
- this.id = '';
3631
- this.isLoaded = false;
3632
- this.loading = true;
3628
+ this.searchText = '';
3633
3629
  this.searchStages = [];
3630
+ this.searchCategories = [];
3634
3631
  this.filterByStages = [];
3635
3632
  this.filterByCategories = [];
3636
- this.searchCategories = [];
3637
3633
  this.page = 1;
3638
3634
  this.stages = [];
3639
3635
  this.categories = [];
3640
- this.routers = ROUTERS;
3636
+ this.id = '';
3637
+ this.loading = true;
3638
+ this.isLoaded = false;
3639
+ this.hasAccess = false;
3641
3640
  this.opportunitiesInsightLoaded = false;
3642
3641
  this.opportunitiesGeographyLoaded = false;
3643
3642
  this.opportunitiesCategoryLoaded = false;
3644
3643
  this.opportunitiesStageLoaded = false;
3645
3644
  this.opportunitiesGraphLoaded = false;
3645
+ this.routers = ROUTERS;
3646
3646
  }
3647
3647
  ngOnInit() {
3648
3648
  this.getUserSubscription().subscribe(subscription => {
@@ -3756,7 +3756,6 @@ class SmartCrmAccountInsightComponent extends AppBaseComponent {
3756
3756
  constructor(crmService, injector) {
3757
3757
  super(injector);
3758
3758
  this.crmService = crmService;
3759
- this.routers = ROUTERS;
3760
3759
  this.signUpLastNinetyDaysLoaded = false;
3761
3760
  this.accountLastActivitiesLoaded = false;
3762
3761
  this.churnedAccountLoaded = false;
@@ -3767,6 +3766,7 @@ class SmartCrmAccountInsightComponent extends AppBaseComponent {
3767
3766
  this.accountGeographyLoaded = false;
3768
3767
  this.accountInsightLoaded = false;
3769
3768
  this.magicMomentLoaded = false;
3769
+ this.routers = ROUTERS;
3770
3770
  }
3771
3771
  ngOnInit() {
3772
3772
  this.getUserSubscription().subscribe(response => {
@@ -3967,28 +3967,28 @@ class SmartCrmInsightComponent {
3967
3967
  { id: 1, title: 'Accounts' },
3968
3968
  { id: 2, title: 'Contacts' },
3969
3969
  { id: 3, title: 'Opportunities' },
3970
- { id: 4, title: 'Email Marketing' },
3970
+ { id: 4, title: 'E-Marketing' },
3971
3971
  { id: 5, title: 'Analysis' }
3972
3972
  ];
3973
3973
  }
3974
3974
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmInsightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmInsightComponent, selector: "pw-smart-crm-insight", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Email Marketing'\">\n <pw-smart-crm-communications-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Analysis'\">\n <pw-smart-crm-analysis/>\n </ng-container>\n </ng-template>\n </li>\n </ul>\n\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i2$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i2$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i2$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i2$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i2$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i2$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: SmartCrmCommunicationsInsightComponent, selector: "pw-smart-crm-communications-insight" }, { kind: "component", type: SmartCrmAnalysisComponent, selector: "pw-smart-crm-analysis" }, { kind: "component", type: SmartCrmContactInsightComponent, selector: "pw-smart-crm-contact-insight" }, { kind: "component", type: SmartCrmOpportunitiesInsightComponent, selector: "pw-smart-crm-opportunities-insight" }, { kind: "component", type: SmartCrmAccountInsightComponent, selector: "pw-smart-crm-account-insight" }] }); }
3975
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmInsightComponent, selector: "pw-smart-crm-insight", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'E-Marketing'\">\n <pw-smart-crm-communications-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Analysis'\">\n <pw-smart-crm-analysis/>\n </ng-container>\n </ng-template>\n </li>\n </ul>\n\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i2$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i2$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i2$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i2$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i2$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i2$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: SmartCrmCommunicationsInsightComponent, selector: "pw-smart-crm-communications-insight" }, { kind: "component", type: SmartCrmAnalysisComponent, selector: "pw-smart-crm-analysis" }, { kind: "component", type: SmartCrmContactInsightComponent, selector: "pw-smart-crm-contact-insight" }, { kind: "component", type: SmartCrmOpportunitiesInsightComponent, selector: "pw-smart-crm-opportunities-insight" }, { kind: "component", type: SmartCrmAccountInsightComponent, selector: "pw-smart-crm-account-insight" }] }); }
3976
3976
  }
3977
3977
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmInsightComponent, decorators: [{
3978
3978
  type: Component,
3979
- args: [{ selector: 'pw-smart-crm-insight', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Email Marketing'\">\n <pw-smart-crm-communications-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Analysis'\">\n <pw-smart-crm-analysis/>\n </ng-container>\n </ng-template>\n </li>\n </ul>\n\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n</div>\n" }]
3979
+ args: [{ selector: 'pw-smart-crm-insight', template: "<div class=\"row\">\n <div class=\"col-12 mb-0\">\n <h2>Insight</h2>\n <p>\n Below, you\u2019ll find key insights for your CRM. The data updates every few hours.\n </p>\n <ul ngbNav\n #nav=\"ngbNav\"\n class=\"nav-tabs\">\n <li *ngFor=\"let tab of tabs\" [ngbNavItem]=\"tab.id\">\n <a ngbNavLink>{{ tab.title }}</a>\n <ng-template ngbNavContent>\n <ng-container *ngIf=\"tab.title === 'Accounts'\">\n <pw-smart-crm-account-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Contacts'\">\n <pw-smart-crm-contact-insight />\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Opportunities'\">\n <pw-smart-crm-opportunities-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'E-Marketing'\">\n <pw-smart-crm-communications-insight/>\n </ng-container>\n <ng-container *ngIf=\"tab.title === 'Analysis'\">\n <pw-smart-crm-analysis/>\n </ng-container>\n </ng-template>\n </li>\n </ul>\n\n <div [ngbNavOutlet]=\"nav\"></div>\n </div>\n</div>\n" }]
3980
3980
  }] });
3981
3981
 
3982
3982
  class SmartCrmLeadsDetailsComponent extends AppBaseComponent {
3983
3983
  constructor(injector, crmService) {
3984
3984
  super(injector);
3985
3985
  this.crmService = crmService;
3986
- this.submitted = false;
3987
- this.buttonBusy = false;
3988
- this.isLoading = true;
3989
3986
  this.filteredAccounts = [];
3990
3987
  this.potentials = [];
3991
3988
  this.labels = [];
3989
+ this.submitted = false;
3990
+ this.buttonBusy = false;
3991
+ this.isLoading = true;
3992
3992
  this.form = AppSmartCrm.getLeadsForm();
3993
3993
  }
3994
3994
  ngOnInit() {
@@ -4157,13 +4157,13 @@ class SmartCrmLeadsComponent extends AppBaseComponent {
4157
4157
  object_count: 0,
4158
4158
  unfiltered_count: 0
4159
4159
  };
4160
+ this.allSource = [];
4161
+ this.crmSources = [];
4160
4162
  this.searchText = '';
4161
- this.isLoaded = false;
4162
4163
  this.loading = true;
4164
+ this.isLoaded = false;
4163
4165
  this.page = 1;
4164
- this.allSource = [];
4165
4166
  this.routers = ROUTERS;
4166
- this.crmSources = [];
4167
4167
  }
4168
4168
  ngOnInit() {
4169
4169
  this.getUserSubscription().subscribe(response => {
@@ -4266,15 +4266,15 @@ class SmartCrmMarketingUsersListComponent extends AppBaseComponent {
4266
4266
  super(injector);
4267
4267
  this.crmService = crmService;
4268
4268
  this.cdr = cdr;
4269
- this.searchText = '';
4269
+ this.page = 1;
4270
4270
  this.data = {
4271
4271
  newsletter_contacts: [],
4272
4272
  object_count: 0,
4273
4273
  unfiltered_count: 0
4274
4274
  };
4275
- this.isLoaded = false;
4275
+ this.searchText = '';
4276
4276
  this.loading = true;
4277
- this.page = 1;
4277
+ this.isLoaded = false;
4278
4278
  this.routers = ROUTERS;
4279
4279
  }
4280
4280
  ngOnInit() {
@@ -4327,8 +4327,6 @@ class SmartCrmCommunicationsDetailsComponent extends AppBaseComponent {
4327
4327
  super(injector);
4328
4328
  this.crmService = crmService;
4329
4329
  this.commonService = commonService;
4330
- this.submitted = false;
4331
- this.buttonBusy = false;
4332
4330
  this.status = [];
4333
4331
  this.priority = [];
4334
4332
  this.source = [];
@@ -4342,8 +4340,10 @@ class SmartCrmCommunicationsDetailsComponent extends AppBaseComponent {
4342
4340
  { label: 'high', value: 'high' }
4343
4341
  ];
4344
4342
  this.allCommunications = [];
4345
- this.isLoading = true;
4346
4343
  this.userNameSyntax = '{{ @user.share_name }}';
4344
+ this.submitted = false;
4345
+ this.buttonBusy = false;
4346
+ this.isLoading = true;
4347
4347
  QuillHelper.init();
4348
4348
  this.editorConfig = QuillHelper.getEditorConfig();
4349
4349
  this.form = AppSmartCrm.getMarketingForm();
@@ -4573,15 +4573,15 @@ class SmartCrmCommunicationsComponent extends AppBaseComponent {
4573
4573
  super(injector);
4574
4574
  this.crmService = crmService;
4575
4575
  this.cdr = cdr;
4576
- this.searchText = '';
4576
+ this.page = 1;
4577
4577
  this.data = {
4578
4578
  crm_newsletters: [],
4579
4579
  object_count: 0,
4580
4580
  unfiltered_count: 0
4581
4581
  };
4582
- this.isLoaded = false;
4582
+ this.searchText = '';
4583
4583
  this.loading = true;
4584
- this.page = 1;
4584
+ this.isLoaded = false;
4585
4585
  this.routers = ROUTERS;
4586
4586
  }
4587
4587
  ngOnInit() {
@@ -4694,11 +4694,11 @@ class SmartCrmCommunicationsComponent extends AppBaseComponent {
4694
4694
  super.ngOnDestroy();
4695
4695
  }
4696
4696
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCommunicationsComponent, deps: [{ token: i0.Injector }, { token: i1.CrmService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4697
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCommunicationsComponent, selector: "pw-smart-crm-communications", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>Email Marketing</h2>\n <p>Plan, create, and optimize your email marketing strategy here.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i2$2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i10.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i10.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i14.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i14.TextTruncatePipe, name: "textTruncate" }, { kind: "pipe", type: i11$1.TranslocoPipe, name: "transloco" }] }); }
4697
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmCommunicationsComponent, selector: "pw-smart-crm-communications", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>E-Marketing</h2>\n <p>The <strong>E-Marketing</strong> module allows you to quickly launch and customize professional email marketing\n campaigns. <br /> You can <strong>precisely target recipients</strong> to boost deliverability and engagement.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i2$2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i10.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i10.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i14.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i14.TextTruncatePipe, name: "textTruncate" }, { kind: "pipe", type: i11$1.TranslocoPipe, name: "transloco" }] }); }
4698
4698
  }
4699
4699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmCommunicationsComponent, decorators: [{
4700
4700
  type: Component,
4701
- args: [{ selector: 'pw-smart-crm-communications', template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>Email Marketing</h2>\n <p>Plan, create, and optimize your email marketing strategy here.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"] }]
4701
+ args: [{ selector: 'pw-smart-crm-communications', template: "<div class=\"row\">\n <div class=\"col-12\">\n <h2>E-Marketing</h2>\n <p>The <strong>E-Marketing</strong> module allows you to quickly launch and customize professional email marketing\n campaigns. <br /> You can <strong>precisely target recipients</strong> to boost deliverability and engagement.</p>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + routers.marketingDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add New Email Campaign' }}\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container mt-3 table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_newsletters\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n filterDelay=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search communication emails...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Crm.CommunicationsMessage.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Crm.CommunicationsMessage.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Crm.CommunicationsMessage.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Crm.CommunicationsMessage.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, item.id]\">{{\n item.title\n }}</a>\n </td>\n <td data-head=\"Body\"\n [innerHtml]=\"item.body | removeHtml: 'quill' | textTruncate: 200\"></td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">{{ item.send_until | dateFormat }}</td>\n <td data-head=\"Pushed?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_pushed }}</span>\n </td>\n <td data-head=\"Delivered?\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n (keydown.enter)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.marketingDetails,\n item.id\n ]\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Preview and Recipients\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-eye eye-icon\"\n (keydown.enter)=\"onNavigate(subscription, item)\"\n (click)=\"onNavigate(subscription, item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n<div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n</div>\n <span class=\"total-records-count\" *ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoCommunicationMessage' | transloco\">\n </pw-no-data>\n</div>\n<ng-container>\n <div class=\"row mt-5\" *ngIf=\"isLoaded\">\n <!-- Drill Down -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Watch Closely</h5>\n <div class=\"primeng-datatable-container table-responsive\"\n *ngIf=\"communicationsInsight?.length\">\n <p-table class=\"table\"\n #dt\n [value]=\"communicationsInsight\"\n [paginator]=\"communicationsInsight.length !== 0\"\n [rows]=\"PAGE_SIZE\"\n\n [totalRecords]=\"communicationsInsight.length\"\n [lazy]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Title' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendAt' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.SendUntil' | transloco }}\n </th>\n <th scope=\"true\">\n {{ 'Crm.CommunicationsMessage.Reason' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-insight>\n <tr>\n <td data-head=\"Title\">\n <span\n [ngbTooltip]=\"insight?.title\"\n container=\"body\"\n tooltipClass=\"custom-tooltip\"\n placement=\"bottom\"\n >\n <a [routerLink]=\"['/' + subscription?.slug + routers.marketing, insight.id]\">{{ insight?.title | textTruncate: 30 }}</a>\n </span>\n </td>\n <td data-head=\"Value\">{{ insight.send_at | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Value\">{{ insight.send_until | date: 'dd-MMM-YYYY' }}</td>\n <td data-head=\"Reason\">{{ insight.reason }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"communicationsInsight.length !== 0\">{{ 'Label.Total' | transloco }}: {{ communicationsInsight.length }}</span>\n </div>\n <div *ngIf=\"!communicationsInsight?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n <!-- Geography -->\n <div class=\"col-12 col-md-6 mb-3 analytics\">\n <h5 class=\"accordion-heading\">Campaigns Location</h5>\n <div>\n <ng-template [ngIf]=\"communicationEngagement\">\n <plotly-plot [data]=\"communicationEngagement?.data\"\n [layout]=\"communicationEngagement?.layout\"\n [config]=\"communicationEngagement?.config\"\n [useResizeHandler]=\"true\">\n </plotly-plot>\n </ng-template>\n </div>\n <div *ngIf=\"!communicationEngagement\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.CommunicationsMessage.NoInsightMessage' | transloco\">\n </pw-no-data>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".actions-column{min-width:170px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"] }]
4702
4702
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CrmService }, { type: i0.ChangeDetectorRef }] });
4703
4703
 
4704
4704
  class SmartCrmCommunicationViewDetailsComponent extends AppBaseComponent {
@@ -4767,14 +4767,14 @@ class SmartCrmBoardComponent extends AppBaseComponent {
4767
4767
  constructor(crmService, injector) {
4768
4768
  super(injector);
4769
4769
  this.crmService = crmService;
4770
- this.opportunitiesGroup = [];
4771
- this.isLoaded = false;
4772
- this.categories = [];
4773
4770
  this.availableOpportunities = [];
4774
- this.routers = ROUTERS;
4771
+ this.pageSize = 5; // Show 5 cards initially
4775
4772
  this.masterStages = [];
4773
+ this.opportunitiesGroup = [];
4774
+ this.categories = [];
4776
4775
  this.selectedCategoryId = 0;
4777
- this.pageSize = 5; // Show 5 cards initially
4776
+ this.isLoaded = false;
4777
+ this.routers = ROUTERS;
4778
4778
  }
4779
4779
  ngOnInit() {
4780
4780
  this.getUserSubscription().subscribe(response => {
@@ -4990,27 +4990,27 @@ class SmartCrmOpportunitiesDetailsComponent extends AppBaseComponent {
4990
4990
  super(injector);
4991
4991
  this.crmService = crmService;
4992
4992
  this.productService = productService;
4993
- this.onEdit = false;
4994
- this.submitted = false;
4995
- this.buttonBusy = false;
4996
- this.isLoading = true;
4997
- this.searchText = '';
4993
+ this.isUserSubscriptionSuperAdmin = this.permissionService.isUserMasterSubscriptionSuperAdmin();
4998
4994
  this.allContacts = [];
4999
4995
  this.filteredUsers = [];
5000
- this.winChance = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
5001
4996
  this.opportunities = [];
5002
- this.WonField = false;
5003
- this.LostField = false;
5004
- this.isContactChange = false;
5005
- this.TrialStartField = false;
5006
4997
  this.accounts = [];
5007
- this.masterStages = [];
5008
- this.isUserSubscriptionSuperAdmin = this.permissionService.isUserMasterSubscriptionSuperAdmin();
5009
4998
  this.stages = [];
4999
+ this.masterStages = [];
5010
5000
  this.categories = [];
5011
- this.accountValueCount = 0;
5012
5001
  this.featureKeys = [];
5013
5002
  this.currencies = [];
5003
+ this.winChance = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
5004
+ this.accountValueCount = 0;
5005
+ this.searchText = '';
5006
+ this.onEdit = false;
5007
+ this.isContactChange = false;
5008
+ this.TrialStartField = false;
5009
+ this.WonField = false;
5010
+ this.LostField = false;
5011
+ this.submitted = false;
5012
+ this.buttonBusy = false;
5013
+ this.isLoading = true;
5014
5014
  this.form = AppSmartCrm.getOpportunitiesInfoForm();
5015
5015
  }
5016
5016
  ngOnInit() {
@@ -5338,15 +5338,17 @@ class SmartCrmOpportunitiesInfoComponent extends AppBaseComponent {
5338
5338
  this.modalService = modalService;
5339
5339
  this.authService = authService;
5340
5340
  this.document = document;
5341
+ this.filteredAccounts = [];
5341
5342
  this.isLoaded = false;
5342
5343
  this.isFormEdit = true;
5343
- this.submitted = false;
5344
- this.buttonBusy = false;
5345
- this.filteredAccounts = [];
5346
5344
  this.isDisabled = false;
5347
5345
  this.updating = false;
5348
5346
  this.showFullComment = false;
5349
5347
  this.submitAction = false;
5348
+ this.buttonBusy = false;
5349
+ this.submitted = false;
5350
+ this.dangerColor = false;
5351
+ this.dragOver = false;
5350
5352
  this.routers = ROUTERS;
5351
5353
  this.options = { concurrency: 1, maxUploads: 3 };
5352
5354
  this.uploadInput = new EventEmitter();
@@ -5786,23 +5788,23 @@ class SmartCrmOpportunitiesListComponent extends AppBaseComponent {
5786
5788
  this.crmService = crmService;
5787
5789
  this.cdr = cdr;
5788
5790
  this.productService = productService;
5789
- this.hasAccess = false;
5790
- this.searchText = '';
5791
5791
  this.data = {
5792
5792
  crm_opportunities: [],
5793
5793
  object_count: 0,
5794
5794
  unfiltered_count: 0
5795
5795
  };
5796
5796
  this.id = '';
5797
- this.isLoaded = false;
5798
- this.loading = true;
5797
+ this.searchText = '';
5799
5798
  this.searchStages = [];
5799
+ this.searchCategories = [];
5800
5800
  this.filterByStages = [];
5801
5801
  this.filterByCategories = [];
5802
- this.searchCategories = [];
5803
5802
  this.page = 1;
5804
5803
  this.stages = [];
5805
5804
  this.categories = [];
5805
+ this.loading = true;
5806
+ this.isLoaded = false;
5807
+ this.hasAccess = false;
5806
5808
  this.routers = ROUTERS;
5807
5809
  }
5808
5810
  ngOnInit() {
@@ -5989,18 +5991,18 @@ class CrmActionsComponent extends AppBaseComponent {
5989
5991
  super(injector);
5990
5992
  this.crmService = crmService;
5991
5993
  this.document = document;
5994
+ this.totalPendingActions = 0;
5995
+ this.currentPage = 1;
5992
5996
  this.contactActions = [];
5993
- this.isLoaded = false;
5997
+ this.contactActionsAll = [];
5994
5998
  this.accountActionSuggested = [];
5995
- this.updating = false;
5999
+ this.selector = '.pending-actions-wrapper';
6000
+ this.suggestedActionsSelector = '.suggested-actions-wrapper';
6001
+ this.isLoaded = false;
5996
6002
  this.isLoadedSuggested = false;
5997
6003
  this.showFullComment = false;
5998
- this.contactActionsAll = [];
5999
6004
  this.showFilter = false;
6000
- this.selector = '.pending-actions-wrapper';
6001
- this.suggestedActionsSelector = '.suggested-actions-wrapper';
6002
- this.totalPendingActions = 0;
6003
- this.currentPage = 1;
6005
+ this.updating = false;
6004
6006
  this.routers = ROUTERS;
6005
6007
  }
6006
6008
  ngOnInit() {
@@ -6264,14 +6266,14 @@ class SmartCrmTabsComponent extends AppBaseComponent {
6264
6266
  },
6265
6267
  {
6266
6268
  id: 'marketing_tab',
6267
- label: 'Email Marketing',
6269
+ label: 'E-Marketing',
6268
6270
  icon: 'fas fa-bullhorn',
6269
6271
  routerLink: ['/crm/marketing/emails'],
6270
6272
  visible: this.permissionService.evaluatePermissions(`${CRM_PERMISSIONS.Marketing}`)
6271
6273
  },
6272
6274
  {
6273
6275
  id: 'customer-success',
6274
- label: 'Customer Success',
6276
+ label: 'CX & Success',
6275
6277
  icon: 'fa fa-check-circle',
6276
6278
  routerLink: ['/crm/customer-success'],
6277
6279
  visible: this.permissionService.evaluatePermissions(`${CRM_PERMISSIONS.CustomerSuccess}`)
@@ -6937,9 +6939,9 @@ class CrmNewsletterUnsubscribeComponent {
6937
6939
  this.token = '';
6938
6940
  this.message = '';
6939
6941
  this.errorMsg = '';
6940
- this.error = false;
6941
6942
  this.success = "You've successfully been removed from our newsletter.";
6942
6943
  this.failure = 'Something went wrong and we were not able to unsubscribe you. If the problem persists, please contact us.';
6944
+ this.error = false;
6943
6945
  this.route.queryParams.subscribe(params => {
6944
6946
  this.token = params['crm_newsletter_token'] || '';
6945
6947
  if (this.token) {