@posiwise/admin-module 0.0.259 → 0.0.262
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.
|
@@ -22,8 +22,7 @@ import * as i9$2 from "@posiwise/pipes";
|
|
|
22
22
|
import { PipesModule } from "@posiwise/pipes";
|
|
23
23
|
import * as i6$3 from "@posiwise/shared-components";
|
|
24
24
|
import { CollapsibleSidebarTriggerDirective, SharedComponentsModule } from "@posiwise/shared-components";
|
|
25
|
-
import
|
|
26
|
-
import { CustomUploaderComponent, QuillHelper, ValidateForm, appendQueryParam, handleDateRangeSelection } from "@posiwise/utils";
|
|
25
|
+
import { QuillHelper } from "@posiwise/utils/quill";
|
|
27
26
|
import * as i3 from "angular-plotly.js";
|
|
28
27
|
import { PlotlyViaCDNModule } from "angular-plotly.js";
|
|
29
28
|
import * as i1 from "ngx-daterangepicker-material";
|
|
@@ -69,6 +68,8 @@ import { ADMIN_ROUTERS, PAGE_SIZE, PERMISSION_NAMES, SUBSCRIPTION_ANALYTICS_TYPE
|
|
|
69
68
|
import { HelperService } from "@posiwise/helper-service";
|
|
70
69
|
import * as i6$1 from "primeng/progressspinner";
|
|
71
70
|
import { __decorate } from "tslib";
|
|
71
|
+
import * as i12$1 from "@posiwise/utils";
|
|
72
|
+
import { CustomUploaderComponent, ValidateForm, appendQueryParam, handleDateRangeSelection } from "@posiwise/utils";
|
|
72
73
|
import * as i14 from "@angular/cdk/drag-drop";
|
|
73
74
|
import { moveItemInArray } from "@angular/cdk/drag-drop";
|
|
74
75
|
import groupBy from "lodash/groupBy";
|
|
@@ -107,7 +108,7 @@ const ROUTERS = {
|
|
|
107
108
|
subscriptionProductDetails: `${baseUrl}/products/subscription/`,
|
|
108
109
|
tipsDetails: `${baseUrl}/tips/`,
|
|
109
110
|
tosAndPrivacyDetails: `${baseUrl}/tos/`,
|
|
110
|
-
tosAndPrivacyView: `/privacy-
|
|
111
|
+
tosAndPrivacyView: `/privacy-policy`,
|
|
111
112
|
usersDetails: `${baseUrl}/users/`,
|
|
112
113
|
domainConfig: `${baseUrl}/domain-config/`,
|
|
113
114
|
domainConfigDetails: `${baseUrl}/domain-config/`,
|
|
@@ -170,7 +171,7 @@ var AmbassadorPayoutDetailsComponent = class AmbassadorPayoutDetailsComponent ex
|
|
|
170
171
|
static {
|
|
171
172
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
172
173
|
minVersion: "12.0.0",
|
|
173
|
-
version: "22.2.
|
|
174
|
+
version: "22.2.3",
|
|
174
175
|
ngImport: i0,
|
|
175
176
|
type: AmbassadorPayoutDetailsComponent,
|
|
176
177
|
deps: [
|
|
@@ -184,7 +185,7 @@ var AmbassadorPayoutDetailsComponent = class AmbassadorPayoutDetailsComponent ex
|
|
|
184
185
|
static {
|
|
185
186
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
186
187
|
minVersion: "17.0.0",
|
|
187
|
-
version: "22.2.
|
|
188
|
+
version: "22.2.3",
|
|
188
189
|
type: AmbassadorPayoutDetailsComponent,
|
|
189
190
|
isStandalone: false,
|
|
190
191
|
selector: "pw-ambassador-payout-details",
|
|
@@ -406,7 +407,7 @@ var AmbassadorPayoutDetailsComponent = class AmbassadorPayoutDetailsComponent ex
|
|
|
406
407
|
};
|
|
407
408
|
i0.ɵɵngDeclareClassMetadata({
|
|
408
409
|
minVersion: "12.0.0",
|
|
409
|
-
version: "22.2.
|
|
410
|
+
version: "22.2.3",
|
|
410
411
|
ngImport: i0,
|
|
411
412
|
type: AmbassadorPayoutDetailsComponent,
|
|
412
413
|
decorators: [{
|
|
@@ -545,7 +546,7 @@ var AmbassadorPayoutsListComponent = class AmbassadorPayoutsListComponent extend
|
|
|
545
546
|
static {
|
|
546
547
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
547
548
|
minVersion: "12.0.0",
|
|
548
|
-
version: "22.2.
|
|
549
|
+
version: "22.2.3",
|
|
549
550
|
ngImport: i0,
|
|
550
551
|
type: AmbassadorPayoutsListComponent,
|
|
551
552
|
deps: [
|
|
@@ -559,7 +560,7 @@ var AmbassadorPayoutsListComponent = class AmbassadorPayoutsListComponent extend
|
|
|
559
560
|
static {
|
|
560
561
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
561
562
|
minVersion: "17.0.0",
|
|
562
|
-
version: "22.2.
|
|
563
|
+
version: "22.2.3",
|
|
563
564
|
type: AmbassadorPayoutsListComponent,
|
|
564
565
|
isStandalone: false,
|
|
565
566
|
selector: "pw-ambassador-payouts-list",
|
|
@@ -1014,7 +1015,7 @@ var AmbassadorPayoutsListComponent = class AmbassadorPayoutsListComponent extend
|
|
|
1014
1015
|
};
|
|
1015
1016
|
i0.ɵɵngDeclareClassMetadata({
|
|
1016
1017
|
minVersion: "12.0.0",
|
|
1017
|
-
version: "22.2.
|
|
1018
|
+
version: "22.2.3",
|
|
1018
1019
|
ngImport: i0,
|
|
1019
1020
|
type: AmbassadorPayoutsListComponent,
|
|
1020
1021
|
decorators: [{
|
|
@@ -1044,7 +1045,7 @@ var AmbassadorPayoutsTabsComponent = class AmbassadorPayoutsTabsComponent {
|
|
|
1044
1045
|
static {
|
|
1045
1046
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
1046
1047
|
minVersion: "12.0.0",
|
|
1047
|
-
version: "22.2.
|
|
1048
|
+
version: "22.2.3",
|
|
1048
1049
|
ngImport: i0,
|
|
1049
1050
|
type: AmbassadorPayoutsTabsComponent,
|
|
1050
1051
|
deps: [],
|
|
@@ -1054,7 +1055,7 @@ var AmbassadorPayoutsTabsComponent = class AmbassadorPayoutsTabsComponent {
|
|
|
1054
1055
|
static {
|
|
1055
1056
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
1056
1057
|
minVersion: "14.0.0",
|
|
1057
|
-
version: "22.2.
|
|
1058
|
+
version: "22.2.3",
|
|
1058
1059
|
type: AmbassadorPayoutsTabsComponent,
|
|
1059
1060
|
isStandalone: false,
|
|
1060
1061
|
selector: "pw-ambassador-payouts-tabs",
|
|
@@ -1072,7 +1073,7 @@ var AmbassadorPayoutsTabsComponent = class AmbassadorPayoutsTabsComponent {
|
|
|
1072
1073
|
};
|
|
1073
1074
|
i0.ɵɵngDeclareClassMetadata({
|
|
1074
1075
|
minVersion: "12.0.0",
|
|
1075
|
-
version: "22.2.
|
|
1076
|
+
version: "22.2.3",
|
|
1076
1077
|
ngImport: i0,
|
|
1077
1078
|
type: AmbassadorPayoutsTabsComponent,
|
|
1078
1079
|
decorators: [{
|
|
@@ -1140,7 +1141,7 @@ var GlobalConfigDetailsComponent = class GlobalConfigDetailsComponent extends Ap
|
|
|
1140
1141
|
static {
|
|
1141
1142
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
1142
1143
|
minVersion: "12.0.0",
|
|
1143
|
-
version: "22.2.
|
|
1144
|
+
version: "22.2.3",
|
|
1144
1145
|
ngImport: i0,
|
|
1145
1146
|
type: GlobalConfigDetailsComponent,
|
|
1146
1147
|
deps: [
|
|
@@ -1154,7 +1155,7 @@ var GlobalConfigDetailsComponent = class GlobalConfigDetailsComponent extends Ap
|
|
|
1154
1155
|
static {
|
|
1155
1156
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
1156
1157
|
minVersion: "17.0.0",
|
|
1157
|
-
version: "22.2.
|
|
1158
|
+
version: "22.2.3",
|
|
1158
1159
|
type: GlobalConfigDetailsComponent,
|
|
1159
1160
|
isStandalone: false,
|
|
1160
1161
|
selector: "pw-global-config-details",
|
|
@@ -1370,7 +1371,7 @@ var GlobalConfigDetailsComponent = class GlobalConfigDetailsComponent extends Ap
|
|
|
1370
1371
|
};
|
|
1371
1372
|
i0.ɵɵngDeclareClassMetadata({
|
|
1372
1373
|
minVersion: "12.0.0",
|
|
1373
|
-
version: "22.2.
|
|
1374
|
+
version: "22.2.3",
|
|
1374
1375
|
ngImport: i0,
|
|
1375
1376
|
type: GlobalConfigDetailsComponent,
|
|
1376
1377
|
decorators: [{
|
|
@@ -1458,7 +1459,7 @@ var GlobalConfigListComponent = class GlobalConfigListComponent extends AppBaseC
|
|
|
1458
1459
|
static {
|
|
1459
1460
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
1460
1461
|
minVersion: "12.0.0",
|
|
1461
|
-
version: "22.2.
|
|
1462
|
+
version: "22.2.3",
|
|
1462
1463
|
ngImport: i0,
|
|
1463
1464
|
type: GlobalConfigListComponent,
|
|
1464
1465
|
deps: [
|
|
@@ -1473,7 +1474,7 @@ var GlobalConfigListComponent = class GlobalConfigListComponent extends AppBaseC
|
|
|
1473
1474
|
static {
|
|
1474
1475
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
1475
1476
|
minVersion: "17.0.0",
|
|
1476
|
-
version: "22.2.
|
|
1477
|
+
version: "22.2.3",
|
|
1477
1478
|
type: GlobalConfigListComponent,
|
|
1478
1479
|
isStandalone: false,
|
|
1479
1480
|
selector: "pw-global-config-list",
|
|
@@ -1759,7 +1760,7 @@ var GlobalConfigListComponent = class GlobalConfigListComponent extends AppBaseC
|
|
|
1759
1760
|
};
|
|
1760
1761
|
i0.ɵɵngDeclareClassMetadata({
|
|
1761
1762
|
minVersion: "12.0.0",
|
|
1762
|
-
version: "22.2.
|
|
1763
|
+
version: "22.2.3",
|
|
1763
1764
|
ngImport: i0,
|
|
1764
1765
|
type: GlobalConfigListComponent,
|
|
1765
1766
|
decorators: [{
|
|
@@ -1789,7 +1790,7 @@ var GlobalConfigTabsComponent = class GlobalConfigTabsComponent {
|
|
|
1789
1790
|
static {
|
|
1790
1791
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
1791
1792
|
minVersion: "12.0.0",
|
|
1792
|
-
version: "22.2.
|
|
1793
|
+
version: "22.2.3",
|
|
1793
1794
|
ngImport: i0,
|
|
1794
1795
|
type: GlobalConfigTabsComponent,
|
|
1795
1796
|
deps: [],
|
|
@@ -1799,7 +1800,7 @@ var GlobalConfigTabsComponent = class GlobalConfigTabsComponent {
|
|
|
1799
1800
|
static {
|
|
1800
1801
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
1801
1802
|
minVersion: "14.0.0",
|
|
1802
|
-
version: "22.2.
|
|
1803
|
+
version: "22.2.3",
|
|
1803
1804
|
type: GlobalConfigTabsComponent,
|
|
1804
1805
|
isStandalone: false,
|
|
1805
1806
|
selector: "ng-component",
|
|
@@ -1817,7 +1818,7 @@ var GlobalConfigTabsComponent = class GlobalConfigTabsComponent {
|
|
|
1817
1818
|
};
|
|
1818
1819
|
i0.ɵɵngDeclareClassMetadata({
|
|
1819
1820
|
minVersion: "12.0.0",
|
|
1820
|
-
version: "22.2.
|
|
1821
|
+
version: "22.2.3",
|
|
1821
1822
|
ngImport: i0,
|
|
1822
1823
|
type: GlobalConfigTabsComponent,
|
|
1823
1824
|
decorators: [{
|
|
@@ -1904,7 +1905,7 @@ var ContactUsListComponent = class ContactUsListComponent extends AppBaseCompone
|
|
|
1904
1905
|
static {
|
|
1905
1906
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
1906
1907
|
minVersion: "12.0.0",
|
|
1907
|
-
version: "22.2.
|
|
1908
|
+
version: "22.2.3",
|
|
1908
1909
|
ngImport: i0,
|
|
1909
1910
|
type: ContactUsListComponent,
|
|
1910
1911
|
deps: [
|
|
@@ -1919,13 +1920,13 @@ var ContactUsListComponent = class ContactUsListComponent extends AppBaseCompone
|
|
|
1919
1920
|
static {
|
|
1920
1921
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
1921
1922
|
minVersion: "17.0.0",
|
|
1922
|
-
version: "22.2.
|
|
1923
|
+
version: "22.2.3",
|
|
1923
1924
|
type: ContactUsListComponent,
|
|
1924
1925
|
isStandalone: false,
|
|
1925
1926
|
selector: "pw-contact-us-list",
|
|
1926
1927
|
usesInheritance: true,
|
|
1927
1928
|
ngImport: i0,
|
|
1928
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Contact Us</h2>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Contact US</strong> module shows all submissions from the contact forms embedded on select landing pages.<br/>\n It’s your central hub to track and follow up with interested users or potential leads.</p>\n</div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"6\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.contact_request\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.contact-us-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"search-contact\">\n <div class=\"col-12 col-sm-3\">\n <p-select class=\"pw-filter-select\"\n [options]=\"[\n { label: 'Filter by status', value: null },\n { label: 'Open', value: false },\n { label: 'Closed', value: true }\n ]\"\n placeholder=\"Filter by status\"\n (onChange)=\"filterClosed($event.value)\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end ms-auto\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"contact-us-list-search\"\n name=\"contact-us-list-search\"\n pInputText\n placeholder=\"Search messages...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search messages...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n {{ 'Admin.ContactUs.CreatedAt' | transloco }}\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sort-icon field=\"name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"subject\">\n {{ 'Admin.ContactUs.Subject' | transloco }}\n <p-sort-icon field=\"subject\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"message\">\n {{ 'Admin.ContactUs.Message' | transloco }}\n <p-sort-icon field=\"message\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"name\">{{ item?.name }}</td>\n <td data-head=\"email\">\n <a href=\"mailto:{{ item?.email }}\">{{ item?.email }}</a>\n </td>\n <td data-head=\"subject\">{{ item?.subject }}</td>\n <td data-head=\"message\">\n <span\n [pTooltip]=\"item?.message\"\n appendTo=\"body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"bottom\"\n >\n {{ item?.message | textTruncate: 200 }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (!item.closed) {\n <li\n pTooltip=\"Close\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"toggleRecord(item.id, true)\"\n (click)=\"toggleRecord(item.id, true)\">\n <i class=\"fa fa-times delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (item.closed) {\n <li\n pTooltip=\"Re Open\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onKeyDown($event, item.id)\"\n (click)=\"toggleRecord(item.id, false)\">\n <i class=\"fa fa-retweet edit-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Contact Requests\"> </pw-no-data>\n </div>\n}\n",
|
|
1929
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Contact Us</h2>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Contact US</strong> module shows all submissions from the contact forms embedded on select landing pages.<br/>\n It’s your central hub to track and follow up with interested users or potential leads.</p>\n</div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"6\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.contact_request\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.contact-us-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"search-contact\">\n <div class=\"col-12 col-sm-3\">\n <p-select class=\"pw-filter-select\"\n [options]=\"[\n { label: 'Filter by status', value: null },\n { label: 'Open', value: false },\n { label: 'Closed', value: true }\n ]\"\n placeholder=\"Filter by status\"\n (onChange)=\"filterClosed($event.value)\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end ms-auto\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"contact-us-list-search\"\n name=\"contact-us-list-search\"\n pInputText\n placeholder=\"Search messages...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search messages...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n {{ 'Admin.ContactUs.CreatedAt' | transloco }}\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sort-icon field=\"name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"subject\">\n {{ 'Admin.ContactUs.Subject' | transloco }}\n <p-sort-icon field=\"subject\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"message\">\n {{ 'Admin.ContactUs.Message' | transloco }}\n <p-sort-icon field=\"message\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\" [attr.data-label]=\"'Admin.ContactUs.CreatedAt' | transloco\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"name\" [attr.data-label]=\"'Label.Name' | transloco\">{{ item?.name }}</td>\n <td data-head=\"email\" [attr.data-label]=\"'Label.Email' | transloco\">\n <a href=\"mailto:{{ item?.email }}\">{{ item?.email }}</a>\n </td>\n <td data-head=\"subject\" [attr.data-label]=\"'Admin.ContactUs.Subject' | transloco\">{{ item?.subject }}</td>\n <td data-head=\"message\" [attr.data-label]=\"'Admin.ContactUs.Message' | transloco\">\n <span\n [pTooltip]=\"item?.message\"\n appendTo=\"body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"bottom\"\n >\n {{ item?.message | textTruncate: 200 }}\n </span>\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (!item.closed) {\n <li\n pTooltip=\"Close\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"toggleRecord(item.id, true)\"\n (click)=\"toggleRecord(item.id, true)\">\n <i class=\"fa fa-times delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (item.closed) {\n <li\n pTooltip=\"Re Open\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onKeyDown($event, item.id)\"\n (click)=\"toggleRecord(item.id, false)\">\n <i class=\"fa fa-retweet edit-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Contact Requests\"> </pw-no-data>\n </div>\n}\n",
|
|
1929
1930
|
styles: [".search-contact{display:flex;justify-content:space-between}@media(min-width:320px)and (max-width:720px){.search-contact{display:block}}\n"],
|
|
1930
1931
|
dependencies: [
|
|
1931
1932
|
{
|
|
@@ -2256,7 +2257,7 @@ var ContactUsListComponent = class ContactUsListComponent extends AppBaseCompone
|
|
|
2256
2257
|
};
|
|
2257
2258
|
i0.ɵɵngDeclareClassMetadata({
|
|
2258
2259
|
minVersion: "12.0.0",
|
|
2259
|
-
version: "22.2.
|
|
2260
|
+
version: "22.2.3",
|
|
2260
2261
|
ngImport: i0,
|
|
2261
2262
|
type: ContactUsListComponent,
|
|
2262
2263
|
decorators: [{
|
|
@@ -2264,7 +2265,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2264
2265
|
args: [{
|
|
2265
2266
|
selector: "pw-contact-us-list",
|
|
2266
2267
|
standalone: false,
|
|
2267
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Contact Us</h2>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Contact US</strong> module shows all submissions from the contact forms embedded on select landing pages.<br/>\n It’s your central hub to track and follow up with interested users or potential leads.</p>\n</div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"6\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.contact_request\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.contact-us-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"search-contact\">\n <div class=\"col-12 col-sm-3\">\n <p-select class=\"pw-filter-select\"\n [options]=\"[\n { label: 'Filter by status', value: null },\n { label: 'Open', value: false },\n { label: 'Closed', value: true }\n ]\"\n placeholder=\"Filter by status\"\n (onChange)=\"filterClosed($event.value)\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end ms-auto\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"contact-us-list-search\"\n name=\"contact-us-list-search\"\n pInputText\n placeholder=\"Search messages...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search messages...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n {{ 'Admin.ContactUs.CreatedAt' | transloco }}\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sort-icon field=\"name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"subject\">\n {{ 'Admin.ContactUs.Subject' | transloco }}\n <p-sort-icon field=\"subject\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"message\">\n {{ 'Admin.ContactUs.Message' | transloco }}\n <p-sort-icon field=\"message\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"name\">{{ item?.name }}</td>\n <td data-head=\"email\">\n <a href=\"mailto:{{ item?.email }}\">{{ item?.email }}</a>\n </td>\n <td data-head=\"subject\">{{ item?.subject }}</td>\n <td data-head=\"message\">\n <span\n [pTooltip]=\"item?.message\"\n appendTo=\"body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"bottom\"\n >\n {{ item?.message | textTruncate: 200 }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (!item.closed) {\n <li\n pTooltip=\"Close\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"toggleRecord(item.id, true)\"\n (click)=\"toggleRecord(item.id, true)\">\n <i class=\"fa fa-times delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (item.closed) {\n <li\n pTooltip=\"Re Open\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onKeyDown($event, item.id)\"\n (click)=\"toggleRecord(item.id, false)\">\n <i class=\"fa fa-retweet edit-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Contact Requests\"> </pw-no-data>\n </div>\n}\n",
|
|
2268
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Contact Us</h2>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Contact US</strong> module shows all submissions from the contact forms embedded on select landing pages.<br/>\n It’s your central hub to track and follow up with interested users or potential leads.</p>\n</div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"6\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.contact_request\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.contact-us-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"search-contact\">\n <div class=\"col-12 col-sm-3\">\n <p-select class=\"pw-filter-select\"\n [options]=\"[\n { label: 'Filter by status', value: null },\n { label: 'Open', value: false },\n { label: 'Closed', value: true }\n ]\"\n placeholder=\"Filter by status\"\n (onChange)=\"filterClosed($event.value)\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end ms-auto\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"contact-us-list-search\"\n name=\"contact-us-list-search\"\n pInputText\n placeholder=\"Search messages...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search messages...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n {{ 'Admin.ContactUs.CreatedAt' | transloco }}\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sort-icon field=\"name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"subject\">\n {{ 'Admin.ContactUs.Subject' | transloco }}\n <p-sort-icon field=\"subject\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"message\">\n {{ 'Admin.ContactUs.Message' | transloco }}\n <p-sort-icon field=\"message\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\" [attr.data-label]=\"'Admin.ContactUs.CreatedAt' | transloco\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"name\" [attr.data-label]=\"'Label.Name' | transloco\">{{ item?.name }}</td>\n <td data-head=\"email\" [attr.data-label]=\"'Label.Email' | transloco\">\n <a href=\"mailto:{{ item?.email }}\">{{ item?.email }}</a>\n </td>\n <td data-head=\"subject\" [attr.data-label]=\"'Admin.ContactUs.Subject' | transloco\">{{ item?.subject }}</td>\n <td data-head=\"message\" [attr.data-label]=\"'Admin.ContactUs.Message' | transloco\">\n <span\n [pTooltip]=\"item?.message\"\n appendTo=\"body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"bottom\"\n >\n {{ item?.message | textTruncate: 200 }}\n </span>\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (!item.closed) {\n <li\n pTooltip=\"Close\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"toggleRecord(item.id, true)\"\n (click)=\"toggleRecord(item.id, true)\">\n <i class=\"fa fa-times delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (item.closed) {\n <li\n pTooltip=\"Re Open\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onKeyDown($event, item.id)\"\n (click)=\"toggleRecord(item.id, false)\">\n <i class=\"fa fa-retweet edit-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Contact Requests\"> </pw-no-data>\n </div>\n}\n",
|
|
2268
2269
|
styles: [".search-contact{display:flex;justify-content:space-between}@media(min-width:320px)and (max-width:720px){.search-contact{display:block}}\n"]
|
|
2269
2270
|
}]
|
|
2270
2271
|
}],
|
|
@@ -2287,7 +2288,7 @@ var ContactUsTabsComponent = class ContactUsTabsComponent {
|
|
|
2287
2288
|
static {
|
|
2288
2289
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
2289
2290
|
minVersion: "12.0.0",
|
|
2290
|
-
version: "22.2.
|
|
2291
|
+
version: "22.2.3",
|
|
2291
2292
|
ngImport: i0,
|
|
2292
2293
|
type: ContactUsTabsComponent,
|
|
2293
2294
|
deps: [],
|
|
@@ -2297,7 +2298,7 @@ var ContactUsTabsComponent = class ContactUsTabsComponent {
|
|
|
2297
2298
|
static {
|
|
2298
2299
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
2299
2300
|
minVersion: "14.0.0",
|
|
2300
|
-
version: "22.2.
|
|
2301
|
+
version: "22.2.3",
|
|
2301
2302
|
type: ContactUsTabsComponent,
|
|
2302
2303
|
isStandalone: false,
|
|
2303
2304
|
selector: "contact-us-tabs",
|
|
@@ -2315,7 +2316,7 @@ var ContactUsTabsComponent = class ContactUsTabsComponent {
|
|
|
2315
2316
|
};
|
|
2316
2317
|
i0.ɵɵngDeclareClassMetadata({
|
|
2317
2318
|
minVersion: "12.0.0",
|
|
2318
|
-
version: "22.2.
|
|
2319
|
+
version: "22.2.3",
|
|
2319
2320
|
ngImport: i0,
|
|
2320
2321
|
type: ContactUsTabsComponent,
|
|
2321
2322
|
decorators: [{
|
|
@@ -2388,7 +2389,7 @@ var CredentialsComponent = class CredentialsComponent extends AppBaseComponent {
|
|
|
2388
2389
|
static {
|
|
2389
2390
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
2390
2391
|
minVersion: "12.0.0",
|
|
2391
|
-
version: "22.2.
|
|
2392
|
+
version: "22.2.3",
|
|
2392
2393
|
ngImport: i0,
|
|
2393
2394
|
type: CredentialsComponent,
|
|
2394
2395
|
deps: [
|
|
@@ -2403,7 +2404,7 @@ var CredentialsComponent = class CredentialsComponent extends AppBaseComponent {
|
|
|
2403
2404
|
static {
|
|
2404
2405
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
2405
2406
|
minVersion: "17.0.0",
|
|
2406
|
-
version: "22.2.
|
|
2407
|
+
version: "22.2.3",
|
|
2407
2408
|
type: CredentialsComponent,
|
|
2408
2409
|
isStandalone: false,
|
|
2409
2410
|
selector: "pw-credentials",
|
|
@@ -2689,7 +2690,7 @@ var CredentialsComponent = class CredentialsComponent extends AppBaseComponent {
|
|
|
2689
2690
|
};
|
|
2690
2691
|
i0.ɵɵngDeclareClassMetadata({
|
|
2691
2692
|
minVersion: "12.0.0",
|
|
2692
|
-
version: "22.2.
|
|
2693
|
+
version: "22.2.3",
|
|
2693
2694
|
ngImport: i0,
|
|
2694
2695
|
type: CredentialsComponent,
|
|
2695
2696
|
decorators: [{
|
|
@@ -2757,7 +2758,7 @@ var CredentialsDetailsComponent = class CredentialsDetailsComponent extends AppB
|
|
|
2757
2758
|
static {
|
|
2758
2759
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
2759
2760
|
minVersion: "12.0.0",
|
|
2760
|
-
version: "22.2.
|
|
2761
|
+
version: "22.2.3",
|
|
2761
2762
|
ngImport: i0,
|
|
2762
2763
|
type: CredentialsDetailsComponent,
|
|
2763
2764
|
deps: [
|
|
@@ -2771,7 +2772,7 @@ var CredentialsDetailsComponent = class CredentialsDetailsComponent extends AppB
|
|
|
2771
2772
|
static {
|
|
2772
2773
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
2773
2774
|
minVersion: "17.0.0",
|
|
2774
|
-
version: "22.2.
|
|
2775
|
+
version: "22.2.3",
|
|
2775
2776
|
type: CredentialsDetailsComponent,
|
|
2776
2777
|
isStandalone: false,
|
|
2777
2778
|
selector: "pw-credentials-details",
|
|
@@ -2937,7 +2938,7 @@ var CredentialsDetailsComponent = class CredentialsDetailsComponent extends AppB
|
|
|
2937
2938
|
__decorate([ValidateForm("form")], CredentialsDetailsComponent.prototype, "onSaveForm", null);
|
|
2938
2939
|
i0.ɵɵngDeclareClassMetadata({
|
|
2939
2940
|
minVersion: "12.0.0",
|
|
2940
|
-
version: "22.2.
|
|
2941
|
+
version: "22.2.3",
|
|
2941
2942
|
ngImport: i0,
|
|
2942
2943
|
type: CredentialsDetailsComponent,
|
|
2943
2944
|
decorators: [{
|
|
@@ -2972,7 +2973,7 @@ var CredentialsTabComponent = class CredentialsTabComponent {
|
|
|
2972
2973
|
static {
|
|
2973
2974
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
2974
2975
|
minVersion: "12.0.0",
|
|
2975
|
-
version: "22.2.
|
|
2976
|
+
version: "22.2.3",
|
|
2976
2977
|
ngImport: i0,
|
|
2977
2978
|
type: CredentialsTabComponent,
|
|
2978
2979
|
deps: [],
|
|
@@ -2982,7 +2983,7 @@ var CredentialsTabComponent = class CredentialsTabComponent {
|
|
|
2982
2983
|
static {
|
|
2983
2984
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
2984
2985
|
minVersion: "14.0.0",
|
|
2985
|
-
version: "22.2.
|
|
2986
|
+
version: "22.2.3",
|
|
2986
2987
|
type: CredentialsTabComponent,
|
|
2987
2988
|
isStandalone: false,
|
|
2988
2989
|
selector: "pw-credentials-tab",
|
|
@@ -3000,7 +3001,7 @@ var CredentialsTabComponent = class CredentialsTabComponent {
|
|
|
3000
3001
|
};
|
|
3001
3002
|
i0.ɵɵngDeclareClassMetadata({
|
|
3002
3003
|
minVersion: "12.0.0",
|
|
3003
|
-
version: "22.2.
|
|
3004
|
+
version: "22.2.3",
|
|
3004
3005
|
ngImport: i0,
|
|
3005
3006
|
type: CredentialsTabComponent,
|
|
3006
3007
|
decorators: [{
|
|
@@ -3107,7 +3108,7 @@ var SubscriptionCredentialsComponent = class SubscriptionCredentialsComponent ex
|
|
|
3107
3108
|
static {
|
|
3108
3109
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
3109
3110
|
minVersion: "12.0.0",
|
|
3110
|
-
version: "22.2.
|
|
3111
|
+
version: "22.2.3",
|
|
3111
3112
|
ngImport: i0,
|
|
3112
3113
|
type: SubscriptionCredentialsComponent,
|
|
3113
3114
|
deps: [
|
|
@@ -3122,7 +3123,7 @@ var SubscriptionCredentialsComponent = class SubscriptionCredentialsComponent ex
|
|
|
3122
3123
|
static {
|
|
3123
3124
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
3124
3125
|
minVersion: "17.0.0",
|
|
3125
|
-
version: "22.2.
|
|
3126
|
+
version: "22.2.3",
|
|
3126
3127
|
type: SubscriptionCredentialsComponent,
|
|
3127
3128
|
isStandalone: false,
|
|
3128
3129
|
selector: "pw-subscription-credentials",
|
|
@@ -3473,7 +3474,7 @@ var SubscriptionCredentialsComponent = class SubscriptionCredentialsComponent ex
|
|
|
3473
3474
|
};
|
|
3474
3475
|
i0.ɵɵngDeclareClassMetadata({
|
|
3475
3476
|
minVersion: "12.0.0",
|
|
3476
|
-
version: "22.2.
|
|
3477
|
+
version: "22.2.3",
|
|
3477
3478
|
ngImport: i0,
|
|
3478
3479
|
type: SubscriptionCredentialsComponent,
|
|
3479
3480
|
decorators: [{
|
|
@@ -3564,7 +3565,7 @@ var SubscriptionCredentialsDetailsComponent = class SubscriptionCredentialsDetai
|
|
|
3564
3565
|
static {
|
|
3565
3566
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
3566
3567
|
minVersion: "12.0.0",
|
|
3567
|
-
version: "22.2.
|
|
3568
|
+
version: "22.2.3",
|
|
3568
3569
|
ngImport: i0,
|
|
3569
3570
|
type: SubscriptionCredentialsDetailsComponent,
|
|
3570
3571
|
deps: [
|
|
@@ -3578,7 +3579,7 @@ var SubscriptionCredentialsDetailsComponent = class SubscriptionCredentialsDetai
|
|
|
3578
3579
|
static {
|
|
3579
3580
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
3580
3581
|
minVersion: "17.0.0",
|
|
3581
|
-
version: "22.2.
|
|
3582
|
+
version: "22.2.3",
|
|
3582
3583
|
type: SubscriptionCredentialsDetailsComponent,
|
|
3583
3584
|
isStandalone: false,
|
|
3584
3585
|
selector: "pw-subscription-credentials-details",
|
|
@@ -3767,7 +3768,7 @@ var SubscriptionCredentialsDetailsComponent = class SubscriptionCredentialsDetai
|
|
|
3767
3768
|
__decorate([ValidateForm("form")], SubscriptionCredentialsDetailsComponent.prototype, "onSaveForm", null);
|
|
3768
3769
|
i0.ɵɵngDeclareClassMetadata({
|
|
3769
3770
|
minVersion: "12.0.0",
|
|
3770
|
-
version: "22.2.
|
|
3771
|
+
version: "22.2.3",
|
|
3771
3772
|
ngImport: i0,
|
|
3772
3773
|
type: SubscriptionCredentialsDetailsComponent,
|
|
3773
3774
|
decorators: [{
|
|
@@ -4419,7 +4420,7 @@ var DomainConfigBuildComponent = class DomainConfigBuildComponent extends AppBas
|
|
|
4419
4420
|
static {
|
|
4420
4421
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
4421
4422
|
minVersion: "12.0.0",
|
|
4422
|
-
version: "22.2.
|
|
4423
|
+
version: "22.2.3",
|
|
4423
4424
|
ngImport: i0,
|
|
4424
4425
|
type: DomainConfigBuildComponent,
|
|
4425
4426
|
deps: [
|
|
@@ -4436,7 +4437,7 @@ var DomainConfigBuildComponent = class DomainConfigBuildComponent extends AppBas
|
|
|
4436
4437
|
static {
|
|
4437
4438
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
4438
4439
|
minVersion: "17.0.0",
|
|
4439
|
-
version: "22.2.
|
|
4440
|
+
version: "22.2.3",
|
|
4440
4441
|
type: DomainConfigBuildComponent,
|
|
4441
4442
|
isStandalone: false,
|
|
4442
4443
|
selector: "pw-domain-config-build",
|
|
@@ -4905,7 +4906,7 @@ var DomainConfigBuildComponent = class DomainConfigBuildComponent extends AppBas
|
|
|
4905
4906
|
__decorate([ValidateForm("form")], DomainConfigBuildComponent.prototype, "onSave", null);
|
|
4906
4907
|
i0.ɵɵngDeclareClassMetadata({
|
|
4907
4908
|
minVersion: "12.0.0",
|
|
4908
|
-
version: "22.2.
|
|
4909
|
+
version: "22.2.3",
|
|
4909
4910
|
ngImport: i0,
|
|
4910
4911
|
type: DomainConfigBuildComponent,
|
|
4911
4912
|
decorators: [{
|
|
@@ -5023,7 +5024,7 @@ var DomainConfigCoreComponent = class DomainConfigCoreComponent extends AppBaseC
|
|
|
5023
5024
|
static {
|
|
5024
5025
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5025
5026
|
minVersion: "12.0.0",
|
|
5026
|
-
version: "22.2.
|
|
5027
|
+
version: "22.2.3",
|
|
5027
5028
|
ngImport: i0,
|
|
5028
5029
|
type: DomainConfigCoreComponent,
|
|
5029
5030
|
deps: [
|
|
@@ -5037,7 +5038,7 @@ var DomainConfigCoreComponent = class DomainConfigCoreComponent extends AppBaseC
|
|
|
5037
5038
|
static {
|
|
5038
5039
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5039
5040
|
minVersion: "17.0.0",
|
|
5040
|
-
version: "22.2.
|
|
5041
|
+
version: "22.2.3",
|
|
5041
5042
|
type: DomainConfigCoreComponent,
|
|
5042
5043
|
isStandalone: false,
|
|
5043
5044
|
selector: "pw-domain-config-core",
|
|
@@ -5226,7 +5227,7 @@ var DomainConfigCoreComponent = class DomainConfigCoreComponent extends AppBaseC
|
|
|
5226
5227
|
__decorate([ValidateForm("form")], DomainConfigCoreComponent.prototype, "onSave", null);
|
|
5227
5228
|
i0.ɵɵngDeclareClassMetadata({
|
|
5228
5229
|
minVersion: "12.0.0",
|
|
5229
|
-
version: "22.2.
|
|
5230
|
+
version: "22.2.3",
|
|
5230
5231
|
ngImport: i0,
|
|
5231
5232
|
type: DomainConfigCoreComponent,
|
|
5232
5233
|
decorators: [{
|
|
@@ -5301,7 +5302,7 @@ var BaseDomainConfigComponent = class BaseDomainConfigComponent extends AppBaseC
|
|
|
5301
5302
|
static {
|
|
5302
5303
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5303
5304
|
minVersion: "12.0.0",
|
|
5304
|
-
version: "22.2.
|
|
5305
|
+
version: "22.2.3",
|
|
5305
5306
|
ngImport: i0,
|
|
5306
5307
|
type: BaseDomainConfigComponent,
|
|
5307
5308
|
deps: [
|
|
@@ -5315,7 +5316,7 @@ var BaseDomainConfigComponent = class BaseDomainConfigComponent extends AppBaseC
|
|
|
5315
5316
|
static {
|
|
5316
5317
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5317
5318
|
minVersion: "14.0.0",
|
|
5318
|
-
version: "22.2.
|
|
5319
|
+
version: "22.2.3",
|
|
5319
5320
|
type: BaseDomainConfigComponent,
|
|
5320
5321
|
isStandalone: false,
|
|
5321
5322
|
selector: "ng-component",
|
|
@@ -5329,7 +5330,7 @@ var BaseDomainConfigComponent = class BaseDomainConfigComponent extends AppBaseC
|
|
|
5329
5330
|
__decorate([ValidateForm("form")], BaseDomainConfigComponent.prototype, "onSave", null);
|
|
5330
5331
|
i0.ɵɵngDeclareClassMetadata({
|
|
5331
5332
|
minVersion: "12.0.0",
|
|
5332
|
-
version: "22.2.
|
|
5333
|
+
version: "22.2.3",
|
|
5333
5334
|
ngImport: i0,
|
|
5334
5335
|
type: BaseDomainConfigComponent,
|
|
5335
5336
|
decorators: [{
|
|
@@ -5360,7 +5361,7 @@ var DomainConfigOrganizationComponent = class DomainConfigOrganizationComponent
|
|
|
5360
5361
|
static {
|
|
5361
5362
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5362
5363
|
minVersion: "12.0.0",
|
|
5363
|
-
version: "22.2.
|
|
5364
|
+
version: "22.2.3",
|
|
5364
5365
|
ngImport: i0,
|
|
5365
5366
|
type: DomainConfigOrganizationComponent,
|
|
5366
5367
|
deps: [
|
|
@@ -5374,7 +5375,7 @@ var DomainConfigOrganizationComponent = class DomainConfigOrganizationComponent
|
|
|
5374
5375
|
static {
|
|
5375
5376
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5376
5377
|
minVersion: "17.0.0",
|
|
5377
|
-
version: "22.2.
|
|
5378
|
+
version: "22.2.3",
|
|
5378
5379
|
type: DomainConfigOrganizationComponent,
|
|
5379
5380
|
isStandalone: false,
|
|
5380
5381
|
selector: "pw-domain-config-organization",
|
|
@@ -5496,7 +5497,7 @@ var DomainConfigOrganizationComponent = class DomainConfigOrganizationComponent
|
|
|
5496
5497
|
};
|
|
5497
5498
|
i0.ɵɵngDeclareClassMetadata({
|
|
5498
5499
|
minVersion: "12.0.0",
|
|
5499
|
-
version: "22.2.
|
|
5500
|
+
version: "22.2.3",
|
|
5500
5501
|
ngImport: i0,
|
|
5501
5502
|
type: DomainConfigOrganizationComponent,
|
|
5502
5503
|
decorators: [{
|
|
@@ -5527,7 +5528,7 @@ var DomainConfigSecurityComponent = class DomainConfigSecurityComponent extends
|
|
|
5527
5528
|
static {
|
|
5528
5529
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5529
5530
|
minVersion: "12.0.0",
|
|
5530
|
-
version: "22.2.
|
|
5531
|
+
version: "22.2.3",
|
|
5531
5532
|
ngImport: i0,
|
|
5532
5533
|
type: DomainConfigSecurityComponent,
|
|
5533
5534
|
deps: [
|
|
@@ -5541,7 +5542,7 @@ var DomainConfigSecurityComponent = class DomainConfigSecurityComponent extends
|
|
|
5541
5542
|
static {
|
|
5542
5543
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5543
5544
|
minVersion: "17.0.0",
|
|
5544
|
-
version: "22.2.
|
|
5545
|
+
version: "22.2.3",
|
|
5545
5546
|
type: DomainConfigSecurityComponent,
|
|
5546
5547
|
isStandalone: false,
|
|
5547
5548
|
selector: "pw-domain-config-security",
|
|
@@ -5698,7 +5699,7 @@ var DomainConfigSecurityComponent = class DomainConfigSecurityComponent extends
|
|
|
5698
5699
|
};
|
|
5699
5700
|
i0.ɵɵngDeclareClassMetadata({
|
|
5700
5701
|
minVersion: "12.0.0",
|
|
5701
|
-
version: "22.2.
|
|
5702
|
+
version: "22.2.3",
|
|
5702
5703
|
ngImport: i0,
|
|
5703
5704
|
type: DomainConfigSecurityComponent,
|
|
5704
5705
|
decorators: [{
|
|
@@ -5729,7 +5730,7 @@ var DomainConfigSocialComponent = class DomainConfigSocialComponent extends Base
|
|
|
5729
5730
|
static {
|
|
5730
5731
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5731
5732
|
minVersion: "12.0.0",
|
|
5732
|
-
version: "22.2.
|
|
5733
|
+
version: "22.2.3",
|
|
5733
5734
|
ngImport: i0,
|
|
5734
5735
|
type: DomainConfigSocialComponent,
|
|
5735
5736
|
deps: [
|
|
@@ -5743,7 +5744,7 @@ var DomainConfigSocialComponent = class DomainConfigSocialComponent extends Base
|
|
|
5743
5744
|
static {
|
|
5744
5745
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5745
5746
|
minVersion: "17.0.0",
|
|
5746
|
-
version: "22.2.
|
|
5747
|
+
version: "22.2.3",
|
|
5747
5748
|
type: DomainConfigSocialComponent,
|
|
5748
5749
|
isStandalone: false,
|
|
5749
5750
|
selector: "pw-domain-config-social",
|
|
@@ -5865,7 +5866,7 @@ var DomainConfigSocialComponent = class DomainConfigSocialComponent extends Base
|
|
|
5865
5866
|
};
|
|
5866
5867
|
i0.ɵɵngDeclareClassMetadata({
|
|
5867
5868
|
minVersion: "12.0.0",
|
|
5868
|
-
version: "22.2.
|
|
5869
|
+
version: "22.2.3",
|
|
5869
5870
|
ngImport: i0,
|
|
5870
5871
|
type: DomainConfigSocialComponent,
|
|
5871
5872
|
decorators: [{
|
|
@@ -5939,7 +5940,7 @@ var DomainConfigIntegrationsComponent = class DomainConfigIntegrationsComponent
|
|
|
5939
5940
|
static {
|
|
5940
5941
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
5941
5942
|
minVersion: "12.0.0",
|
|
5942
|
-
version: "22.2.
|
|
5943
|
+
version: "22.2.3",
|
|
5943
5944
|
ngImport: i0,
|
|
5944
5945
|
type: DomainConfigIntegrationsComponent,
|
|
5945
5946
|
deps: [
|
|
@@ -5953,7 +5954,7 @@ var DomainConfigIntegrationsComponent = class DomainConfigIntegrationsComponent
|
|
|
5953
5954
|
static {
|
|
5954
5955
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
5955
5956
|
minVersion: "17.0.0",
|
|
5956
|
-
version: "22.2.
|
|
5957
|
+
version: "22.2.3",
|
|
5957
5958
|
type: DomainConfigIntegrationsComponent,
|
|
5958
5959
|
isStandalone: false,
|
|
5959
5960
|
selector: "pw-domain-config-integrations",
|
|
@@ -6076,7 +6077,7 @@ var DomainConfigIntegrationsComponent = class DomainConfigIntegrationsComponent
|
|
|
6076
6077
|
__decorate([ValidateForm("form")], DomainConfigIntegrationsComponent.prototype, "onSave", null);
|
|
6077
6078
|
i0.ɵɵngDeclareClassMetadata({
|
|
6078
6079
|
minVersion: "12.0.0",
|
|
6079
|
-
version: "22.2.
|
|
6080
|
+
version: "22.2.3",
|
|
6080
6081
|
ngImport: i0,
|
|
6081
6082
|
type: DomainConfigIntegrationsComponent,
|
|
6082
6083
|
decorators: [{
|
|
@@ -6299,7 +6300,7 @@ var DomainConfigInterfaceComponent = class DomainConfigInterfaceComponent extend
|
|
|
6299
6300
|
static {
|
|
6300
6301
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
6301
6302
|
minVersion: "12.0.0",
|
|
6302
|
-
version: "22.2.
|
|
6303
|
+
version: "22.2.3",
|
|
6303
6304
|
ngImport: i0,
|
|
6304
6305
|
type: DomainConfigInterfaceComponent,
|
|
6305
6306
|
deps: [
|
|
@@ -6313,7 +6314,7 @@ var DomainConfigInterfaceComponent = class DomainConfigInterfaceComponent extend
|
|
|
6313
6314
|
static {
|
|
6314
6315
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6315
6316
|
minVersion: "17.0.0",
|
|
6316
|
-
version: "22.2.
|
|
6317
|
+
version: "22.2.3",
|
|
6317
6318
|
type: DomainConfigInterfaceComponent,
|
|
6318
6319
|
isStandalone: false,
|
|
6319
6320
|
selector: "pw-domain-config-interface",
|
|
@@ -6454,7 +6455,7 @@ var DomainConfigInterfaceComponent = class DomainConfigInterfaceComponent extend
|
|
|
6454
6455
|
__decorate([ValidateForm("form")], DomainConfigInterfaceComponent.prototype, "onSave", null);
|
|
6455
6456
|
i0.ɵɵngDeclareClassMetadata({
|
|
6456
6457
|
minVersion: "12.0.0",
|
|
6457
|
-
version: "22.2.
|
|
6458
|
+
version: "22.2.3",
|
|
6458
6459
|
ngImport: i0,
|
|
6459
6460
|
type: DomainConfigInterfaceComponent,
|
|
6460
6461
|
decorators: [{
|
|
@@ -6511,7 +6512,7 @@ var DomainConfigDetailsComponent = class DomainConfigDetailsComponent extends Ap
|
|
|
6511
6512
|
static {
|
|
6512
6513
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
6513
6514
|
minVersion: "12.0.0",
|
|
6514
|
-
version: "22.2.
|
|
6515
|
+
version: "22.2.3",
|
|
6515
6516
|
ngImport: i0,
|
|
6516
6517
|
type: DomainConfigDetailsComponent,
|
|
6517
6518
|
deps: [
|
|
@@ -6525,7 +6526,7 @@ var DomainConfigDetailsComponent = class DomainConfigDetailsComponent extends Ap
|
|
|
6525
6526
|
static {
|
|
6526
6527
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6527
6528
|
minVersion: "14.0.0",
|
|
6528
|
-
version: "22.2.
|
|
6529
|
+
version: "22.2.3",
|
|
6529
6530
|
type: DomainConfigDetailsComponent,
|
|
6530
6531
|
isStandalone: false,
|
|
6531
6532
|
selector: "pw-domain-config-details",
|
|
@@ -6658,7 +6659,7 @@ var DomainConfigDetailsComponent = class DomainConfigDetailsComponent extends Ap
|
|
|
6658
6659
|
};
|
|
6659
6660
|
i0.ɵɵngDeclareClassMetadata({
|
|
6660
6661
|
minVersion: "12.0.0",
|
|
6661
|
-
version: "22.2.
|
|
6662
|
+
version: "22.2.3",
|
|
6662
6663
|
ngImport: i0,
|
|
6663
6664
|
type: DomainConfigDetailsComponent,
|
|
6664
6665
|
decorators: [{
|
|
@@ -6848,7 +6849,7 @@ var DomainConfigListComponent = class DomainConfigListComponent extends AppBaseC
|
|
|
6848
6849
|
static {
|
|
6849
6850
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
6850
6851
|
minVersion: "12.0.0",
|
|
6851
|
-
version: "22.2.
|
|
6852
|
+
version: "22.2.3",
|
|
6852
6853
|
ngImport: i0,
|
|
6853
6854
|
type: DomainConfigListComponent,
|
|
6854
6855
|
deps: [
|
|
@@ -6863,13 +6864,13 @@ var DomainConfigListComponent = class DomainConfigListComponent extends AppBaseC
|
|
|
6863
6864
|
static {
|
|
6864
6865
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6865
6866
|
minVersion: "17.0.0",
|
|
6866
|
-
version: "22.2.
|
|
6867
|
+
version: "22.2.3",
|
|
6867
6868
|
type: DomainConfigListComponent,
|
|
6868
6869
|
isStandalone: false,
|
|
6869
6870
|
selector: "pw-domain-config-list",
|
|
6870
6871
|
usesInheritance: true,
|
|
6871
6872
|
ngImport: i0,
|
|
6872
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Domains</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup New Domain\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Domains</strong> module lets you quickly launch and customize <strong>polished onboarding pages</strong> tied to specific domain names, <br/>\n which is perfect for managing <strong>branded user experiences</strong> across different products or campaigns.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.domains\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.domain-config-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"domain-config-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"domain-config-list-search\"\n name=\"domain-config-list-search\"\n pInputText\n placeholder=\"Search domains...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search domains...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"host_name\">\n {{ 'Admin.DomainConfig.HostName' | transloco }}\n <p-sort-icon field=\"host_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"internal_path\">\n {{ 'Admin.DomainConfig.InternalPath' | transloco }}\n <p-sort-icon field=\"internal_path\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_name\">\n {{ 'Admin.DomainConfig.ShardName' | transloco }}\n <p-sort-icon field=\"shard_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_url\">\n {{ 'Admin.DomainConfig.ShardUrl' | transloco }}\n <p-sort-icon field=\"shard_url\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"company_name\">\n {{ 'Admin.DomainConfig.CompanyName' | transloco }}\n <p-sort-icon field=\"company_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"frontend_repo_name\">\n {{ 'Admin.DomainConfig.Frontend' | transloco }}\n <p-sort-icon field=\"frontend_repo_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\" pSortableColumn=\"active\">\n {{ 'Admin.DomainConfig.Active' | transloco }}\n <p-sort-icon field=\"active\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"social_login_enabled\">\n {{ 'Admin.DomainConfig.SocialLoginEnabled' | transloco }}\n <p-sort-icon field=\"social_login_enabled\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"col\">\n {{ 'Admin.DomainConfig.Completion' | transloco }}\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"host_name\">\n <div class=\"d-flex align-items-center\">\n <a [href]=\"'http://' + item?.host_name\" target=\"_blank\" class=\"text-nowrap\">\n {{ item?.host_name }}\n </a>\n @if (item?.description) {\n <i class=\"far fa-info-circle info-icon ms-2 text-muted\"\n [pTooltip]=\"item?.description\" tooltipPosition=\"top\" appendTo=\"body\"></i>\n }\n </div>\n </td>\n\n\n\n <td data-head=\"internal_path\">{{ item?.internal_path }}</td>\n <td data-head=\"shard_name\">\n <span [appDynamicBadge]=\"{\n itemsArray: shardNames,\n item: item?.shard_name\n }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item?.shard_name }}</span>\n </td>\n <td data-head=\"shard_url\">{{ item?.shard_url }}</td>\n <td data-head=\"company_name\">{{ item?.company_name }}</td>\n <td data-head=\"frontend_repo_name\">\n @if (item?.frontend_repo_name) {\n <span [appDynamicBadge]=\"{\n itemsArray: frontendRepoNames,\n item: item?.frontend_repo_name\n }\"\n color=\"cyan\"\n class=\"badge\">{{ item?.frontend_repo_name }}</span>\n }\n </td>\n <td data-head=\"active\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.active\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"social_login_enabled\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.social_login_enabled\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.social_login_enabled ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"completion\">\n <pw-completion-bar\n [value]=\"getCompletion(item)\"\n [tooltip]=\"getCompletionTooltip(item)\"></pw-completion-bar>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.domainConfigDetails + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Duplicate The Domain Config\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\"\n [queryParams]=\"{ duplicate_domain_config_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.DomainConfig.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n",
|
|
6873
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Domains</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup New Domain\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Domains</strong> module lets you quickly launch and customize <strong>polished onboarding pages</strong> tied to specific domain names, <br/>\n which is perfect for managing <strong>branded user experiences</strong> across different products or campaigns.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.domains\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.domain-config-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"domain-config-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"domain-config-list-search\"\n name=\"domain-config-list-search\"\n pInputText\n placeholder=\"Search domains...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search domains...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"host_name\">\n {{ 'Admin.DomainConfig.HostName' | transloco }}\n <p-sort-icon field=\"host_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"internal_path\">\n {{ 'Admin.DomainConfig.InternalPath' | transloco }}\n <p-sort-icon field=\"internal_path\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_name\">\n {{ 'Admin.DomainConfig.ShardName' | transloco }}\n <p-sort-icon field=\"shard_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_url\">\n {{ 'Admin.DomainConfig.ShardUrl' | transloco }}\n <p-sort-icon field=\"shard_url\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"company_name\">\n {{ 'Admin.DomainConfig.CompanyName' | transloco }}\n <p-sort-icon field=\"company_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"frontend_repo_name\">\n {{ 'Admin.DomainConfig.Frontend' | transloco }}\n <p-sort-icon field=\"frontend_repo_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\" pSortableColumn=\"active\">\n {{ 'Admin.DomainConfig.Active' | transloco }}\n <p-sort-icon field=\"active\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"social_login_enabled\">\n {{ 'Admin.DomainConfig.SocialLoginEnabled' | transloco }}\n <p-sort-icon field=\"social_login_enabled\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"col\">\n {{ 'Admin.DomainConfig.Completion' | transloco }}\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"host_name\" [attr.data-label]=\"'Admin.DomainConfig.HostName' | transloco\">\n <div class=\"d-flex align-items-center\">\n <a [href]=\"'http://' + item?.host_name\" target=\"_blank\" class=\"text-nowrap\">\n {{ item?.host_name }}\n </a>\n @if (item?.description) {\n <i class=\"far fa-info-circle info-icon ms-2 text-muted\"\n [pTooltip]=\"item?.description\" tooltipPosition=\"top\" appendTo=\"body\"></i>\n }\n </div>\n </td>\n\n\n\n <td data-head=\"internal_path\" [attr.data-label]=\"'Admin.DomainConfig.InternalPath' | transloco\">{{ item?.internal_path }}</td>\n <td data-head=\"shard_name\" [attr.data-label]=\"'Admin.DomainConfig.ShardName' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: shardNames,\n item: item?.shard_name\n }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item?.shard_name }}</span>\n </td>\n <td data-head=\"shard_url\" [attr.data-label]=\"'Admin.DomainConfig.ShardUrl' | transloco\">{{ item?.shard_url }}</td>\n <td data-head=\"company_name\" [attr.data-label]=\"'Admin.DomainConfig.CompanyName' | transloco\">{{ item?.company_name }}</td>\n <td data-head=\"frontend_repo_name\" [attr.data-label]=\"'Admin.DomainConfig.Frontend' | transloco\">\n @if (item?.frontend_repo_name) {\n <span [appDynamicBadge]=\"{\n itemsArray: frontendRepoNames,\n item: item?.frontend_repo_name\n }\"\n color=\"cyan\"\n class=\"badge\">{{ item?.frontend_repo_name }}</span>\n }\n </td>\n <td data-head=\"active\" [attr.data-label]=\"'Admin.DomainConfig.Active' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.active\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"social_login_enabled\" [attr.data-label]=\"'Admin.DomainConfig.SocialLoginEnabled' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.social_login_enabled\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.social_login_enabled ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"completion\" [attr.data-label]=\"'Admin.DomainConfig.Completion' | transloco\">\n <pw-completion-bar\n [value]=\"getCompletion(item)\"\n [tooltip]=\"getCompletionTooltip(item)\"></pw-completion-bar>\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.domainConfigDetails + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Duplicate The Domain Config\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\"\n [queryParams]=\"{ duplicate_domain_config_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.DomainConfig.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n",
|
|
6873
6874
|
dependencies: [
|
|
6874
6875
|
{
|
|
6875
6876
|
kind: "component",
|
|
@@ -7164,7 +7165,7 @@ var DomainConfigListComponent = class DomainConfigListComponent extends AppBaseC
|
|
|
7164
7165
|
};
|
|
7165
7166
|
i0.ɵɵngDeclareClassMetadata({
|
|
7166
7167
|
minVersion: "12.0.0",
|
|
7167
|
-
version: "22.2.
|
|
7168
|
+
version: "22.2.3",
|
|
7168
7169
|
ngImport: i0,
|
|
7169
7170
|
type: DomainConfigListComponent,
|
|
7170
7171
|
decorators: [{
|
|
@@ -7172,7 +7173,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
7172
7173
|
args: [{
|
|
7173
7174
|
selector: "pw-domain-config-list",
|
|
7174
7175
|
standalone: false,
|
|
7175
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Domains</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup New Domain\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Domains</strong> module lets you quickly launch and customize <strong>polished onboarding pages</strong> tied to specific domain names, <br/>\n which is perfect for managing <strong>branded user experiences</strong> across different products or campaigns.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.domains\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.domain-config-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"domain-config-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"domain-config-list-search\"\n name=\"domain-config-list-search\"\n pInputText\n placeholder=\"Search domains...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search domains...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"host_name\">\n {{ 'Admin.DomainConfig.HostName' | transloco }}\n <p-sort-icon field=\"host_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"internal_path\">\n {{ 'Admin.DomainConfig.InternalPath' | transloco }}\n <p-sort-icon field=\"internal_path\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_name\">\n {{ 'Admin.DomainConfig.ShardName' | transloco }}\n <p-sort-icon field=\"shard_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_url\">\n {{ 'Admin.DomainConfig.ShardUrl' | transloco }}\n <p-sort-icon field=\"shard_url\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"company_name\">\n {{ 'Admin.DomainConfig.CompanyName' | transloco }}\n <p-sort-icon field=\"company_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"frontend_repo_name\">\n {{ 'Admin.DomainConfig.Frontend' | transloco }}\n <p-sort-icon field=\"frontend_repo_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\" pSortableColumn=\"active\">\n {{ 'Admin.DomainConfig.Active' | transloco }}\n <p-sort-icon field=\"active\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"social_login_enabled\">\n {{ 'Admin.DomainConfig.SocialLoginEnabled' | transloco }}\n <p-sort-icon field=\"social_login_enabled\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"col\">\n {{ 'Admin.DomainConfig.Completion' | transloco }}\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"host_name\">\n <div class=\"d-flex align-items-center\">\n <a [href]=\"'http://' + item?.host_name\" target=\"_blank\" class=\"text-nowrap\">\n {{ item?.host_name }}\n </a>\n @if (item?.description) {\n <i class=\"far fa-info-circle info-icon ms-2 text-muted\"\n [pTooltip]=\"item?.description\" tooltipPosition=\"top\" appendTo=\"body\"></i>\n }\n </div>\n </td>\n\n\n\n <td data-head=\"internal_path\">{{ item?.internal_path }}</td>\n <td data-head=\"shard_name\">\n <span [appDynamicBadge]=\"{\n itemsArray: shardNames,\n item: item?.shard_name\n }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item?.shard_name }}</span>\n </td>\n <td data-head=\"shard_url\">{{ item?.shard_url }}</td>\n <td data-head=\"company_name\">{{ item?.company_name }}</td>\n <td data-head=\"frontend_repo_name\">\n @if (item?.frontend_repo_name) {\n <span [appDynamicBadge]=\"{\n itemsArray: frontendRepoNames,\n item: item?.frontend_repo_name\n }\"\n color=\"cyan\"\n class=\"badge\">{{ item?.frontend_repo_name }}</span>\n }\n </td>\n <td data-head=\"active\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.active\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"social_login_enabled\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.social_login_enabled\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.social_login_enabled ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"completion\">\n <pw-completion-bar\n [value]=\"getCompletion(item)\"\n [tooltip]=\"getCompletionTooltip(item)\"></pw-completion-bar>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.domainConfigDetails + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Duplicate The Domain Config\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\"\n [queryParams]=\"{ duplicate_domain_config_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.DomainConfig.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n"
|
|
7176
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Domains</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup New Domain\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Domains</strong> module lets you quickly launch and customize <strong>polished onboarding pages</strong> tied to specific domain names, <br/>\n which is perfect for managing <strong>branded user experiences</strong> across different products or campaigns.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.domains\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.domain-config-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"domain-config-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"domain-config-list-search\"\n name=\"domain-config-list-search\"\n pInputText\n placeholder=\"Search domains...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search domains...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"host_name\">\n {{ 'Admin.DomainConfig.HostName' | transloco }}\n <p-sort-icon field=\"host_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"internal_path\">\n {{ 'Admin.DomainConfig.InternalPath' | transloco }}\n <p-sort-icon field=\"internal_path\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_name\">\n {{ 'Admin.DomainConfig.ShardName' | transloco }}\n <p-sort-icon field=\"shard_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"shard_url\">\n {{ 'Admin.DomainConfig.ShardUrl' | transloco }}\n <p-sort-icon field=\"shard_url\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"company_name\">\n {{ 'Admin.DomainConfig.CompanyName' | transloco }}\n <p-sort-icon field=\"company_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"frontend_repo_name\">\n {{ 'Admin.DomainConfig.Frontend' | transloco }}\n <p-sort-icon field=\"frontend_repo_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\" pSortableColumn=\"active\">\n {{ 'Admin.DomainConfig.Active' | transloco }}\n <p-sort-icon field=\"active\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"social_login_enabled\">\n {{ 'Admin.DomainConfig.SocialLoginEnabled' | transloco }}\n <p-sort-icon field=\"social_login_enabled\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"col\">\n {{ 'Admin.DomainConfig.Completion' | transloco }}\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"host_name\" [attr.data-label]=\"'Admin.DomainConfig.HostName' | transloco\">\n <div class=\"d-flex align-items-center\">\n <a [href]=\"'http://' + item?.host_name\" target=\"_blank\" class=\"text-nowrap\">\n {{ item?.host_name }}\n </a>\n @if (item?.description) {\n <i class=\"far fa-info-circle info-icon ms-2 text-muted\"\n [pTooltip]=\"item?.description\" tooltipPosition=\"top\" appendTo=\"body\"></i>\n }\n </div>\n </td>\n\n\n\n <td data-head=\"internal_path\" [attr.data-label]=\"'Admin.DomainConfig.InternalPath' | transloco\">{{ item?.internal_path }}</td>\n <td data-head=\"shard_name\" [attr.data-label]=\"'Admin.DomainConfig.ShardName' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: shardNames,\n item: item?.shard_name\n }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item?.shard_name }}</span>\n </td>\n <td data-head=\"shard_url\" [attr.data-label]=\"'Admin.DomainConfig.ShardUrl' | transloco\">{{ item?.shard_url }}</td>\n <td data-head=\"company_name\" [attr.data-label]=\"'Admin.DomainConfig.CompanyName' | transloco\">{{ item?.company_name }}</td>\n <td data-head=\"frontend_repo_name\" [attr.data-label]=\"'Admin.DomainConfig.Frontend' | transloco\">\n @if (item?.frontend_repo_name) {\n <span [appDynamicBadge]=\"{\n itemsArray: frontendRepoNames,\n item: item?.frontend_repo_name\n }\"\n color=\"cyan\"\n class=\"badge\">{{ item?.frontend_repo_name }}</span>\n }\n </td>\n <td data-head=\"active\" [attr.data-label]=\"'Admin.DomainConfig.Active' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.active\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"social_login_enabled\" [attr.data-label]=\"'Admin.DomainConfig.SocialLoginEnabled' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.social_login_enabled\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.social_login_enabled ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"completion\" [attr.data-label]=\"'Admin.DomainConfig.Completion' | transloco\">\n <pw-completion-bar\n [value]=\"getCompletion(item)\"\n [tooltip]=\"getCompletionTooltip(item)\"></pw-completion-bar>\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.domainConfigDetails + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Duplicate The Domain Config\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.domainConfigDetails + 'add']\"\n [queryParams]=\"{ duplicate_domain_config_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.DomainConfig.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n"
|
|
7176
7177
|
}]
|
|
7177
7178
|
}],
|
|
7178
7179
|
ctorParameters: () => [
|
|
@@ -7194,7 +7195,7 @@ var DomainConfigTabsComponent = class DomainConfigTabsComponent {
|
|
|
7194
7195
|
static {
|
|
7195
7196
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
7196
7197
|
minVersion: "12.0.0",
|
|
7197
|
-
version: "22.2.
|
|
7198
|
+
version: "22.2.3",
|
|
7198
7199
|
ngImport: i0,
|
|
7199
7200
|
type: DomainConfigTabsComponent,
|
|
7200
7201
|
deps: [],
|
|
@@ -7204,7 +7205,7 @@ var DomainConfigTabsComponent = class DomainConfigTabsComponent {
|
|
|
7204
7205
|
static {
|
|
7205
7206
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
7206
7207
|
minVersion: "14.0.0",
|
|
7207
|
-
version: "22.2.
|
|
7208
|
+
version: "22.2.3",
|
|
7208
7209
|
type: DomainConfigTabsComponent,
|
|
7209
7210
|
isStandalone: false,
|
|
7210
7211
|
selector: "domain-config-tabs",
|
|
@@ -7222,7 +7223,7 @@ var DomainConfigTabsComponent = class DomainConfigTabsComponent {
|
|
|
7222
7223
|
};
|
|
7223
7224
|
i0.ɵɵngDeclareClassMetadata({
|
|
7224
7225
|
minVersion: "12.0.0",
|
|
7225
|
-
version: "22.2.
|
|
7226
|
+
version: "22.2.3",
|
|
7226
7227
|
ngImport: i0,
|
|
7227
7228
|
type: DomainConfigTabsComponent,
|
|
7228
7229
|
decorators: [{
|
|
@@ -7351,7 +7352,7 @@ var AddEditFaqComponent = class AddEditFaqComponent extends AppBaseComponent {
|
|
|
7351
7352
|
static {
|
|
7352
7353
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
7353
7354
|
minVersion: "12.0.0",
|
|
7354
|
-
version: "22.2.
|
|
7355
|
+
version: "22.2.3",
|
|
7355
7356
|
ngImport: i0,
|
|
7356
7357
|
type: AddEditFaqComponent,
|
|
7357
7358
|
deps: [
|
|
@@ -7367,7 +7368,7 @@ var AddEditFaqComponent = class AddEditFaqComponent extends AppBaseComponent {
|
|
|
7367
7368
|
static {
|
|
7368
7369
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
7369
7370
|
minVersion: "17.0.0",
|
|
7370
|
-
version: "22.2.
|
|
7371
|
+
version: "22.2.3",
|
|
7371
7372
|
type: AddEditFaqComponent,
|
|
7372
7373
|
isStandalone: false,
|
|
7373
7374
|
selector: "pw-admin-add-edit-faq",
|
|
@@ -7691,7 +7692,7 @@ var AddEditFaqComponent = class AddEditFaqComponent extends AppBaseComponent {
|
|
|
7691
7692
|
};
|
|
7692
7693
|
i0.ɵɵngDeclareClassMetadata({
|
|
7693
7694
|
minVersion: "12.0.0",
|
|
7694
|
-
version: "22.2.
|
|
7695
|
+
version: "22.2.3",
|
|
7695
7696
|
ngImport: i0,
|
|
7696
7697
|
type: AddEditFaqComponent,
|
|
7697
7698
|
decorators: [{
|
|
@@ -7939,7 +7940,7 @@ var FaqListComponent = class FaqListComponent extends AppBaseComponent {
|
|
|
7939
7940
|
static {
|
|
7940
7941
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
7941
7942
|
minVersion: "12.0.0",
|
|
7942
|
-
version: "22.2.
|
|
7943
|
+
version: "22.2.3",
|
|
7943
7944
|
ngImport: i0,
|
|
7944
7945
|
type: FaqListComponent,
|
|
7945
7946
|
deps: [
|
|
@@ -7956,7 +7957,7 @@ var FaqListComponent = class FaqListComponent extends AppBaseComponent {
|
|
|
7956
7957
|
static {
|
|
7957
7958
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
7958
7959
|
minVersion: "17.0.0",
|
|
7959
|
-
version: "22.2.
|
|
7960
|
+
version: "22.2.3",
|
|
7960
7961
|
type: FaqListComponent,
|
|
7961
7962
|
isStandalone: false,
|
|
7962
7963
|
selector: "pw-admin-faq-list",
|
|
@@ -8332,7 +8333,7 @@ var FaqListComponent = class FaqListComponent extends AppBaseComponent {
|
|
|
8332
8333
|
};
|
|
8333
8334
|
i0.ɵɵngDeclareClassMetadata({
|
|
8334
8335
|
minVersion: "12.0.0",
|
|
8335
|
-
version: "22.2.
|
|
8336
|
+
version: "22.2.3",
|
|
8336
8337
|
ngImport: i0,
|
|
8337
8338
|
type: FaqListComponent,
|
|
8338
8339
|
decorators: [{
|
|
@@ -8369,7 +8370,7 @@ var FaqTabsComponent = class FaqTabsComponent {
|
|
|
8369
8370
|
static {
|
|
8370
8371
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
8371
8372
|
minVersion: "12.0.0",
|
|
8372
|
-
version: "22.2.
|
|
8373
|
+
version: "22.2.3",
|
|
8373
8374
|
ngImport: i0,
|
|
8374
8375
|
type: FaqTabsComponent,
|
|
8375
8376
|
deps: [],
|
|
@@ -8379,7 +8380,7 @@ var FaqTabsComponent = class FaqTabsComponent {
|
|
|
8379
8380
|
static {
|
|
8380
8381
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
8381
8382
|
minVersion: "14.0.0",
|
|
8382
|
-
version: "22.2.
|
|
8383
|
+
version: "22.2.3",
|
|
8383
8384
|
type: FaqTabsComponent,
|
|
8384
8385
|
isStandalone: false,
|
|
8385
8386
|
selector: "faq-tabs",
|
|
@@ -8397,7 +8398,7 @@ var FaqTabsComponent = class FaqTabsComponent {
|
|
|
8397
8398
|
};
|
|
8398
8399
|
i0.ɵɵngDeclareClassMetadata({
|
|
8399
8400
|
minVersion: "12.0.0",
|
|
8400
|
-
version: "22.2.
|
|
8401
|
+
version: "22.2.3",
|
|
8401
8402
|
ngImport: i0,
|
|
8402
8403
|
type: FaqTabsComponent,
|
|
8403
8404
|
decorators: [{
|
|
@@ -8507,7 +8508,7 @@ var FeatureFlagDetailsComponent = class FeatureFlagDetailsComponent extends AppB
|
|
|
8507
8508
|
static {
|
|
8508
8509
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
8509
8510
|
minVersion: "12.0.0",
|
|
8510
|
-
version: "22.2.
|
|
8511
|
+
version: "22.2.3",
|
|
8511
8512
|
ngImport: i0,
|
|
8512
8513
|
type: FeatureFlagDetailsComponent,
|
|
8513
8514
|
deps: [{ token: i0.Injector }, { token: i1$1.AdminService }],
|
|
@@ -8517,7 +8518,7 @@ var FeatureFlagDetailsComponent = class FeatureFlagDetailsComponent extends AppB
|
|
|
8517
8518
|
static {
|
|
8518
8519
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
8519
8520
|
minVersion: "17.0.0",
|
|
8520
|
-
version: "22.2.
|
|
8521
|
+
version: "22.2.3",
|
|
8521
8522
|
type: FeatureFlagDetailsComponent,
|
|
8522
8523
|
isStandalone: false,
|
|
8523
8524
|
selector: "pw-feature-flag-details",
|
|
@@ -8875,7 +8876,7 @@ var FeatureFlagDetailsComponent = class FeatureFlagDetailsComponent extends AppB
|
|
|
8875
8876
|
};
|
|
8876
8877
|
i0.ɵɵngDeclareClassMetadata({
|
|
8877
8878
|
minVersion: "12.0.0",
|
|
8878
|
-
version: "22.2.
|
|
8879
|
+
version: "22.2.3",
|
|
8879
8880
|
ngImport: i0,
|
|
8880
8881
|
type: FeatureFlagDetailsComponent,
|
|
8881
8882
|
decorators: [{
|
|
@@ -9025,7 +9026,7 @@ var FeatureFlagRulesComponent = class FeatureFlagRulesComponent extends AppBaseC
|
|
|
9025
9026
|
static {
|
|
9026
9027
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
9027
9028
|
minVersion: "12.0.0",
|
|
9028
|
-
version: "22.2.
|
|
9029
|
+
version: "22.2.3",
|
|
9029
9030
|
ngImport: i0,
|
|
9030
9031
|
type: FeatureFlagRulesComponent,
|
|
9031
9032
|
deps: [
|
|
@@ -9040,7 +9041,7 @@ var FeatureFlagRulesComponent = class FeatureFlagRulesComponent extends AppBaseC
|
|
|
9040
9041
|
static {
|
|
9041
9042
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
9042
9043
|
minVersion: "17.0.0",
|
|
9043
|
-
version: "22.2.
|
|
9044
|
+
version: "22.2.3",
|
|
9044
9045
|
type: FeatureFlagRulesComponent,
|
|
9045
9046
|
isStandalone: false,
|
|
9046
9047
|
selector: "pw-feature-flag-rules",
|
|
@@ -9443,7 +9444,7 @@ var FeatureFlagRulesComponent = class FeatureFlagRulesComponent extends AppBaseC
|
|
|
9443
9444
|
};
|
|
9444
9445
|
i0.ɵɵngDeclareClassMetadata({
|
|
9445
9446
|
minVersion: "12.0.0",
|
|
9446
|
-
version: "22.2.
|
|
9447
|
+
version: "22.2.3",
|
|
9447
9448
|
ngImport: i0,
|
|
9448
9449
|
type: FeatureFlagRulesComponent,
|
|
9449
9450
|
decorators: [{
|
|
@@ -9541,7 +9542,7 @@ var FeatureFlagsListComponent = class FeatureFlagsListComponent extends AppBaseC
|
|
|
9541
9542
|
static {
|
|
9542
9543
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
9543
9544
|
minVersion: "12.0.0",
|
|
9544
|
-
version: "22.2.
|
|
9545
|
+
version: "22.2.3",
|
|
9545
9546
|
ngImport: i0,
|
|
9546
9547
|
type: FeatureFlagsListComponent,
|
|
9547
9548
|
deps: [
|
|
@@ -9556,7 +9557,7 @@ var FeatureFlagsListComponent = class FeatureFlagsListComponent extends AppBaseC
|
|
|
9556
9557
|
static {
|
|
9557
9558
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
9558
9559
|
minVersion: "17.0.0",
|
|
9559
|
-
version: "22.2.
|
|
9560
|
+
version: "22.2.3",
|
|
9560
9561
|
type: FeatureFlagsListComponent,
|
|
9561
9562
|
isStandalone: false,
|
|
9562
9563
|
selector: "pw-feature-flags-list",
|
|
@@ -9824,7 +9825,7 @@ var FeatureFlagsListComponent = class FeatureFlagsListComponent extends AppBaseC
|
|
|
9824
9825
|
};
|
|
9825
9826
|
i0.ɵɵngDeclareClassMetadata({
|
|
9826
9827
|
minVersion: "12.0.0",
|
|
9827
|
-
version: "22.2.
|
|
9828
|
+
version: "22.2.3",
|
|
9828
9829
|
ngImport: i0,
|
|
9829
9830
|
type: FeatureFlagsListComponent,
|
|
9830
9831
|
decorators: [{
|
|
@@ -9854,7 +9855,7 @@ var FeatureFlagsTabsComponent = class FeatureFlagsTabsComponent {
|
|
|
9854
9855
|
static {
|
|
9855
9856
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
9856
9857
|
minVersion: "12.0.0",
|
|
9857
|
-
version: "22.2.
|
|
9858
|
+
version: "22.2.3",
|
|
9858
9859
|
ngImport: i0,
|
|
9859
9860
|
type: FeatureFlagsTabsComponent,
|
|
9860
9861
|
deps: [],
|
|
@@ -9864,7 +9865,7 @@ var FeatureFlagsTabsComponent = class FeatureFlagsTabsComponent {
|
|
|
9864
9865
|
static {
|
|
9865
9866
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
9866
9867
|
minVersion: "14.0.0",
|
|
9867
|
-
version: "22.2.
|
|
9868
|
+
version: "22.2.3",
|
|
9868
9869
|
type: FeatureFlagsTabsComponent,
|
|
9869
9870
|
isStandalone: false,
|
|
9870
9871
|
selector: "feature-flags-tabs",
|
|
@@ -9882,7 +9883,7 @@ var FeatureFlagsTabsComponent = class FeatureFlagsTabsComponent {
|
|
|
9882
9883
|
};
|
|
9883
9884
|
i0.ɵɵngDeclareClassMetadata({
|
|
9884
9885
|
minVersion: "12.0.0",
|
|
9885
|
-
version: "22.2.
|
|
9886
|
+
version: "22.2.3",
|
|
9886
9887
|
ngImport: i0,
|
|
9887
9888
|
type: FeatureFlagsTabsComponent,
|
|
9888
9889
|
decorators: [{
|
|
@@ -9948,7 +9949,7 @@ var FeedbackQuestionsDetailsComponent = class FeedbackQuestionsDetailsComponent
|
|
|
9948
9949
|
static {
|
|
9949
9950
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
9950
9951
|
minVersion: "12.0.0",
|
|
9951
|
-
version: "22.2.
|
|
9952
|
+
version: "22.2.3",
|
|
9952
9953
|
ngImport: i0,
|
|
9953
9954
|
type: FeedbackQuestionsDetailsComponent,
|
|
9954
9955
|
deps: [
|
|
@@ -9963,7 +9964,7 @@ var FeedbackQuestionsDetailsComponent = class FeedbackQuestionsDetailsComponent
|
|
|
9963
9964
|
static {
|
|
9964
9965
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
9965
9966
|
minVersion: "14.0.0",
|
|
9966
|
-
version: "22.2.
|
|
9967
|
+
version: "22.2.3",
|
|
9967
9968
|
type: FeedbackQuestionsDetailsComponent,
|
|
9968
9969
|
isStandalone: false,
|
|
9969
9970
|
selector: "pw-feedback-questions-details",
|
|
@@ -10056,7 +10057,7 @@ var FeedbackQuestionsDetailsComponent = class FeedbackQuestionsDetailsComponent
|
|
|
10056
10057
|
__decorate([ValidateForm("form")], FeedbackQuestionsDetailsComponent.prototype, "onSave", null);
|
|
10057
10058
|
i0.ɵɵngDeclareClassMetadata({
|
|
10058
10059
|
minVersion: "12.0.0",
|
|
10059
|
-
version: "22.2.
|
|
10060
|
+
version: "22.2.3",
|
|
10060
10061
|
ngImport: i0,
|
|
10061
10062
|
type: FeedbackQuestionsDetailsComponent,
|
|
10062
10063
|
decorators: [{
|
|
@@ -10146,7 +10147,7 @@ var FeedbackQuestionsListComponent = class FeedbackQuestionsListComponent extend
|
|
|
10146
10147
|
static {
|
|
10147
10148
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10148
10149
|
minVersion: "12.0.0",
|
|
10149
|
-
version: "22.2.
|
|
10150
|
+
version: "22.2.3",
|
|
10150
10151
|
ngImport: i0,
|
|
10151
10152
|
type: FeedbackQuestionsListComponent,
|
|
10152
10153
|
deps: [
|
|
@@ -10162,13 +10163,13 @@ var FeedbackQuestionsListComponent = class FeedbackQuestionsListComponent extend
|
|
|
10162
10163
|
static {
|
|
10163
10164
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10164
10165
|
minVersion: "17.0.0",
|
|
10165
|
-
version: "22.2.
|
|
10166
|
+
version: "22.2.3",
|
|
10166
10167
|
type: FeedbackQuestionsListComponent,
|
|
10167
10168
|
isStandalone: false,
|
|
10168
10169
|
selector: "pw-feedback-questions-list",
|
|
10169
10170
|
usesInheritance: true,
|
|
10170
10171
|
ngImport: i0,
|
|
10171
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end my-3\">\n <div class=\"float-start d-flex align-items-baseline\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"card-title p-0\">Feedback Questions for product {{ productData?.name }}</h2>\n </div>\n <button class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + 'add']\"\n [queryParams]=\"{ product_id: productId }\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create feedback question\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"2\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.feedback_questions\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.feedback-questions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"feedback-questions-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"feedback-questions-list-search\"\n name=\"feedback-questions-list-search\"\n pInputText\n placeholder=\"Search questions...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search questions...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"question\">\n {{ 'Admin.FeedbackQuestions.Question' | transloco }}\n <p-sort-icon field=\"question\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"question\">{{ item?.question }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + item?.id]\"\n [queryParams]=\"{ product_id: productId }\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.FeedbackQuestions.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
10172
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end my-3\">\n <div class=\"float-start d-flex align-items-baseline\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"card-title p-0\">Feedback Questions for product {{ productData?.name }}</h2>\n </div>\n <button class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + 'add']\"\n [queryParams]=\"{ product_id: productId }\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create feedback question\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"2\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.feedback_questions\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.feedback-questions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"feedback-questions-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"feedback-questions-list-search\"\n name=\"feedback-questions-list-search\"\n pInputText\n placeholder=\"Search questions...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search questions...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"question\">\n {{ 'Admin.FeedbackQuestions.Question' | transloco }}\n <p-sort-icon field=\"question\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"question\" [attr.data-label]=\"'Admin.FeedbackQuestions.Question' | transloco\">{{ item?.question }}</td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + item?.id]\"\n [queryParams]=\"{ product_id: productId }\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.FeedbackQuestions.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
10172
10173
|
styles: ["@media(max-width:575.98px){.col-12.d-flex.justify-content-between{flex-wrap:wrap;text-align:left!important}.col-12.d-flex.justify-content-between>:first-child{flex-basis:100%}.col-12.d-flex.justify-content-between>:first-child~*{margin-left:auto!important}}\n"],
|
|
10173
10174
|
dependencies: [
|
|
10174
10175
|
{
|
|
@@ -10438,7 +10439,7 @@ var FeedbackQuestionsListComponent = class FeedbackQuestionsListComponent extend
|
|
|
10438
10439
|
};
|
|
10439
10440
|
i0.ɵɵngDeclareClassMetadata({
|
|
10440
10441
|
minVersion: "12.0.0",
|
|
10441
|
-
version: "22.2.
|
|
10442
|
+
version: "22.2.3",
|
|
10442
10443
|
ngImport: i0,
|
|
10443
10444
|
type: FeedbackQuestionsListComponent,
|
|
10444
10445
|
decorators: [{
|
|
@@ -10446,7 +10447,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10446
10447
|
args: [{
|
|
10447
10448
|
selector: "pw-feedback-questions-list",
|
|
10448
10449
|
standalone: false,
|
|
10449
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end my-3\">\n <div class=\"float-start d-flex align-items-baseline\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"card-title p-0\">Feedback Questions for product {{ productData?.name }}</h2>\n </div>\n <button class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + 'add']\"\n [queryParams]=\"{ product_id: productId }\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create feedback question\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"2\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.feedback_questions\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.feedback-questions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"feedback-questions-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"feedback-questions-list-search\"\n name=\"feedback-questions-list-search\"\n pInputText\n placeholder=\"Search questions...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search questions...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"question\">\n {{ 'Admin.FeedbackQuestions.Question' | transloco }}\n <p-sort-icon field=\"question\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"question\">{{ item?.question }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + item?.id]\"\n [queryParams]=\"{ product_id: productId }\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.FeedbackQuestions.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
10450
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end my-3\">\n <div class=\"float-start d-flex align-items-baseline\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"card-title p-0\">Feedback Questions for product {{ productData?.name }}</h2>\n </div>\n <button class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + 'add']\"\n [queryParams]=\"{ product_id: productId }\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create feedback question\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"2\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.feedback_questions\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\"\n stateKey=\"pw-table.feedback-questions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"feedback-questions-list-search\" class=\"visually-hidden\">Search</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"feedback-questions-list-search\"\n name=\"feedback-questions-list-search\"\n pInputText\n placeholder=\"Search questions...\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search questions...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"question\">\n {{ 'Admin.FeedbackQuestions.Question' | transloco }}\n <p-sort-icon field=\"question\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"question\" [attr.data-label]=\"'Admin.FeedbackQuestions.Question' | transloco\">{{ item?.question }}</td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.feedbackQuestionsDetails + item?.id]\"\n [queryParams]=\"{ product_id: productId }\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.FeedbackQuestions.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
10450
10451
|
styles: ["@media(max-width:575.98px){.col-12.d-flex.justify-content-between{flex-wrap:wrap;text-align:left!important}.col-12.d-flex.justify-content-between>:first-child{flex-basis:100%}.col-12.d-flex.justify-content-between>:first-child~*{margin-left:auto!important}}\n"]
|
|
10451
10452
|
}]
|
|
10452
10453
|
}],
|
|
@@ -10462,7 +10463,7 @@ var GenericInsightComponent = class GenericInsightComponent {
|
|
|
10462
10463
|
static {
|
|
10463
10464
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10464
10465
|
minVersion: "12.0.0",
|
|
10465
|
-
version: "22.2.
|
|
10466
|
+
version: "22.2.3",
|
|
10466
10467
|
ngImport: i0,
|
|
10467
10468
|
type: GenericInsightComponent,
|
|
10468
10469
|
deps: [],
|
|
@@ -10472,7 +10473,7 @@ var GenericInsightComponent = class GenericInsightComponent {
|
|
|
10472
10473
|
static {
|
|
10473
10474
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10474
10475
|
minVersion: "14.0.0",
|
|
10475
|
-
version: "22.2.
|
|
10476
|
+
version: "22.2.3",
|
|
10476
10477
|
type: GenericInsightComponent,
|
|
10477
10478
|
isStandalone: false,
|
|
10478
10479
|
selector: "pw-admin-generic-insight",
|
|
@@ -10489,7 +10490,7 @@ var GenericInsightComponent = class GenericInsightComponent {
|
|
|
10489
10490
|
};
|
|
10490
10491
|
i0.ɵɵngDeclareClassMetadata({
|
|
10491
10492
|
minVersion: "12.0.0",
|
|
10492
|
-
version: "22.2.
|
|
10493
|
+
version: "22.2.3",
|
|
10493
10494
|
ngImport: i0,
|
|
10494
10495
|
type: GenericInsightComponent,
|
|
10495
10496
|
decorators: [{
|
|
@@ -10592,7 +10593,7 @@ var GenericMiscComponent = class GenericMiscComponent extends AppBaseComponent {
|
|
|
10592
10593
|
static {
|
|
10593
10594
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10594
10595
|
minVersion: "12.0.0",
|
|
10595
|
-
version: "22.2.
|
|
10596
|
+
version: "22.2.3",
|
|
10596
10597
|
ngImport: i0,
|
|
10597
10598
|
type: GenericMiscComponent,
|
|
10598
10599
|
deps: [
|
|
@@ -10607,7 +10608,7 @@ var GenericMiscComponent = class GenericMiscComponent extends AppBaseComponent {
|
|
|
10607
10608
|
static {
|
|
10608
10609
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10609
10610
|
minVersion: "17.0.0",
|
|
10610
|
-
version: "22.2.
|
|
10611
|
+
version: "22.2.3",
|
|
10611
10612
|
type: GenericMiscComponent,
|
|
10612
10613
|
isStandalone: false,
|
|
10613
10614
|
selector: "pw-admin-generic-misc",
|
|
@@ -10656,7 +10657,7 @@ var GenericMiscComponent = class GenericMiscComponent extends AppBaseComponent {
|
|
|
10656
10657
|
};
|
|
10657
10658
|
i0.ɵɵngDeclareClassMetadata({
|
|
10658
10659
|
minVersion: "12.0.0",
|
|
10659
|
-
version: "22.2.
|
|
10660
|
+
version: "22.2.3",
|
|
10660
10661
|
ngImport: i0,
|
|
10661
10662
|
type: GenericMiscComponent,
|
|
10662
10663
|
decorators: [{
|
|
@@ -10695,7 +10696,7 @@ var GeneralTabsComponent = class GeneralTabsComponent {
|
|
|
10695
10696
|
static {
|
|
10696
10697
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10697
10698
|
minVersion: "12.0.0",
|
|
10698
|
-
version: "22.2.
|
|
10699
|
+
version: "22.2.3",
|
|
10699
10700
|
ngImport: i0,
|
|
10700
10701
|
type: GeneralTabsComponent,
|
|
10701
10702
|
deps: [],
|
|
@@ -10705,7 +10706,7 @@ var GeneralTabsComponent = class GeneralTabsComponent {
|
|
|
10705
10706
|
static {
|
|
10706
10707
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10707
10708
|
minVersion: "14.0.0",
|
|
10708
|
-
version: "22.2.
|
|
10709
|
+
version: "22.2.3",
|
|
10709
10710
|
type: GeneralTabsComponent,
|
|
10710
10711
|
isStandalone: false,
|
|
10711
10712
|
selector: "pw-generic-tabs",
|
|
@@ -10723,7 +10724,7 @@ var GeneralTabsComponent = class GeneralTabsComponent {
|
|
|
10723
10724
|
};
|
|
10724
10725
|
i0.ɵɵngDeclareClassMetadata({
|
|
10725
10726
|
minVersion: "12.0.0",
|
|
10726
|
-
version: "22.2.
|
|
10727
|
+
version: "22.2.3",
|
|
10727
10728
|
ngImport: i0,
|
|
10728
10729
|
type: GeneralTabsComponent,
|
|
10729
10730
|
decorators: [{
|
|
@@ -10847,7 +10848,7 @@ var AddEditIncidentComponent = class AddEditIncidentComponent extends AppBaseCom
|
|
|
10847
10848
|
static {
|
|
10848
10849
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
10849
10850
|
minVersion: "12.0.0",
|
|
10850
|
-
version: "22.2.
|
|
10851
|
+
version: "22.2.3",
|
|
10851
10852
|
ngImport: i0,
|
|
10852
10853
|
type: AddEditIncidentComponent,
|
|
10853
10854
|
deps: [
|
|
@@ -10861,7 +10862,7 @@ var AddEditIncidentComponent = class AddEditIncidentComponent extends AppBaseCom
|
|
|
10861
10862
|
static {
|
|
10862
10863
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
10863
10864
|
minVersion: "17.0.0",
|
|
10864
|
-
version: "22.2.
|
|
10865
|
+
version: "22.2.3",
|
|
10865
10866
|
type: AddEditIncidentComponent,
|
|
10866
10867
|
isStandalone: false,
|
|
10867
10868
|
selector: "pw-admin-add-edit-incident",
|
|
@@ -11082,7 +11083,7 @@ var AddEditIncidentComponent = class AddEditIncidentComponent extends AppBaseCom
|
|
|
11082
11083
|
};
|
|
11083
11084
|
i0.ɵɵngDeclareClassMetadata({
|
|
11084
11085
|
minVersion: "12.0.0",
|
|
11085
|
-
version: "22.2.
|
|
11086
|
+
version: "22.2.3",
|
|
11086
11087
|
ngImport: i0,
|
|
11087
11088
|
type: AddEditIncidentComponent,
|
|
11088
11089
|
decorators: [{
|
|
@@ -11185,7 +11186,7 @@ var IncidentListComponent = class IncidentListComponent extends AppBaseComponent
|
|
|
11185
11186
|
static {
|
|
11186
11187
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
11187
11188
|
minVersion: "12.0.0",
|
|
11188
|
-
version: "22.2.
|
|
11189
|
+
version: "22.2.3",
|
|
11189
11190
|
ngImport: i0,
|
|
11190
11191
|
type: IncidentListComponent,
|
|
11191
11192
|
deps: [
|
|
@@ -11200,13 +11201,13 @@ var IncidentListComponent = class IncidentListComponent extends AppBaseComponent
|
|
|
11200
11201
|
static {
|
|
11201
11202
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
11202
11203
|
minVersion: "17.0.0",
|
|
11203
|
-
version: "22.2.
|
|
11204
|
+
version: "22.2.3",
|
|
11204
11205
|
type: IncidentListComponent,
|
|
11205
11206
|
isStandalone: false,
|
|
11206
11207
|
selector: "pw-admin-incident-list",
|
|
11207
11208
|
usesInheritance: true,
|
|
11208
11209
|
ngImport: i0,
|
|
11209
|
-
template: "<div class=\"row\">\n <div *rbacAllow=\"'Pages.Admin.Incident.Create'\"\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Incidents</h2>\n <a [routerLink]=\"[routers.incidentDetails + 'add']\"\n (click)=\"showList = !showList\"\n (keydown.enter)=\"showList = !showList\"\n class=\"btn btn-sm btn-outline-primary\"\n aria-expanded=\"false\">\n <i class=\"fa fa-plus-circle\"\n aria-hidden=\"true\"></i>\n {{ 'Label.AddNew' | transloco }} Incident\n </a>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Incidents</strong> module lets you create and manage incident statuses. These incidents are publicly\n visible at the <strong>/status</strong> endpoint.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n@if (showList) {\n<div class=\"row faqlist primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #tt\n stateKey=\"pw-table.admin-incidents-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n [value]=\"openIncidents\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template #caption>\n <div class=\"search-filter justify-content-end\">\n <div class=\"text-end\">\n <label for=\"incidents-list-search\" class=\"visually-hidden\">Search Incident</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input id=\"incidents-list-search\"\n name=\"incidents-list-search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n type=\"text\"\n pInputText\n placeholder=\"Search incidents...\"\n data-cy=\"incident-search\"\n aria-label=\"Search incidents...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Description' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.ServiceImpacted' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Incident.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"resolved_at\">\n {{ 'Admin.Incident.ResolvedAt' | transloco }}\n <p-sort-icon field=\"resolved_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_check_at\">\n {{ 'Admin.Incident.LastCheckedAt' | transloco }}\n <p-sort-icon field=\"last_check_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Duration' | transloco }}\n </th>\n <th scope=\"true\"\n class=\"actions-list-two\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-incident>\n <tr>\n <td data-head=\"description\"\n class=\"description\">\n {{(incident?.description | removeHtml: 'quill')|textTruncate: 200}}\n </td>\n <td data-head=\"serviceImpacted\">\n {{ incident?.service_impacted ? incident?.service_impacted :\n incident?.url_impacted }}\n </td>\n <td data-head=\"startedAt\">\n <span class=\"text-nowrap\">\n {{ incident?.started_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"resolvedAt\">\n <span class=\"text-nowrap\">\n {{ incident?.resolved_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"lastCheckedAt\">\n <span class=\"text-nowrap\">\n {{ incident?.last_check_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"Duration\">\n <!-- {{ calculateDuration(incident?.resolved_at ? incident?.resolved_at :\n incident?.last_check_at, incident?.started_at) }} -->\n {{ calculateDuration(incident?.resolved_at,\n incident?.started_at) }}\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i (click)=\"navigateToEdit(incident)\"\n (keydown.enter)=\"navigateToEdit(incident)\"\n class=\"fa fa-edit edit-icon\"\n aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i\n (keydown.enter)=\"onDelete(incident)\"\n (click)=\"onDelete(incident)\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (openIncidents.length === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"\n [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (openIncidents.length !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"openIncidents.length\" />\n }\n </div>\n</div>\n}\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n<pw-no-data [withImage]=\"true\"\n [message]=\"'Admin.Incident.NoDataMessage' | transloco\">\n</pw-no-data>\n}\n",
|
|
11210
|
+
template: "<div class=\"row\">\n <div *rbacAllow=\"'Pages.Admin.Incident.Create'\"\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Incidents</h2>\n <a [routerLink]=\"[routers.incidentDetails + 'add']\"\n (click)=\"showList = !showList\"\n (keydown.enter)=\"showList = !showList\"\n class=\"btn btn-sm btn-outline-primary\"\n aria-expanded=\"false\">\n <i class=\"fa fa-plus-circle\"\n aria-hidden=\"true\"></i>\n {{ 'Label.AddNew' | transloco }} Incident\n </a>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Incidents</strong> module lets you create and manage incident statuses. These incidents are publicly\n visible at the <strong>/status</strong> endpoint.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n@if (showList) {\n<div class=\"row faqlist primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #tt\n stateKey=\"pw-table.admin-incidents-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n [value]=\"openIncidents\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template #caption>\n <div class=\"search-filter justify-content-end\">\n <div class=\"text-end\">\n <label for=\"incidents-list-search\" class=\"visually-hidden\">Search Incident</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input id=\"incidents-list-search\"\n name=\"incidents-list-search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n type=\"text\"\n pInputText\n placeholder=\"Search incidents...\"\n data-cy=\"incident-search\"\n aria-label=\"Search incidents...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Description' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.ServiceImpacted' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Incident.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"resolved_at\">\n {{ 'Admin.Incident.ResolvedAt' | transloco }}\n <p-sort-icon field=\"resolved_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_check_at\">\n {{ 'Admin.Incident.LastCheckedAt' | transloco }}\n <p-sort-icon field=\"last_check_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Duration' | transloco }}\n </th>\n <th scope=\"true\"\n class=\"actions-list-two\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-incident>\n <tr>\n <td data-head=\"description\" [attr.data-label]=\"'Admin.Incident.Description' | transloco\"\n class=\"description\">\n {{(incident?.description | removeHtml: 'quill')|textTruncate: 200}}\n </td>\n <td data-head=\"serviceImpacted\" [attr.data-label]=\"'Admin.Incident.ServiceImpacted' | transloco\">\n {{ incident?.service_impacted ? incident?.service_impacted :\n incident?.url_impacted }}\n </td>\n <td data-head=\"startedAt\" [attr.data-label]=\"'Admin.Incident.StartedAt' | transloco\">\n <span class=\"text-nowrap\">\n {{ incident?.started_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"resolvedAt\" [attr.data-label]=\"'Admin.Incident.ResolvedAt' | transloco\">\n <span class=\"text-nowrap\">\n {{ incident?.resolved_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"lastCheckedAt\" [attr.data-label]=\"'Admin.Incident.LastCheckedAt' | transloco\">\n <span class=\"text-nowrap\">\n {{ incident?.last_check_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"Duration\" [attr.data-label]=\"'Admin.Incident.Duration' | transloco\">\n <!-- {{ calculateDuration(incident?.resolved_at ? incident?.resolved_at :\n incident?.last_check_at, incident?.started_at) }} -->\n {{ calculateDuration(incident?.resolved_at,\n incident?.started_at) }}\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i (click)=\"navigateToEdit(incident)\"\n (keydown.enter)=\"navigateToEdit(incident)\"\n class=\"fa fa-edit edit-icon\"\n aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i\n (keydown.enter)=\"onDelete(incident)\"\n (click)=\"onDelete(incident)\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (openIncidents.length === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"\n [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (openIncidents.length !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"openIncidents.length\" />\n }\n </div>\n</div>\n}\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n<pw-no-data [withImage]=\"true\"\n [message]=\"'Admin.Incident.NoDataMessage' | transloco\">\n</pw-no-data>\n}\n",
|
|
11210
11211
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.incidents-wrapper .table thead th{border:0;border-bottom:1px solid rgb(222,226,230)}.incident-item{color:#3f3f44;font-size:14px;line-height:1.42857;padding:10px 0}.incident-item .description{color:var(--first)}.incident-item:last-child{border-bottom:0!important}.ql-editor.safe-html{margin:0;font-size:13px;padding:0}.safe-html p{margin:0;font-size:13px}\n"],
|
|
11211
11212
|
dependencies: [
|
|
11212
11213
|
{
|
|
@@ -11497,7 +11498,7 @@ var IncidentListComponent = class IncidentListComponent extends AppBaseComponent
|
|
|
11497
11498
|
};
|
|
11498
11499
|
i0.ɵɵngDeclareClassMetadata({
|
|
11499
11500
|
minVersion: "12.0.0",
|
|
11500
|
-
version: "22.2.
|
|
11501
|
+
version: "22.2.3",
|
|
11501
11502
|
ngImport: i0,
|
|
11502
11503
|
type: IncidentListComponent,
|
|
11503
11504
|
decorators: [{
|
|
@@ -11505,7 +11506,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11505
11506
|
args: [{
|
|
11506
11507
|
selector: "pw-admin-incident-list",
|
|
11507
11508
|
standalone: false,
|
|
11508
|
-
template: "<div class=\"row\">\n <div *rbacAllow=\"'Pages.Admin.Incident.Create'\"\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Incidents</h2>\n <a [routerLink]=\"[routers.incidentDetails + 'add']\"\n (click)=\"showList = !showList\"\n (keydown.enter)=\"showList = !showList\"\n class=\"btn btn-sm btn-outline-primary\"\n aria-expanded=\"false\">\n <i class=\"fa fa-plus-circle\"\n aria-hidden=\"true\"></i>\n {{ 'Label.AddNew' | transloco }} Incident\n </a>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Incidents</strong> module lets you create and manage incident statuses. These incidents are publicly\n visible at the <strong>/status</strong> endpoint.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n@if (showList) {\n<div class=\"row faqlist primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #tt\n stateKey=\"pw-table.admin-incidents-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n [value]=\"openIncidents\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template #caption>\n <div class=\"search-filter justify-content-end\">\n <div class=\"text-end\">\n <label for=\"incidents-list-search\" class=\"visually-hidden\">Search Incident</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input id=\"incidents-list-search\"\n name=\"incidents-list-search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n type=\"text\"\n pInputText\n placeholder=\"Search incidents...\"\n data-cy=\"incident-search\"\n aria-label=\"Search incidents...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Description' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.ServiceImpacted' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Incident.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"resolved_at\">\n {{ 'Admin.Incident.ResolvedAt' | transloco }}\n <p-sort-icon field=\"resolved_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_check_at\">\n {{ 'Admin.Incident.LastCheckedAt' | transloco }}\n <p-sort-icon field=\"last_check_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Duration' | transloco }}\n </th>\n <th scope=\"true\"\n class=\"actions-list-two\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-incident>\n <tr>\n <td data-head=\"description\"\n class=\"description\">\n {{(incident?.description | removeHtml: 'quill')|textTruncate: 200}}\n </td>\n <td data-head=\"serviceImpacted\">\n {{ incident?.service_impacted ? incident?.service_impacted :\n incident?.url_impacted }}\n </td>\n <td data-head=\"startedAt\">\n <span class=\"text-nowrap\">\n {{ incident?.started_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"resolvedAt\">\n <span class=\"text-nowrap\">\n {{ incident?.resolved_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"lastCheckedAt\">\n <span class=\"text-nowrap\">\n {{ incident?.last_check_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"Duration\">\n <!-- {{ calculateDuration(incident?.resolved_at ? incident?.resolved_at :\n incident?.last_check_at, incident?.started_at) }} -->\n {{ calculateDuration(incident?.resolved_at,\n incident?.started_at) }}\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i (click)=\"navigateToEdit(incident)\"\n (keydown.enter)=\"navigateToEdit(incident)\"\n class=\"fa fa-edit edit-icon\"\n aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i\n (keydown.enter)=\"onDelete(incident)\"\n (click)=\"onDelete(incident)\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (openIncidents.length === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"\n [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (openIncidents.length !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"openIncidents.length\" />\n }\n </div>\n</div>\n}\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n<pw-no-data [withImage]=\"true\"\n [message]=\"'Admin.Incident.NoDataMessage' | transloco\">\n</pw-no-data>\n}\n",
|
|
11509
|
+
template: "<div class=\"row\">\n <div *rbacAllow=\"'Pages.Admin.Incident.Create'\"\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Incidents</h2>\n <a [routerLink]=\"[routers.incidentDetails + 'add']\"\n (click)=\"showList = !showList\"\n (keydown.enter)=\"showList = !showList\"\n class=\"btn btn-sm btn-outline-primary\"\n aria-expanded=\"false\">\n <i class=\"fa fa-plus-circle\"\n aria-hidden=\"true\"></i>\n {{ 'Label.AddNew' | transloco }} Incident\n </a>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Incidents</strong> module lets you create and manage incident statuses. These incidents are publicly\n visible at the <strong>/status</strong> endpoint.</p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n@if (showList) {\n<div class=\"row faqlist primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #tt\n stateKey=\"pw-table.admin-incidents-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n [value]=\"openIncidents\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template #caption>\n <div class=\"search-filter justify-content-end\">\n <div class=\"text-end\">\n <label for=\"incidents-list-search\" class=\"visually-hidden\">Search Incident</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input id=\"incidents-list-search\"\n name=\"incidents-list-search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n type=\"text\"\n pInputText\n placeholder=\"Search incidents...\"\n data-cy=\"incident-search\"\n aria-label=\"Search incidents...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Description' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.ServiceImpacted' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Incident.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"resolved_at\">\n {{ 'Admin.Incident.ResolvedAt' | transloco }}\n <p-sort-icon field=\"resolved_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_check_at\">\n {{ 'Admin.Incident.LastCheckedAt' | transloco }}\n <p-sort-icon field=\"last_check_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Incident.Duration' | transloco }}\n </th>\n <th scope=\"true\"\n class=\"actions-list-two\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-incident>\n <tr>\n <td data-head=\"description\" [attr.data-label]=\"'Admin.Incident.Description' | transloco\"\n class=\"description\">\n {{(incident?.description | removeHtml: 'quill')|textTruncate: 200}}\n </td>\n <td data-head=\"serviceImpacted\" [attr.data-label]=\"'Admin.Incident.ServiceImpacted' | transloco\">\n {{ incident?.service_impacted ? incident?.service_impacted :\n incident?.url_impacted }}\n </td>\n <td data-head=\"startedAt\" [attr.data-label]=\"'Admin.Incident.StartedAt' | transloco\">\n <span class=\"text-nowrap\">\n {{ incident?.started_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"resolvedAt\" [attr.data-label]=\"'Admin.Incident.ResolvedAt' | transloco\">\n <span class=\"text-nowrap\">\n {{ incident?.resolved_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"lastCheckedAt\" [attr.data-label]=\"'Admin.Incident.LastCheckedAt' | transloco\">\n <span class=\"text-nowrap\">\n {{ incident?.last_check_at | date: 'dd-MMM-yyyy, h:mm a' }}\n </span>\n </td>\n <td data-head=\"Duration\" [attr.data-label]=\"'Admin.Incident.Duration' | transloco\">\n <!-- {{ calculateDuration(incident?.resolved_at ? incident?.resolved_at :\n incident?.last_check_at, incident?.started_at) }} -->\n {{ calculateDuration(incident?.resolved_at,\n incident?.started_at) }}\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i (click)=\"navigateToEdit(incident)\"\n (keydown.enter)=\"navigateToEdit(incident)\"\n class=\"fa fa-edit edit-icon\"\n aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-2\">\n <i\n (keydown.enter)=\"onDelete(incident)\"\n (click)=\"onDelete(incident)\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (openIncidents.length === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"\n [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (openIncidents.length !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"openIncidents.length\" />\n }\n </div>\n</div>\n}\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n<pw-no-data [withImage]=\"true\"\n [message]=\"'Admin.Incident.NoDataMessage' | transloco\">\n</pw-no-data>\n}\n",
|
|
11509
11510
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.incidents-wrapper .table thead th{border:0;border-bottom:1px solid rgb(222,226,230)}.incident-item{color:#3f3f44;font-size:14px;line-height:1.42857;padding:10px 0}.incident-item .description{color:var(--first)}.incident-item:last-child{border-bottom:0!important}.ql-editor.safe-html{margin:0;font-size:13px;padding:0}.safe-html p{margin:0;font-size:13px}\n"]
|
|
11510
11511
|
}]
|
|
11511
11512
|
}],
|
|
@@ -11528,7 +11529,7 @@ var IncidentTabsComponent = class IncidentTabsComponent {
|
|
|
11528
11529
|
static {
|
|
11529
11530
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
11530
11531
|
minVersion: "12.0.0",
|
|
11531
|
-
version: "22.2.
|
|
11532
|
+
version: "22.2.3",
|
|
11532
11533
|
ngImport: i0,
|
|
11533
11534
|
type: IncidentTabsComponent,
|
|
11534
11535
|
deps: [],
|
|
@@ -11538,7 +11539,7 @@ var IncidentTabsComponent = class IncidentTabsComponent {
|
|
|
11538
11539
|
static {
|
|
11539
11540
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
11540
11541
|
minVersion: "14.0.0",
|
|
11541
|
-
version: "22.2.
|
|
11542
|
+
version: "22.2.3",
|
|
11542
11543
|
type: IncidentTabsComponent,
|
|
11543
11544
|
isStandalone: false,
|
|
11544
11545
|
selector: "incident-tabs",
|
|
@@ -11556,7 +11557,7 @@ var IncidentTabsComponent = class IncidentTabsComponent {
|
|
|
11556
11557
|
};
|
|
11557
11558
|
i0.ɵɵngDeclareClassMetadata({
|
|
11558
11559
|
minVersion: "12.0.0",
|
|
11559
|
-
version: "22.2.
|
|
11560
|
+
version: "22.2.3",
|
|
11560
11561
|
ngImport: i0,
|
|
11561
11562
|
type: IncidentTabsComponent,
|
|
11562
11563
|
decorators: [{
|
|
@@ -11643,7 +11644,7 @@ var LoginNotificationDetailsComponent = class LoginNotificationDetailsComponent
|
|
|
11643
11644
|
static {
|
|
11644
11645
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
11645
11646
|
minVersion: "12.0.0",
|
|
11646
|
-
version: "22.2.
|
|
11647
|
+
version: "22.2.3",
|
|
11647
11648
|
ngImport: i0,
|
|
11648
11649
|
type: LoginNotificationDetailsComponent,
|
|
11649
11650
|
deps: [
|
|
@@ -11658,7 +11659,7 @@ var LoginNotificationDetailsComponent = class LoginNotificationDetailsComponent
|
|
|
11658
11659
|
static {
|
|
11659
11660
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
11660
11661
|
minVersion: "17.0.0",
|
|
11661
|
-
version: "22.2.
|
|
11662
|
+
version: "22.2.3",
|
|
11662
11663
|
type: LoginNotificationDetailsComponent,
|
|
11663
11664
|
isStandalone: false,
|
|
11664
11665
|
selector: "pw-login-notification-details",
|
|
@@ -12057,7 +12058,7 @@ var LoginNotificationDetailsComponent = class LoginNotificationDetailsComponent
|
|
|
12057
12058
|
__decorate([ValidateForm("form")], LoginNotificationDetailsComponent.prototype, "onSave", null);
|
|
12058
12059
|
i0.ɵɵngDeclareClassMetadata({
|
|
12059
12060
|
minVersion: "12.0.0",
|
|
12060
|
-
version: "22.2.
|
|
12061
|
+
version: "22.2.3",
|
|
12061
12062
|
ngImport: i0,
|
|
12062
12063
|
type: LoginNotificationDetailsComponent,
|
|
12063
12064
|
decorators: [{
|
|
@@ -12089,7 +12090,7 @@ var LoginNotificationTabsComponent = class LoginNotificationTabsComponent {
|
|
|
12089
12090
|
static {
|
|
12090
12091
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
12091
12092
|
minVersion: "12.0.0",
|
|
12092
|
-
version: "22.2.
|
|
12093
|
+
version: "22.2.3",
|
|
12093
12094
|
ngImport: i0,
|
|
12094
12095
|
type: LoginNotificationTabsComponent,
|
|
12095
12096
|
deps: [],
|
|
@@ -12099,7 +12100,7 @@ var LoginNotificationTabsComponent = class LoginNotificationTabsComponent {
|
|
|
12099
12100
|
static {
|
|
12100
12101
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
12101
12102
|
minVersion: "14.0.0",
|
|
12102
|
-
version: "22.2.
|
|
12103
|
+
version: "22.2.3",
|
|
12103
12104
|
type: LoginNotificationTabsComponent,
|
|
12104
12105
|
isStandalone: false,
|
|
12105
12106
|
selector: "login-notification-tabs",
|
|
@@ -12117,7 +12118,7 @@ var LoginNotificationTabsComponent = class LoginNotificationTabsComponent {
|
|
|
12117
12118
|
};
|
|
12118
12119
|
i0.ɵɵngDeclareClassMetadata({
|
|
12119
12120
|
minVersion: "12.0.0",
|
|
12120
|
-
version: "22.2.
|
|
12121
|
+
version: "22.2.3",
|
|
12121
12122
|
ngImport: i0,
|
|
12122
12123
|
type: LoginNotificationTabsComponent,
|
|
12123
12124
|
decorators: [{
|
|
@@ -12222,7 +12223,7 @@ var LoginNotificationsListComponent = class LoginNotificationsListComponent exte
|
|
|
12222
12223
|
static {
|
|
12223
12224
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
12224
12225
|
minVersion: "12.0.0",
|
|
12225
|
-
version: "22.2.
|
|
12226
|
+
version: "22.2.3",
|
|
12226
12227
|
ngImport: i0,
|
|
12227
12228
|
type: LoginNotificationsListComponent,
|
|
12228
12229
|
deps: [
|
|
@@ -12237,13 +12238,13 @@ var LoginNotificationsListComponent = class LoginNotificationsListComponent exte
|
|
|
12237
12238
|
static {
|
|
12238
12239
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
12239
12240
|
minVersion: "17.0.0",
|
|
12240
|
-
version: "22.2.
|
|
12241
|
+
version: "22.2.3",
|
|
12241
12242
|
type: LoginNotificationsListComponent,
|
|
12242
12243
|
isStandalone: false,
|
|
12243
12244
|
selector: "pw-login-notifications-list",
|
|
12244
12245
|
usesInheritance: true,
|
|
12245
12246
|
ngImport: i0,
|
|
12246
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Dashboard Notifications</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.loginNotifications + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Dashboard Notification\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Dashboard Notification</strong> module lets you create banner messages that appear at the top of every page.<br/>\n Use these banners to communicate important updates — like <strong>new feature announcements</strong> or <strong>known issues</strong> — directly to your active users. </p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n stateKey=\"pw-table.admin-login-notifications-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"data.notifications\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"login-notifications-list-search\"\n name=\"login-notifications-list-search\"\n pInputText\n placeholder=\"Search notifications...\"\n [(ngModel)]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n aria-label=\"Search notifications...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"notification_type\">\n {{ 'Admin.LoginNotification.NotificationType' | transloco }}\n <p-sort-icon field=\"notification_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Admin.LoginNotification.Body' | transloco }}\n <p-sort-icon field=\"body\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.LoginNotification.IsPermanent' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n class=\"w-25\">\n {{ 'Admin.LoginNotification.FeatureKeys' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_from\">\n {{ 'Admin.LoginNotification.VisibleFrom' | transloco }}\n <p-sort-icon field=\"visible_from\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_until\">\n {{ 'Admin.LoginNotification.VisibleUntil' | transloco }}\n <p-sort-icon field=\"visible_until\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"notification_type\">\n @if (item?.notification_type) {\n <span\n class=\"badge\"\n [ngClass]=\"'bg-' + item.notification_type\">\n {{ item.notification_type }}\n </span>\n }\n </td>\n <td\n data-head=\"body\"\n >\n <span [pTooltip]=\"item?.body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ item?.body | textTruncate: 30 }}</span>\n\n </td>\n <td data-head=\"Is Permanent\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.is_permanent\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_permanent ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"feature_keys\">\n @for (data of item?.feature_keys.slice(0, 3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n\n @if (item.expanded) {\n <span>\n @for (data of item?.feature_keys.slice(3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n </span>\n }\n\n @if (item?.feature_keys.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expanded = !item.expanded\">\n <span>...</span>\n </a>\n </span>\n }\n\n </td>\n <td\n data-head=\"visible_from\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInPast(item?.visible_from) }\"\n >\n {{ item?.visible_from | dateFormat }}\n </td>\n <td\n data-head=\"visible_until\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInFuture(item?.visible_until) }\"\n >\n {{ item?.visible_until | dateFormat }}\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.loginNotifications + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.LoginNotification.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n",
|
|
12247
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Dashboard Notifications</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.loginNotifications + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Dashboard Notification\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Dashboard Notification</strong> module lets you create banner messages that appear at the top of every page.<br/>\n Use these banners to communicate important updates — like <strong>new feature announcements</strong> or <strong>known issues</strong> — directly to your active users. </p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n stateKey=\"pw-table.admin-login-notifications-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"data.notifications\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"login-notifications-list-search\"\n name=\"login-notifications-list-search\"\n pInputText\n placeholder=\"Search notifications...\"\n [(ngModel)]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n aria-label=\"Search notifications...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"notification_type\">\n {{ 'Admin.LoginNotification.NotificationType' | transloco }}\n <p-sort-icon field=\"notification_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Admin.LoginNotification.Body' | transloco }}\n <p-sort-icon field=\"body\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.LoginNotification.IsPermanent' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n class=\"w-25\">\n {{ 'Admin.LoginNotification.FeatureKeys' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_from\">\n {{ 'Admin.LoginNotification.VisibleFrom' | transloco }}\n <p-sort-icon field=\"visible_from\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_until\">\n {{ 'Admin.LoginNotification.VisibleUntil' | transloco }}\n <p-sort-icon field=\"visible_until\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"notification_type\" [attr.data-label]=\"'Admin.LoginNotification.NotificationType' | transloco\">\n @if (item?.notification_type) {\n <span\n class=\"badge\"\n [ngClass]=\"'bg-' + item.notification_type\">\n {{ item.notification_type }}\n </span>\n }\n </td>\n <td\n data-head=\"body\" [attr.data-label]=\"'Admin.LoginNotification.Body' | transloco\"\n >\n <span [pTooltip]=\"item?.body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ item?.body | textTruncate: 30 }}</span>\n\n </td>\n <td data-head=\"Is Permanent\" [attr.data-label]=\"'Admin.LoginNotification.IsPermanent' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.is_permanent\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_permanent ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"feature_keys\" [attr.data-label]=\"'Admin.LoginNotification.FeatureKeys' | transloco\">\n @for (data of item?.feature_keys.slice(0, 3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n\n @if (item.expanded) {\n <span>\n @for (data of item?.feature_keys.slice(3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n </span>\n }\n\n @if (item?.feature_keys.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expanded = !item.expanded\">\n <span>...</span>\n </a>\n </span>\n }\n\n </td>\n <td\n data-head=\"visible_from\" [attr.data-label]=\"'Admin.LoginNotification.VisibleFrom' | transloco\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInPast(item?.visible_from) }\"\n >\n {{ item?.visible_from | dateFormat }}\n </td>\n <td\n data-head=\"visible_until\" [attr.data-label]=\"'Admin.LoginNotification.VisibleUntil' | transloco\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInFuture(item?.visible_until) }\"\n >\n {{ item?.visible_until | dateFormat }}\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.loginNotifications + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.LoginNotification.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n",
|
|
12247
12248
|
dependencies: [
|
|
12248
12249
|
{
|
|
12249
12250
|
kind: "component",
|
|
@@ -12539,7 +12540,7 @@ var LoginNotificationsListComponent = class LoginNotificationsListComponent exte
|
|
|
12539
12540
|
};
|
|
12540
12541
|
i0.ɵɵngDeclareClassMetadata({
|
|
12541
12542
|
minVersion: "12.0.0",
|
|
12542
|
-
version: "22.2.
|
|
12543
|
+
version: "22.2.3",
|
|
12543
12544
|
ngImport: i0,
|
|
12544
12545
|
type: LoginNotificationsListComponent,
|
|
12545
12546
|
decorators: [{
|
|
@@ -12547,7 +12548,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
12547
12548
|
args: [{
|
|
12548
12549
|
selector: "pw-login-notifications-list",
|
|
12549
12550
|
standalone: false,
|
|
12550
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Dashboard Notifications</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.loginNotifications + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Dashboard Notification\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Dashboard Notification</strong> module lets you create banner messages that appear at the top of every page.<br/>\n Use these banners to communicate important updates — like <strong>new feature announcements</strong> or <strong>known issues</strong> — directly to your active users. </p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n stateKey=\"pw-table.admin-login-notifications-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"data.notifications\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"login-notifications-list-search\"\n name=\"login-notifications-list-search\"\n pInputText\n placeholder=\"Search notifications...\"\n [(ngModel)]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n aria-label=\"Search notifications...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"notification_type\">\n {{ 'Admin.LoginNotification.NotificationType' | transloco }}\n <p-sort-icon field=\"notification_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Admin.LoginNotification.Body' | transloco }}\n <p-sort-icon field=\"body\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.LoginNotification.IsPermanent' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n class=\"w-25\">\n {{ 'Admin.LoginNotification.FeatureKeys' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_from\">\n {{ 'Admin.LoginNotification.VisibleFrom' | transloco }}\n <p-sort-icon field=\"visible_from\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_until\">\n {{ 'Admin.LoginNotification.VisibleUntil' | transloco }}\n <p-sort-icon field=\"visible_until\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"notification_type\">\n @if (item?.notification_type) {\n <span\n class=\"badge\"\n [ngClass]=\"'bg-' + item.notification_type\">\n {{ item.notification_type }}\n </span>\n }\n </td>\n <td\n data-head=\"body\"\n >\n <span [pTooltip]=\"item?.body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ item?.body | textTruncate: 30 }}</span>\n\n </td>\n <td data-head=\"Is Permanent\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.is_permanent\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_permanent ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"feature_keys\">\n @for (data of item?.feature_keys.slice(0, 3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n\n @if (item.expanded) {\n <span>\n @for (data of item?.feature_keys.slice(3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n </span>\n }\n\n @if (item?.feature_keys.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expanded = !item.expanded\">\n <span>...</span>\n </a>\n </span>\n }\n\n </td>\n <td\n data-head=\"visible_from\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInPast(item?.visible_from) }\"\n >\n {{ item?.visible_from | dateFormat }}\n </td>\n <td\n data-head=\"visible_until\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInFuture(item?.visible_until) }\"\n >\n {{ item?.visible_until | dateFormat }}\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.loginNotifications + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.LoginNotification.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n"
|
|
12551
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Dashboard Notifications</h2>\n <button class=\"btn btn-outline-primary btn-sm\"\n [routerLink]=\"[routers.loginNotifications + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Dashboard Notification\n </button>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Dashboard Notification</strong> module lets you create banner messages that appear at the top of every page.<br/>\n Use these banners to communicate important updates — like <strong>new feature announcements</strong> or <strong>known issues</strong> — directly to your active users. </p>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n stateKey=\"pw-table.admin-login-notifications-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"data.notifications\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"login-notifications-list-search\"\n name=\"login-notifications-list-search\"\n pInputText\n placeholder=\"Search notifications...\"\n [(ngModel)]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n aria-label=\"Search notifications...\" />\n </p-iconfield>\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"notification_type\">\n {{ 'Admin.LoginNotification.NotificationType' | transloco }}\n <p-sort-icon field=\"notification_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Admin.LoginNotification.Body' | transloco }}\n <p-sort-icon field=\"body\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.LoginNotification.IsPermanent' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n class=\"w-25\">\n {{ 'Admin.LoginNotification.FeatureKeys' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_from\">\n {{ 'Admin.LoginNotification.VisibleFrom' | transloco }}\n <p-sort-icon field=\"visible_from\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"visible_until\">\n {{ 'Admin.LoginNotification.VisibleUntil' | transloco }}\n <p-sort-icon field=\"visible_until\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"notification_type\" [attr.data-label]=\"'Admin.LoginNotification.NotificationType' | transloco\">\n @if (item?.notification_type) {\n <span\n class=\"badge\"\n [ngClass]=\"'bg-' + item.notification_type\">\n {{ item.notification_type }}\n </span>\n }\n </td>\n <td\n data-head=\"body\" [attr.data-label]=\"'Admin.LoginNotification.Body' | transloco\"\n >\n <span [pTooltip]=\"item?.body\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ item?.body | textTruncate: 30 }}</span>\n\n </td>\n <td data-head=\"Is Permanent\" [attr.data-label]=\"'Admin.LoginNotification.IsPermanent' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: item?.is_permanent\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_permanent ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"feature_keys\" [attr.data-label]=\"'Admin.LoginNotification.FeatureKeys' | transloco\">\n @for (data of item?.feature_keys.slice(0, 3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n\n @if (item.expanded) {\n <span>\n @for (data of item?.feature_keys.slice(3); track data) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.feature_keys, item: data }\"\n [colorByName]=\"true\"\n [dataName]=\"data\"\n color=\"cyan\">{{ data }}</span>\n }\n </span>\n }\n\n @if (item?.feature_keys.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expanded = !item.expanded\">\n <span>...</span>\n </a>\n </span>\n }\n\n </td>\n <td\n data-head=\"visible_from\" [attr.data-label]=\"'Admin.LoginNotification.VisibleFrom' | transloco\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInPast(item?.visible_from) }\"\n >\n {{ item?.visible_from | dateFormat }}\n </td>\n <td\n data-head=\"visible_until\" [attr.data-label]=\"'Admin.LoginNotification.VisibleUntil' | transloco\"\n [ngClass]=\"{ 'text-success-muted fw-bold': isDateInFuture(item?.visible_until) }\"\n >\n {{ item?.visible_until | dateFormat }}\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n [routerLink]=\"[routers.loginNotifications + item?.id]\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n (keydown.enter)=\"onDelete(item?.id)\"\n (click)=\"onDelete(item?.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n</div>\n@if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.LoginNotification.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n"
|
|
12551
12552
|
}]
|
|
12552
12553
|
}],
|
|
12553
12554
|
ctorParameters: () => [
|
|
@@ -12640,7 +12641,7 @@ var MailerDetailsComponent = class MailerDetailsComponent extends AppBaseCompone
|
|
|
12640
12641
|
static {
|
|
12641
12642
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
12642
12643
|
minVersion: "12.0.0",
|
|
12643
|
-
version: "22.2.
|
|
12644
|
+
version: "22.2.3",
|
|
12644
12645
|
ngImport: i0,
|
|
12645
12646
|
type: MailerDetailsComponent,
|
|
12646
12647
|
deps: [
|
|
@@ -12654,7 +12655,7 @@ var MailerDetailsComponent = class MailerDetailsComponent extends AppBaseCompone
|
|
|
12654
12655
|
static {
|
|
12655
12656
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
12656
12657
|
minVersion: "17.0.0",
|
|
12657
|
-
version: "22.2.
|
|
12658
|
+
version: "22.2.3",
|
|
12658
12659
|
type: MailerDetailsComponent,
|
|
12659
12660
|
isStandalone: false,
|
|
12660
12661
|
selector: "pw-mailer-details",
|
|
@@ -12861,7 +12862,7 @@ var MailerDetailsComponent = class MailerDetailsComponent extends AppBaseCompone
|
|
|
12861
12862
|
__decorate([ValidateForm("form")], MailerDetailsComponent.prototype, "onSave", null);
|
|
12862
12863
|
i0.ɵɵngDeclareClassMetadata({
|
|
12863
12864
|
minVersion: "12.0.0",
|
|
12864
|
-
version: "22.2.
|
|
12865
|
+
version: "22.2.3",
|
|
12865
12866
|
ngImport: i0,
|
|
12866
12867
|
type: MailerDetailsComponent,
|
|
12867
12868
|
decorators: [{
|
|
@@ -12957,7 +12958,7 @@ var MailerListComponent = class MailerListComponent extends AppBaseComponent {
|
|
|
12957
12958
|
static {
|
|
12958
12959
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
12959
12960
|
minVersion: "12.0.0",
|
|
12960
|
-
version: "22.2.
|
|
12961
|
+
version: "22.2.3",
|
|
12961
12962
|
ngImport: i0,
|
|
12962
12963
|
type: MailerListComponent,
|
|
12963
12964
|
deps: [
|
|
@@ -12973,7 +12974,7 @@ var MailerListComponent = class MailerListComponent extends AppBaseComponent {
|
|
|
12973
12974
|
static {
|
|
12974
12975
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
12975
12976
|
minVersion: "17.0.0",
|
|
12976
|
-
version: "22.2.
|
|
12977
|
+
version: "22.2.3",
|
|
12977
12978
|
type: MailerListComponent,
|
|
12978
12979
|
isStandalone: false,
|
|
12979
12980
|
selector: "pw-mailer-list",
|
|
@@ -13269,7 +13270,7 @@ var MailerListComponent = class MailerListComponent extends AppBaseComponent {
|
|
|
13269
13270
|
};
|
|
13270
13271
|
i0.ɵɵngDeclareClassMetadata({
|
|
13271
13272
|
minVersion: "12.0.0",
|
|
13272
|
-
version: "22.2.
|
|
13273
|
+
version: "22.2.3",
|
|
13273
13274
|
ngImport: i0,
|
|
13274
13275
|
type: MailerListComponent,
|
|
13275
13276
|
decorators: [{
|
|
@@ -13301,7 +13302,7 @@ var MailerComponent = class MailerComponent extends AppBaseComponent {
|
|
|
13301
13302
|
static {
|
|
13302
13303
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
13303
13304
|
minVersion: "12.0.0",
|
|
13304
|
-
version: "22.2.
|
|
13305
|
+
version: "22.2.3",
|
|
13305
13306
|
ngImport: i0,
|
|
13306
13307
|
type: MailerComponent,
|
|
13307
13308
|
deps: [{ token: i0.Injector }],
|
|
@@ -13311,7 +13312,7 @@ var MailerComponent = class MailerComponent extends AppBaseComponent {
|
|
|
13311
13312
|
static {
|
|
13312
13313
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
13313
13314
|
minVersion: "14.0.0",
|
|
13314
|
-
version: "22.2.
|
|
13315
|
+
version: "22.2.3",
|
|
13315
13316
|
type: MailerComponent,
|
|
13316
13317
|
isStandalone: false,
|
|
13317
13318
|
selector: "pw-mailer",
|
|
@@ -13331,7 +13332,7 @@ var MailerComponent = class MailerComponent extends AppBaseComponent {
|
|
|
13331
13332
|
};
|
|
13332
13333
|
i0.ɵɵngDeclareClassMetadata({
|
|
13333
13334
|
minVersion: "12.0.0",
|
|
13334
|
-
version: "22.2.
|
|
13335
|
+
version: "22.2.3",
|
|
13335
13336
|
ngImport: i0,
|
|
13336
13337
|
type: MailerComponent,
|
|
13337
13338
|
decorators: [{
|
|
@@ -13401,7 +13402,7 @@ var NewsletterDetailsComponent = class NewsletterDetailsComponent extends AppBas
|
|
|
13401
13402
|
static {
|
|
13402
13403
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
13403
13404
|
minVersion: "12.0.0",
|
|
13404
|
-
version: "22.2.
|
|
13405
|
+
version: "22.2.3",
|
|
13405
13406
|
ngImport: i0,
|
|
13406
13407
|
type: NewsletterDetailsComponent,
|
|
13407
13408
|
deps: [
|
|
@@ -13415,7 +13416,7 @@ var NewsletterDetailsComponent = class NewsletterDetailsComponent extends AppBas
|
|
|
13415
13416
|
static {
|
|
13416
13417
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
13417
13418
|
minVersion: "17.0.0",
|
|
13418
|
-
version: "22.2.
|
|
13419
|
+
version: "22.2.3",
|
|
13419
13420
|
type: NewsletterDetailsComponent,
|
|
13420
13421
|
isStandalone: false,
|
|
13421
13422
|
selector: "pw-newsletter-details",
|
|
@@ -13576,7 +13577,7 @@ var NewsletterDetailsComponent = class NewsletterDetailsComponent extends AppBas
|
|
|
13576
13577
|
__decorate([ValidateForm("form")], NewsletterDetailsComponent.prototype, "onSave", null);
|
|
13577
13578
|
i0.ɵɵngDeclareClassMetadata({
|
|
13578
13579
|
minVersion: "12.0.0",
|
|
13579
|
-
version: "22.2.
|
|
13580
|
+
version: "22.2.3",
|
|
13580
13581
|
ngImport: i0,
|
|
13581
13582
|
type: NewsletterDetailsComponent,
|
|
13582
13583
|
decorators: [{
|
|
@@ -13808,7 +13809,7 @@ var NewsletterItemDetailsComponent = class NewsletterItemDetailsComponent extend
|
|
|
13808
13809
|
static {
|
|
13809
13810
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
13810
13811
|
minVersion: "12.0.0",
|
|
13811
|
-
version: "22.2.
|
|
13812
|
+
version: "22.2.3",
|
|
13812
13813
|
ngImport: i0,
|
|
13813
13814
|
type: NewsletterItemDetailsComponent,
|
|
13814
13815
|
deps: [
|
|
@@ -13826,7 +13827,7 @@ var NewsletterItemDetailsComponent = class NewsletterItemDetailsComponent extend
|
|
|
13826
13827
|
static {
|
|
13827
13828
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
13828
13829
|
minVersion: "17.0.0",
|
|
13829
|
-
version: "22.2.
|
|
13830
|
+
version: "22.2.3",
|
|
13830
13831
|
type: NewsletterItemDetailsComponent,
|
|
13831
13832
|
isStandalone: false,
|
|
13832
13833
|
selector: "pw-newsletter-item-details",
|
|
@@ -14341,7 +14342,7 @@ var NewsletterItemDetailsComponent = class NewsletterItemDetailsComponent extend
|
|
|
14341
14342
|
__decorate([ValidateForm("form")], NewsletterItemDetailsComponent.prototype, "onSave", null);
|
|
14342
14343
|
i0.ɵɵngDeclareClassMetadata({
|
|
14343
14344
|
minVersion: "12.0.0",
|
|
14344
|
-
version: "22.2.
|
|
14345
|
+
version: "22.2.3",
|
|
14345
14346
|
ngImport: i0,
|
|
14346
14347
|
type: NewsletterItemDetailsComponent,
|
|
14347
14348
|
decorators: [{
|
|
@@ -14418,7 +14419,7 @@ var NewsletterUsersListComponent = class NewsletterUsersListComponent extends Ap
|
|
|
14418
14419
|
static {
|
|
14419
14420
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
14420
14421
|
minVersion: "12.0.0",
|
|
14421
|
-
version: "22.2.
|
|
14422
|
+
version: "22.2.3",
|
|
14422
14423
|
ngImport: i0,
|
|
14423
14424
|
type: NewsletterUsersListComponent,
|
|
14424
14425
|
deps: [
|
|
@@ -14432,13 +14433,13 @@ var NewsletterUsersListComponent = class NewsletterUsersListComponent extends Ap
|
|
|
14432
14433
|
static {
|
|
14433
14434
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
14434
14435
|
minVersion: "17.0.0",
|
|
14435
|
-
version: "22.2.
|
|
14436
|
+
version: "22.2.3",
|
|
14436
14437
|
type: NewsletterUsersListComponent,
|
|
14437
14438
|
isStandalone: false,
|
|
14438
14439
|
selector: "pw-newsletter-users-list",
|
|
14439
14440
|
usesInheritance: true,
|
|
14440
14441
|
ngImport: i0,
|
|
14441
|
-
template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">Newsletter recipients</h3>\n </div>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"8\" [showCaption]=\"true\" />\n }\n\n <div class=\"primeng-datatable-container actions-collapsed table-responsive\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.newsletter_users\"\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 stateKey=\"pw-table.newsletter-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"newsletter-users-list-search\" class=\"visually-hidden\">Search users</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"newsletter-users-list-search\"\n name=\"newsletter-users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ '
|
|
14442
|
+
template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">Newsletter recipients</h3>\n </div>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"8\" [showCaption]=\"true\" />\n }\n\n <div class=\"primeng-datatable-container actions-collapsed table-responsive\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.newsletter_users\"\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 stateKey=\"pw-table.newsletter-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"newsletter-users-list-search\" class=\"visually-hidden\">Search users</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"newsletter-users-list-search\"\n name=\"newsletter-users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.Name' | transloco }}\n <p-sort-icon field=\"first_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"joined_at\">\n {{ 'Admin.NewsletterItem.JoinedAt' | transloco }}\n <p-sort-icon field=\"joined_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.NewsletterItem.LastSignInAt' | transloco }}\n <p-sort-icon field=\"last_sign_in_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_opened\">\n {{ 'Admin.NewsletterItem.LastOpened' | transloco }}\n <p-sort-icon field=\"last_opened\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"open_count\">\n {{ 'Admin.NewsletterItem.OpenCount' | transloco }}\n <p-sort-icon field=\"open_count\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"clicked_at\">\n {{ 'Admin.NewsletterItem.ClickedAt' | transloco }}\n <p-sort-icon field=\"clicked_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"clicked_count\">\n {{ 'Admin.NewsletterItem.ClickedCount' | transloco }}\n <p-sort-icon field=\"clicked_count\"></p-sort-icon>\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-user>\n <tr>\n <td data-head=\"Name\">\n <a [routerLink]=\"['/members', user?.slug]\">{{ user?.first_name }} {{ user?.last_name }}</a>\n \n </td>\n <td data-head=\"Email\">{{ user?.email }}</td>\n <td data-head=\"Joined At\">{{ user?.joined_at | dateFormat }}</td>\n <td data-head=\"Last Sign In At\">\n @if (user?.current_sign_in_at | isOnline) {\n <pw-online-indicator [lastSeen]=\"user.current_sign_in_at\" />\n } @else {\n {{ user?.last_sign_in_at | dateFormat }}\n }\n </td>\n <td data-head=\"Last Opened\">{{ user?.last_opened }}</td>\n <td data-head=\"Open Count\">{{ user?.open_count }}</td>\n <td data-head=\"Clicked At\">{{ user?.clicked_at }}</td>\n <td data-head=\"Clicked Count\">{{ user?.clicked_count }}</td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.NewsletterItem.NewsLetterRecipientsNoDataMessage' | transloco\">\n </pw-no-data>\n </div>\n }\n",
|
|
14442
14443
|
dependencies: [
|
|
14443
14444
|
{
|
|
14444
14445
|
kind: "component",
|
|
@@ -14695,7 +14696,7 @@ var NewsletterUsersListComponent = class NewsletterUsersListComponent extends Ap
|
|
|
14695
14696
|
};
|
|
14696
14697
|
i0.ɵɵngDeclareClassMetadata({
|
|
14697
14698
|
minVersion: "12.0.0",
|
|
14698
|
-
version: "22.2.
|
|
14699
|
+
version: "22.2.3",
|
|
14699
14700
|
ngImport: i0,
|
|
14700
14701
|
type: NewsletterUsersListComponent,
|
|
14701
14702
|
decorators: [{
|
|
@@ -14703,7 +14704,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
14703
14704
|
args: [{
|
|
14704
14705
|
selector: "pw-newsletter-users-list",
|
|
14705
14706
|
standalone: false,
|
|
14706
|
-
template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">Newsletter recipients</h3>\n </div>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"8\" [showCaption]=\"true\" />\n }\n\n <div class=\"primeng-datatable-container actions-collapsed table-responsive\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.newsletter_users\"\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 stateKey=\"pw-table.newsletter-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"newsletter-users-list-search\" class=\"visually-hidden\">Search users</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"newsletter-users-list-search\"\n name=\"newsletter-users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ '
|
|
14707
|
+
template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">Newsletter recipients</h3>\n </div>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"8\" [showCaption]=\"true\" />\n }\n\n <div class=\"primeng-datatable-container actions-collapsed table-responsive\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.newsletter_users\"\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 stateKey=\"pw-table.newsletter-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <label for=\"newsletter-users-list-search\" class=\"visually-hidden\">Search users</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"newsletter-users-list-search\"\n name=\"newsletter-users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.Name' | transloco }}\n <p-sort-icon field=\"first_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"joined_at\">\n {{ 'Admin.NewsletterItem.JoinedAt' | transloco }}\n <p-sort-icon field=\"joined_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.NewsletterItem.LastSignInAt' | transloco }}\n <p-sort-icon field=\"last_sign_in_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_opened\">\n {{ 'Admin.NewsletterItem.LastOpened' | transloco }}\n <p-sort-icon field=\"last_opened\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"open_count\">\n {{ 'Admin.NewsletterItem.OpenCount' | transloco }}\n <p-sort-icon field=\"open_count\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"clicked_at\">\n {{ 'Admin.NewsletterItem.ClickedAt' | transloco }}\n <p-sort-icon field=\"clicked_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"clicked_count\">\n {{ 'Admin.NewsletterItem.ClickedCount' | transloco }}\n <p-sort-icon field=\"clicked_count\"></p-sort-icon>\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-user>\n <tr>\n <td data-head=\"Name\">\n <a [routerLink]=\"['/members', user?.slug]\">{{ user?.first_name }} {{ user?.last_name }}</a>\n \n </td>\n <td data-head=\"Email\">{{ user?.email }}</td>\n <td data-head=\"Joined At\">{{ user?.joined_at | dateFormat }}</td>\n <td data-head=\"Last Sign In At\">\n @if (user?.current_sign_in_at | isOnline) {\n <pw-online-indicator [lastSeen]=\"user.current_sign_in_at\" />\n } @else {\n {{ user?.last_sign_in_at | dateFormat }}\n }\n </td>\n <td data-head=\"Last Opened\">{{ user?.last_opened }}</td>\n <td data-head=\"Open Count\">{{ user?.open_count }}</td>\n <td data-head=\"Clicked At\">{{ user?.clicked_at }}</td>\n <td data-head=\"Clicked Count\">{{ user?.clicked_count }}</td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.NewsletterItem.NewsLetterRecipientsNoDataMessage' | transloco\">\n </pw-no-data>\n </div>\n }\n"
|
|
14707
14708
|
}]
|
|
14708
14709
|
}],
|
|
14709
14710
|
ctorParameters: () => [
|
|
@@ -14744,7 +14745,7 @@ var NewsletterInsightComponent = class NewsletterInsightComponent extends AppBas
|
|
|
14744
14745
|
static {
|
|
14745
14746
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
14746
14747
|
minVersion: "12.0.0",
|
|
14747
|
-
version: "22.2.
|
|
14748
|
+
version: "22.2.3",
|
|
14748
14749
|
ngImport: i0,
|
|
14749
14750
|
type: NewsletterInsightComponent,
|
|
14750
14751
|
deps: [
|
|
@@ -14758,7 +14759,7 @@ var NewsletterInsightComponent = class NewsletterInsightComponent extends AppBas
|
|
|
14758
14759
|
static {
|
|
14759
14760
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
14760
14761
|
minVersion: "17.0.0",
|
|
14761
|
-
version: "22.2.
|
|
14762
|
+
version: "22.2.3",
|
|
14762
14763
|
type: NewsletterInsightComponent,
|
|
14763
14764
|
isStandalone: false,
|
|
14764
14765
|
selector: "pw-newsletter-insight",
|
|
@@ -14858,7 +14859,7 @@ var NewsletterInsightComponent = class NewsletterInsightComponent extends AppBas
|
|
|
14858
14859
|
};
|
|
14859
14860
|
i0.ɵɵngDeclareClassMetadata({
|
|
14860
14861
|
minVersion: "12.0.0",
|
|
14861
|
-
version: "22.2.
|
|
14862
|
+
version: "22.2.3",
|
|
14862
14863
|
ngImport: i0,
|
|
14863
14864
|
type: NewsletterInsightComponent,
|
|
14864
14865
|
decorators: [{
|
|
@@ -15018,7 +15019,7 @@ var NewslettersItemsComponent = class NewslettersItemsComponent extends AppBaseC
|
|
|
15018
15019
|
static {
|
|
15019
15020
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
15020
15021
|
minVersion: "12.0.0",
|
|
15021
|
-
version: "22.2.
|
|
15022
|
+
version: "22.2.3",
|
|
15022
15023
|
ngImport: i0,
|
|
15023
15024
|
type: NewslettersItemsComponent,
|
|
15024
15025
|
deps: [
|
|
@@ -15034,7 +15035,7 @@ var NewslettersItemsComponent = class NewslettersItemsComponent extends AppBaseC
|
|
|
15034
15035
|
static {
|
|
15035
15036
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
15036
15037
|
minVersion: "17.0.0",
|
|
15037
|
-
version: "22.2.
|
|
15038
|
+
version: "22.2.3",
|
|
15038
15039
|
type: NewslettersItemsComponent,
|
|
15039
15040
|
isStandalone: false,
|
|
15040
15041
|
selector: "pw-newsletters-items",
|
|
@@ -15433,7 +15434,7 @@ var NewslettersItemsComponent = class NewslettersItemsComponent extends AppBaseC
|
|
|
15433
15434
|
};
|
|
15434
15435
|
i0.ɵɵngDeclareClassMetadata({
|
|
15435
15436
|
minVersion: "12.0.0",
|
|
15436
|
-
version: "22.2.
|
|
15437
|
+
version: "22.2.3",
|
|
15437
15438
|
ngImport: i0,
|
|
15438
15439
|
type: NewslettersItemsComponent,
|
|
15439
15440
|
decorators: [{
|
|
@@ -15494,7 +15495,7 @@ var NewsLetterItemViewComponent = class NewsLetterItemViewComponent extends AppB
|
|
|
15494
15495
|
static {
|
|
15495
15496
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
15496
15497
|
minVersion: "12.0.0",
|
|
15497
|
-
version: "22.2.
|
|
15498
|
+
version: "22.2.3",
|
|
15498
15499
|
ngImport: i0,
|
|
15499
15500
|
type: NewsLetterItemViewComponent,
|
|
15500
15501
|
deps: [
|
|
@@ -15509,7 +15510,7 @@ var NewsLetterItemViewComponent = class NewsLetterItemViewComponent extends AppB
|
|
|
15509
15510
|
static {
|
|
15510
15511
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
15511
15512
|
minVersion: "17.0.0",
|
|
15512
|
-
version: "22.2.
|
|
15513
|
+
version: "22.2.3",
|
|
15513
15514
|
type: NewsLetterItemViewComponent,
|
|
15514
15515
|
isStandalone: false,
|
|
15515
15516
|
selector: "newsletters-items-view-detail",
|
|
@@ -15549,7 +15550,7 @@ var NewsLetterItemViewComponent = class NewsLetterItemViewComponent extends AppB
|
|
|
15549
15550
|
};
|
|
15550
15551
|
i0.ɵɵngDeclareClassMetadata({
|
|
15551
15552
|
minVersion: "12.0.0",
|
|
15552
|
-
version: "22.2.
|
|
15553
|
+
version: "22.2.3",
|
|
15553
15554
|
ngImport: i0,
|
|
15554
15555
|
type: NewsLetterItemViewComponent,
|
|
15555
15556
|
decorators: [{
|
|
@@ -15641,7 +15642,7 @@ var NewslettersListComponent = class NewslettersListComponent extends AppBaseCom
|
|
|
15641
15642
|
static {
|
|
15642
15643
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
15643
15644
|
minVersion: "12.0.0",
|
|
15644
|
-
version: "22.2.
|
|
15645
|
+
version: "22.2.3",
|
|
15645
15646
|
ngImport: i0,
|
|
15646
15647
|
type: NewslettersListComponent,
|
|
15647
15648
|
deps: [
|
|
@@ -15657,7 +15658,7 @@ var NewslettersListComponent = class NewslettersListComponent extends AppBaseCom
|
|
|
15657
15658
|
static {
|
|
15658
15659
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
15659
15660
|
minVersion: "17.0.0",
|
|
15660
|
-
version: "22.2.
|
|
15661
|
+
version: "22.2.3",
|
|
15661
15662
|
type: NewslettersListComponent,
|
|
15662
15663
|
isStandalone: false,
|
|
15663
15664
|
selector: "pw-newsletters-list",
|
|
@@ -15943,7 +15944,7 @@ var NewslettersListComponent = class NewslettersListComponent extends AppBaseCom
|
|
|
15943
15944
|
};
|
|
15944
15945
|
i0.ɵɵngDeclareClassMetadata({
|
|
15945
15946
|
minVersion: "12.0.0",
|
|
15946
|
-
version: "22.2.
|
|
15947
|
+
version: "22.2.3",
|
|
15947
15948
|
ngImport: i0,
|
|
15948
15949
|
type: NewslettersListComponent,
|
|
15949
15950
|
decorators: [{
|
|
@@ -15990,7 +15991,7 @@ var NewsletterComponent = class NewsletterComponent extends AppBaseComponent {
|
|
|
15990
15991
|
static {
|
|
15991
15992
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
15992
15993
|
minVersion: "12.0.0",
|
|
15993
|
-
version: "22.2.
|
|
15994
|
+
version: "22.2.3",
|
|
15994
15995
|
ngImport: i0,
|
|
15995
15996
|
type: NewsletterComponent,
|
|
15996
15997
|
deps: [{ token: i0.Injector }],
|
|
@@ -16000,7 +16001,7 @@ var NewsletterComponent = class NewsletterComponent extends AppBaseComponent {
|
|
|
16000
16001
|
static {
|
|
16001
16002
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
16002
16003
|
minVersion: "14.0.0",
|
|
16003
|
-
version: "22.2.
|
|
16004
|
+
version: "22.2.3",
|
|
16004
16005
|
type: NewsletterComponent,
|
|
16005
16006
|
isStandalone: false,
|
|
16006
16007
|
selector: "pw-newsletter",
|
|
@@ -16020,7 +16021,7 @@ var NewsletterComponent = class NewsletterComponent extends AppBaseComponent {
|
|
|
16020
16021
|
};
|
|
16021
16022
|
i0.ɵɵngDeclareClassMetadata({
|
|
16022
16023
|
minVersion: "12.0.0",
|
|
16023
|
-
version: "22.2.
|
|
16024
|
+
version: "22.2.3",
|
|
16024
16025
|
ngImport: i0,
|
|
16025
16026
|
type: NewsletterComponent,
|
|
16026
16027
|
decorators: [{
|
|
@@ -16073,7 +16074,7 @@ var OauthClientsComponent = class OauthClientsComponent extends AppBaseComponent
|
|
|
16073
16074
|
static {
|
|
16074
16075
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
16075
16076
|
minVersion: "12.0.0",
|
|
16076
|
-
version: "22.2.
|
|
16077
|
+
version: "22.2.3",
|
|
16077
16078
|
ngImport: i0,
|
|
16078
16079
|
type: OauthClientsComponent,
|
|
16079
16080
|
deps: [
|
|
@@ -16088,7 +16089,7 @@ var OauthClientsComponent = class OauthClientsComponent extends AppBaseComponent
|
|
|
16088
16089
|
static {
|
|
16089
16090
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
16090
16091
|
minVersion: "17.0.0",
|
|
16091
|
-
version: "22.2.
|
|
16092
|
+
version: "22.2.3",
|
|
16092
16093
|
type: OauthClientsComponent,
|
|
16093
16094
|
isStandalone: false,
|
|
16094
16095
|
selector: "pw-oauth-clients",
|
|
@@ -16296,7 +16297,7 @@ var OauthClientsComponent = class OauthClientsComponent extends AppBaseComponent
|
|
|
16296
16297
|
};
|
|
16297
16298
|
i0.ɵɵngDeclareClassMetadata({
|
|
16298
16299
|
minVersion: "12.0.0",
|
|
16299
|
-
version: "22.2.
|
|
16300
|
+
version: "22.2.3",
|
|
16300
16301
|
ngImport: i0,
|
|
16301
16302
|
type: OauthClientsComponent,
|
|
16302
16303
|
decorators: [{
|
|
@@ -16406,7 +16407,7 @@ var OauthClientsDetailsComponent = class OauthClientsDetailsComponent extends Ap
|
|
|
16406
16407
|
static {
|
|
16407
16408
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
16408
16409
|
minVersion: "12.0.0",
|
|
16409
|
-
version: "22.2.
|
|
16410
|
+
version: "22.2.3",
|
|
16410
16411
|
ngImport: i0,
|
|
16411
16412
|
type: OauthClientsDetailsComponent,
|
|
16412
16413
|
deps: [
|
|
@@ -16421,7 +16422,7 @@ var OauthClientsDetailsComponent = class OauthClientsDetailsComponent extends Ap
|
|
|
16421
16422
|
static {
|
|
16422
16423
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
16423
16424
|
minVersion: "17.0.0",
|
|
16424
|
-
version: "22.2.
|
|
16425
|
+
version: "22.2.3",
|
|
16425
16426
|
type: OauthClientsDetailsComponent,
|
|
16426
16427
|
isStandalone: false,
|
|
16427
16428
|
selector: "pw-oauth-clients-details",
|
|
@@ -16555,7 +16556,7 @@ var OauthClientsDetailsComponent = class OauthClientsDetailsComponent extends Ap
|
|
|
16555
16556
|
};
|
|
16556
16557
|
i0.ɵɵngDeclareClassMetadata({
|
|
16557
16558
|
minVersion: "12.0.0",
|
|
16558
|
-
version: "22.2.
|
|
16559
|
+
version: "22.2.3",
|
|
16559
16560
|
ngImport: i0,
|
|
16560
16561
|
type: OauthClientsDetailsComponent,
|
|
16561
16562
|
decorators: [{
|
|
@@ -16585,7 +16586,7 @@ var OauthClientsTabsComponent = class OauthClientsTabsComponent {
|
|
|
16585
16586
|
static {
|
|
16586
16587
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
16587
16588
|
minVersion: "12.0.0",
|
|
16588
|
-
version: "22.2.
|
|
16589
|
+
version: "22.2.3",
|
|
16589
16590
|
ngImport: i0,
|
|
16590
16591
|
type: OauthClientsTabsComponent,
|
|
16591
16592
|
deps: [],
|
|
@@ -16595,7 +16596,7 @@ var OauthClientsTabsComponent = class OauthClientsTabsComponent {
|
|
|
16595
16596
|
static {
|
|
16596
16597
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
16597
16598
|
minVersion: "14.0.0",
|
|
16598
|
-
version: "22.2.
|
|
16599
|
+
version: "22.2.3",
|
|
16599
16600
|
type: OauthClientsTabsComponent,
|
|
16600
16601
|
isStandalone: false,
|
|
16601
16602
|
selector: "pw-oauth-clients-tabs",
|
|
@@ -16613,7 +16614,7 @@ var OauthClientsTabsComponent = class OauthClientsTabsComponent {
|
|
|
16613
16614
|
};
|
|
16614
16615
|
i0.ɵɵngDeclareClassMetadata({
|
|
16615
16616
|
minVersion: "12.0.0",
|
|
16616
|
-
version: "22.2.
|
|
16617
|
+
version: "22.2.3",
|
|
16617
16618
|
ngImport: i0,
|
|
16618
16619
|
type: OauthClientsTabsComponent,
|
|
16619
16620
|
decorators: [{
|
|
@@ -16694,7 +16695,7 @@ var PermissionsDetailsComponent = class PermissionsDetailsComponent extends AppB
|
|
|
16694
16695
|
static {
|
|
16695
16696
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
16696
16697
|
minVersion: "12.0.0",
|
|
16697
|
-
version: "22.2.
|
|
16698
|
+
version: "22.2.3",
|
|
16698
16699
|
ngImport: i0,
|
|
16699
16700
|
type: PermissionsDetailsComponent,
|
|
16700
16701
|
deps: [
|
|
@@ -16708,7 +16709,7 @@ var PermissionsDetailsComponent = class PermissionsDetailsComponent extends AppB
|
|
|
16708
16709
|
static {
|
|
16709
16710
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
16710
16711
|
minVersion: "17.0.0",
|
|
16711
|
-
version: "22.2.
|
|
16712
|
+
version: "22.2.3",
|
|
16712
16713
|
type: PermissionsDetailsComponent,
|
|
16713
16714
|
isStandalone: false,
|
|
16714
16715
|
selector: "pw-permissions-details",
|
|
@@ -16880,7 +16881,7 @@ var PermissionsDetailsComponent = class PermissionsDetailsComponent extends AppB
|
|
|
16880
16881
|
__decorate([ValidateForm("form")], PermissionsDetailsComponent.prototype, "savePermissionDetails", null);
|
|
16881
16882
|
i0.ɵɵngDeclareClassMetadata({
|
|
16882
16883
|
minVersion: "12.0.0",
|
|
16883
|
-
version: "22.2.
|
|
16884
|
+
version: "22.2.3",
|
|
16884
16885
|
ngImport: i0,
|
|
16885
16886
|
type: PermissionsDetailsComponent,
|
|
16886
16887
|
decorators: [{
|
|
@@ -16970,7 +16971,7 @@ var PermissionsListComponent = class PermissionsListComponent extends AppBaseCom
|
|
|
16970
16971
|
static {
|
|
16971
16972
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
16972
16973
|
minVersion: "12.0.0",
|
|
16973
|
-
version: "22.2.
|
|
16974
|
+
version: "22.2.3",
|
|
16974
16975
|
ngImport: i0,
|
|
16975
16976
|
type: PermissionsListComponent,
|
|
16976
16977
|
deps: [
|
|
@@ -16985,7 +16986,7 @@ var PermissionsListComponent = class PermissionsListComponent extends AppBaseCom
|
|
|
16985
16986
|
static {
|
|
16986
16987
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
16987
16988
|
minVersion: "17.0.0",
|
|
16988
|
-
version: "22.2.
|
|
16989
|
+
version: "22.2.3",
|
|
16989
16990
|
type: PermissionsListComponent,
|
|
16990
16991
|
isStandalone: false,
|
|
16991
16992
|
selector: "pw-permissions-list",
|
|
@@ -17272,7 +17273,7 @@ var PermissionsListComponent = class PermissionsListComponent extends AppBaseCom
|
|
|
17272
17273
|
};
|
|
17273
17274
|
i0.ɵɵngDeclareClassMetadata({
|
|
17274
17275
|
minVersion: "12.0.0",
|
|
17275
|
-
version: "22.2.
|
|
17276
|
+
version: "22.2.3",
|
|
17276
17277
|
ngImport: i0,
|
|
17277
17278
|
type: PermissionsListComponent,
|
|
17278
17279
|
decorators: [{
|
|
@@ -17308,7 +17309,7 @@ var PermissionsTabsComponent = class PermissionsTabsComponent {
|
|
|
17308
17309
|
static {
|
|
17309
17310
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
17310
17311
|
minVersion: "12.0.0",
|
|
17311
|
-
version: "22.2.
|
|
17312
|
+
version: "22.2.3",
|
|
17312
17313
|
ngImport: i0,
|
|
17313
17314
|
type: PermissionsTabsComponent,
|
|
17314
17315
|
deps: [],
|
|
@@ -17318,7 +17319,7 @@ var PermissionsTabsComponent = class PermissionsTabsComponent {
|
|
|
17318
17319
|
static {
|
|
17319
17320
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
17320
17321
|
minVersion: "14.0.0",
|
|
17321
|
-
version: "22.2.
|
|
17322
|
+
version: "22.2.3",
|
|
17322
17323
|
type: PermissionsTabsComponent,
|
|
17323
17324
|
isStandalone: false,
|
|
17324
17325
|
selector: "pw-permissions-tabs",
|
|
@@ -17336,7 +17337,7 @@ var PermissionsTabsComponent = class PermissionsTabsComponent {
|
|
|
17336
17337
|
};
|
|
17337
17338
|
i0.ɵɵngDeclareClassMetadata({
|
|
17338
17339
|
minVersion: "12.0.0",
|
|
17339
|
-
version: "22.2.
|
|
17340
|
+
version: "22.2.3",
|
|
17340
17341
|
ngImport: i0,
|
|
17341
17342
|
type: PermissionsTabsComponent,
|
|
17342
17343
|
decorators: [{
|
|
@@ -17456,7 +17457,7 @@ var RoleDetailsComponent = class RoleDetailsComponent extends AppBaseComponent {
|
|
|
17456
17457
|
static {
|
|
17457
17458
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
17458
17459
|
minVersion: "12.0.0",
|
|
17459
|
-
version: "22.2.
|
|
17460
|
+
version: "22.2.3",
|
|
17460
17461
|
ngImport: i0,
|
|
17461
17462
|
type: RoleDetailsComponent,
|
|
17462
17463
|
deps: [
|
|
@@ -17470,7 +17471,7 @@ var RoleDetailsComponent = class RoleDetailsComponent extends AppBaseComponent {
|
|
|
17470
17471
|
static {
|
|
17471
17472
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
17472
17473
|
minVersion: "17.0.0",
|
|
17473
|
-
version: "22.2.
|
|
17474
|
+
version: "22.2.3",
|
|
17474
17475
|
type: RoleDetailsComponent,
|
|
17475
17476
|
isStandalone: false,
|
|
17476
17477
|
selector: "pw-role-details",
|
|
@@ -17650,7 +17651,7 @@ var RoleDetailsComponent = class RoleDetailsComponent extends AppBaseComponent {
|
|
|
17650
17651
|
__decorate([ValidateForm("form")], RoleDetailsComponent.prototype, "onSave", null);
|
|
17651
17652
|
i0.ɵɵngDeclareClassMetadata({
|
|
17652
17653
|
minVersion: "12.0.0",
|
|
17653
|
-
version: "22.2.
|
|
17654
|
+
version: "22.2.3",
|
|
17654
17655
|
ngImport: i0,
|
|
17655
17656
|
type: RoleDetailsComponent,
|
|
17656
17657
|
decorators: [{
|
|
@@ -17741,7 +17742,7 @@ var RolesListComponent = class RolesListComponent extends AppBaseComponent {
|
|
|
17741
17742
|
static {
|
|
17742
17743
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
17743
17744
|
minVersion: "12.0.0",
|
|
17744
|
-
version: "22.2.
|
|
17745
|
+
version: "22.2.3",
|
|
17745
17746
|
ngImport: i0,
|
|
17746
17747
|
type: RolesListComponent,
|
|
17747
17748
|
deps: [
|
|
@@ -17756,7 +17757,7 @@ var RolesListComponent = class RolesListComponent extends AppBaseComponent {
|
|
|
17756
17757
|
static {
|
|
17757
17758
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
17758
17759
|
minVersion: "17.0.0",
|
|
17759
|
-
version: "22.2.
|
|
17760
|
+
version: "22.2.3",
|
|
17760
17761
|
type: RolesListComponent,
|
|
17761
17762
|
isStandalone: false,
|
|
17762
17763
|
selector: "pw-admin-roles-list",
|
|
@@ -18049,7 +18050,7 @@ var RolesListComponent = class RolesListComponent extends AppBaseComponent {
|
|
|
18049
18050
|
};
|
|
18050
18051
|
i0.ɵɵngDeclareClassMetadata({
|
|
18051
18052
|
minVersion: "12.0.0",
|
|
18052
|
-
version: "22.2.
|
|
18053
|
+
version: "22.2.3",
|
|
18053
18054
|
ngImport: i0,
|
|
18054
18055
|
type: RolesListComponent,
|
|
18055
18056
|
decorators: [{
|
|
@@ -18133,7 +18134,7 @@ var OnboardingStepFormComponent = class OnboardingStepFormComponent {
|
|
|
18133
18134
|
static {
|
|
18134
18135
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
18135
18136
|
minVersion: "12.0.0",
|
|
18136
|
-
version: "22.2.
|
|
18137
|
+
version: "22.2.3",
|
|
18137
18138
|
ngImport: i0,
|
|
18138
18139
|
type: OnboardingStepFormComponent,
|
|
18139
18140
|
deps: [],
|
|
@@ -18143,7 +18144,7 @@ var OnboardingStepFormComponent = class OnboardingStepFormComponent {
|
|
|
18143
18144
|
static {
|
|
18144
18145
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
18145
18146
|
minVersion: "17.0.0",
|
|
18146
|
-
version: "22.2.
|
|
18147
|
+
version: "22.2.3",
|
|
18147
18148
|
type: OnboardingStepFormComponent,
|
|
18148
18149
|
isStandalone: false,
|
|
18149
18150
|
selector: "pw-onboarding-step-form",
|
|
@@ -18452,7 +18453,7 @@ var OnboardingStepFormComponent = class OnboardingStepFormComponent {
|
|
|
18452
18453
|
};
|
|
18453
18454
|
i0.ɵɵngDeclareClassMetadata({
|
|
18454
18455
|
minVersion: "12.0.0",
|
|
18455
|
-
version: "22.2.
|
|
18456
|
+
version: "22.2.3",
|
|
18456
18457
|
ngImport: i0,
|
|
18457
18458
|
type: OnboardingStepFormComponent,
|
|
18458
18459
|
decorators: [{
|
|
@@ -18619,7 +18620,7 @@ var OnboardingStepsComponent = class OnboardingStepsComponent extends AppBaseCom
|
|
|
18619
18620
|
static {
|
|
18620
18621
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
18621
18622
|
minVersion: "12.0.0",
|
|
18622
|
-
version: "22.2.
|
|
18623
|
+
version: "22.2.3",
|
|
18623
18624
|
ngImport: i0,
|
|
18624
18625
|
type: OnboardingStepsComponent,
|
|
18625
18626
|
deps: [
|
|
@@ -18640,7 +18641,7 @@ var OnboardingStepsComponent = class OnboardingStepsComponent extends AppBaseCom
|
|
|
18640
18641
|
static {
|
|
18641
18642
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
18642
18643
|
minVersion: "17.0.0",
|
|
18643
|
-
version: "22.2.
|
|
18644
|
+
version: "22.2.3",
|
|
18644
18645
|
type: OnboardingStepsComponent,
|
|
18645
18646
|
isStandalone: false,
|
|
18646
18647
|
selector: "pw-onboarding-steps",
|
|
@@ -18975,7 +18976,7 @@ var OnboardingStepsComponent = class OnboardingStepsComponent extends AppBaseCom
|
|
|
18975
18976
|
};
|
|
18976
18977
|
i0.ɵɵngDeclareClassMetadata({
|
|
18977
18978
|
minVersion: "12.0.0",
|
|
18978
|
-
version: "22.2.
|
|
18979
|
+
version: "22.2.3",
|
|
18979
18980
|
ngImport: i0,
|
|
18980
18981
|
type: OnboardingStepsComponent,
|
|
18981
18982
|
decorators: [{
|
|
@@ -19030,7 +19031,7 @@ var ProductBackupCardComponent = class ProductBackupCardComponent {
|
|
|
19030
19031
|
static {
|
|
19031
19032
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
19032
19033
|
minVersion: "12.0.0",
|
|
19033
|
-
version: "22.2.
|
|
19034
|
+
version: "22.2.3",
|
|
19034
19035
|
ngImport: i0,
|
|
19035
19036
|
type: ProductBackupCardComponent,
|
|
19036
19037
|
deps: [],
|
|
@@ -19040,7 +19041,7 @@ var ProductBackupCardComponent = class ProductBackupCardComponent {
|
|
|
19040
19041
|
static {
|
|
19041
19042
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
19042
19043
|
minVersion: "17.0.0",
|
|
19043
|
-
version: "22.2.
|
|
19044
|
+
version: "22.2.3",
|
|
19044
19045
|
type: ProductBackupCardComponent,
|
|
19045
19046
|
isStandalone: false,
|
|
19046
19047
|
selector: "pw-product-backup-card",
|
|
@@ -19225,7 +19226,7 @@ var ProductBackupCardComponent = class ProductBackupCardComponent {
|
|
|
19225
19226
|
};
|
|
19226
19227
|
i0.ɵɵngDeclareClassMetadata({
|
|
19227
19228
|
minVersion: "12.0.0",
|
|
19228
|
-
version: "22.2.
|
|
19229
|
+
version: "22.2.3",
|
|
19229
19230
|
ngImport: i0,
|
|
19230
19231
|
type: ProductBackupCardComponent,
|
|
19231
19232
|
decorators: [{
|
|
@@ -19565,7 +19566,7 @@ var ProductDetailsComponent = class ProductDetailsComponent extends AppBaseCompo
|
|
|
19565
19566
|
static {
|
|
19566
19567
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
19567
19568
|
minVersion: "12.0.0",
|
|
19568
|
-
version: "22.2.
|
|
19569
|
+
version: "22.2.3",
|
|
19569
19570
|
ngImport: i0,
|
|
19570
19571
|
type: ProductDetailsComponent,
|
|
19571
19572
|
deps: [
|
|
@@ -19581,7 +19582,7 @@ var ProductDetailsComponent = class ProductDetailsComponent extends AppBaseCompo
|
|
|
19581
19582
|
static {
|
|
19582
19583
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
19583
19584
|
minVersion: "17.0.0",
|
|
19584
|
-
version: "22.2.
|
|
19585
|
+
version: "22.2.3",
|
|
19585
19586
|
type: ProductDetailsComponent,
|
|
19586
19587
|
isStandalone: false,
|
|
19587
19588
|
selector: "pw-product-details",
|
|
@@ -20018,7 +20019,7 @@ var ProductDetailsComponent = class ProductDetailsComponent extends AppBaseCompo
|
|
|
20018
20019
|
__decorate([ValidateForm("form")], ProductDetailsComponent.prototype, "onSave", null);
|
|
20019
20020
|
i0.ɵɵngDeclareClassMetadata({
|
|
20020
20021
|
minVersion: "12.0.0",
|
|
20021
|
-
version: "22.2.
|
|
20022
|
+
version: "22.2.3",
|
|
20022
20023
|
ngImport: i0,
|
|
20023
20024
|
type: ProductDetailsComponent,
|
|
20024
20025
|
decorators: [{
|
|
@@ -20071,7 +20072,7 @@ var ProductInsightComponent = class ProductInsightComponent extends AppBaseCompo
|
|
|
20071
20072
|
static {
|
|
20072
20073
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
20073
20074
|
minVersion: "12.0.0",
|
|
20074
|
-
version: "22.2.
|
|
20075
|
+
version: "22.2.3",
|
|
20075
20076
|
ngImport: i0,
|
|
20076
20077
|
type: ProductInsightComponent,
|
|
20077
20078
|
deps: [
|
|
@@ -20085,7 +20086,7 @@ var ProductInsightComponent = class ProductInsightComponent extends AppBaseCompo
|
|
|
20085
20086
|
static {
|
|
20086
20087
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
20087
20088
|
minVersion: "17.0.0",
|
|
20088
|
-
version: "22.2.
|
|
20089
|
+
version: "22.2.3",
|
|
20089
20090
|
type: ProductInsightComponent,
|
|
20090
20091
|
isStandalone: false,
|
|
20091
20092
|
selector: "pw-admin-product-insight",
|
|
@@ -20185,7 +20186,7 @@ var ProductInsightComponent = class ProductInsightComponent extends AppBaseCompo
|
|
|
20185
20186
|
};
|
|
20186
20187
|
i0.ɵɵngDeclareClassMetadata({
|
|
20187
20188
|
minVersion: "12.0.0",
|
|
20188
|
-
version: "22.2.
|
|
20189
|
+
version: "22.2.3",
|
|
20189
20190
|
ngImport: i0,
|
|
20190
20191
|
type: ProductInsightComponent,
|
|
20191
20192
|
decorators: [{
|
|
@@ -20315,7 +20316,7 @@ var ProductsListComponent = class ProductsListComponent extends AppBaseComponent
|
|
|
20315
20316
|
static {
|
|
20316
20317
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
20317
20318
|
minVersion: "12.0.0",
|
|
20318
|
-
version: "22.2.
|
|
20319
|
+
version: "22.2.3",
|
|
20319
20320
|
ngImport: i0,
|
|
20320
20321
|
type: ProductsListComponent,
|
|
20321
20322
|
deps: [
|
|
@@ -20330,7 +20331,7 @@ var ProductsListComponent = class ProductsListComponent extends AppBaseComponent
|
|
|
20330
20331
|
static {
|
|
20331
20332
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
20332
20333
|
minVersion: "17.0.0",
|
|
20333
|
-
version: "22.2.
|
|
20334
|
+
version: "22.2.3",
|
|
20334
20335
|
type: ProductsListComponent,
|
|
20335
20336
|
isStandalone: false,
|
|
20336
20337
|
selector: "pw-admin-products-list",
|
|
@@ -20721,7 +20722,7 @@ var ProductsListComponent = class ProductsListComponent extends AppBaseComponent
|
|
|
20721
20722
|
};
|
|
20722
20723
|
i0.ɵɵngDeclareClassMetadata({
|
|
20723
20724
|
minVersion: "12.0.0",
|
|
20724
|
-
version: "22.2.
|
|
20725
|
+
version: "22.2.3",
|
|
20725
20726
|
ngImport: i0,
|
|
20726
20727
|
type: ProductsListComponent,
|
|
20727
20728
|
decorators: [{
|
|
@@ -20774,7 +20775,7 @@ var ProductsTabComponent = class ProductsTabComponent {
|
|
|
20774
20775
|
static {
|
|
20775
20776
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
20776
20777
|
minVersion: "12.0.0",
|
|
20777
|
-
version: "22.2.
|
|
20778
|
+
version: "22.2.3",
|
|
20778
20779
|
ngImport: i0,
|
|
20779
20780
|
type: ProductsTabComponent,
|
|
20780
20781
|
deps: [{ token: i8$1.TranslocoService }, { token: i0.DestroyRef }],
|
|
@@ -20784,7 +20785,7 @@ var ProductsTabComponent = class ProductsTabComponent {
|
|
|
20784
20785
|
static {
|
|
20785
20786
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
20786
20787
|
minVersion: "14.0.0",
|
|
20787
|
-
version: "22.2.
|
|
20788
|
+
version: "22.2.3",
|
|
20788
20789
|
type: ProductsTabComponent,
|
|
20789
20790
|
isStandalone: false,
|
|
20790
20791
|
selector: "pw-products-tabs",
|
|
@@ -20803,7 +20804,7 @@ var ProductsTabComponent = class ProductsTabComponent {
|
|
|
20803
20804
|
};
|
|
20804
20805
|
i0.ɵɵngDeclareClassMetadata({
|
|
20805
20806
|
minVersion: "12.0.0",
|
|
20806
|
-
version: "22.2.
|
|
20807
|
+
version: "22.2.3",
|
|
20807
20808
|
ngImport: i0,
|
|
20808
20809
|
type: ProductsTabComponent,
|
|
20809
20810
|
decorators: [{
|
|
@@ -20856,7 +20857,7 @@ var UsersListForProductComponent = class UsersListForProductComponent extends Ap
|
|
|
20856
20857
|
static {
|
|
20857
20858
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
20858
20859
|
minVersion: "12.0.0",
|
|
20859
|
-
version: "22.2.
|
|
20860
|
+
version: "22.2.3",
|
|
20860
20861
|
ngImport: i0,
|
|
20861
20862
|
type: UsersListForProductComponent,
|
|
20862
20863
|
deps: [
|
|
@@ -20870,7 +20871,7 @@ var UsersListForProductComponent = class UsersListForProductComponent extends Ap
|
|
|
20870
20871
|
static {
|
|
20871
20872
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
20872
20873
|
minVersion: "17.0.0",
|
|
20873
|
-
version: "22.2.
|
|
20874
|
+
version: "22.2.3",
|
|
20874
20875
|
type: UsersListForProductComponent,
|
|
20875
20876
|
isStandalone: false,
|
|
20876
20877
|
selector: "pw-users-list-for-product",
|
|
@@ -21167,7 +21168,7 @@ var UsersListForProductComponent = class UsersListForProductComponent extends Ap
|
|
|
21167
21168
|
};
|
|
21168
21169
|
i0.ɵɵngDeclareClassMetadata({
|
|
21169
21170
|
minVersion: "12.0.0",
|
|
21170
|
-
version: "22.2.
|
|
21171
|
+
version: "22.2.3",
|
|
21171
21172
|
ngImport: i0,
|
|
21172
21173
|
type: UsersListForProductComponent,
|
|
21173
21174
|
decorators: [{
|
|
@@ -21464,7 +21465,7 @@ var ResourceAdminDetailsComponent = class ResourceAdminDetailsComponent extends
|
|
|
21464
21465
|
static {
|
|
21465
21466
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
21466
21467
|
minVersion: "12.0.0",
|
|
21467
|
-
version: "22.2.
|
|
21468
|
+
version: "22.2.3",
|
|
21468
21469
|
ngImport: i0,
|
|
21469
21470
|
type: ResourceAdminDetailsComponent,
|
|
21470
21471
|
deps: [
|
|
@@ -21481,7 +21482,7 @@ var ResourceAdminDetailsComponent = class ResourceAdminDetailsComponent extends
|
|
|
21481
21482
|
static {
|
|
21482
21483
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
21483
21484
|
minVersion: "17.0.0",
|
|
21484
|
-
version: "22.2.
|
|
21485
|
+
version: "22.2.3",
|
|
21485
21486
|
type: ResourceAdminDetailsComponent,
|
|
21486
21487
|
isStandalone: false,
|
|
21487
21488
|
selector: "pw-resources-details-index",
|
|
@@ -21891,7 +21892,7 @@ var ResourceAdminDetailsComponent = class ResourceAdminDetailsComponent extends
|
|
|
21891
21892
|
__decorate([ValidateForm("form")], ResourceAdminDetailsComponent.prototype, "onSave", null);
|
|
21892
21893
|
i0.ɵɵngDeclareClassMetadata({
|
|
21893
21894
|
minVersion: "12.0.0",
|
|
21894
|
-
version: "22.2.
|
|
21895
|
+
version: "22.2.3",
|
|
21895
21896
|
ngImport: i0,
|
|
21896
21897
|
type: ResourceAdminDetailsComponent,
|
|
21897
21898
|
decorators: [{
|
|
@@ -21932,7 +21933,7 @@ var ResourcesAdminIndexComponent = class ResourcesAdminIndexComponent extends Ap
|
|
|
21932
21933
|
static {
|
|
21933
21934
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
21934
21935
|
minVersion: "12.0.0",
|
|
21935
|
-
version: "22.2.
|
|
21936
|
+
version: "22.2.3",
|
|
21936
21937
|
ngImport: i0,
|
|
21937
21938
|
type: ResourcesAdminIndexComponent,
|
|
21938
21939
|
deps: [{ token: i0.Injector }],
|
|
@@ -21942,7 +21943,7 @@ var ResourcesAdminIndexComponent = class ResourcesAdminIndexComponent extends Ap
|
|
|
21942
21943
|
static {
|
|
21943
21944
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
21944
21945
|
minVersion: "14.0.0",
|
|
21945
|
-
version: "22.2.
|
|
21946
|
+
version: "22.2.3",
|
|
21946
21947
|
type: ResourcesAdminIndexComponent,
|
|
21947
21948
|
isStandalone: false,
|
|
21948
21949
|
selector: "pw-post-admin-tabs",
|
|
@@ -21961,7 +21962,7 @@ var ResourcesAdminIndexComponent = class ResourcesAdminIndexComponent extends Ap
|
|
|
21961
21962
|
};
|
|
21962
21963
|
i0.ɵɵngDeclareClassMetadata({
|
|
21963
21964
|
minVersion: "12.0.0",
|
|
21964
|
-
version: "22.2.
|
|
21965
|
+
version: "22.2.3",
|
|
21965
21966
|
ngImport: i0,
|
|
21966
21967
|
type: ResourcesAdminIndexComponent,
|
|
21967
21968
|
decorators: [{
|
|
@@ -22095,7 +22096,7 @@ var ResourcesIndexComponent = class ResourcesIndexComponent extends AppBaseCompo
|
|
|
22095
22096
|
static {
|
|
22096
22097
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
22097
22098
|
minVersion: "12.0.0",
|
|
22098
|
-
version: "22.2.
|
|
22099
|
+
version: "22.2.3",
|
|
22099
22100
|
ngImport: i0,
|
|
22100
22101
|
type: ResourcesIndexComponent,
|
|
22101
22102
|
deps: [
|
|
@@ -22111,13 +22112,13 @@ var ResourcesIndexComponent = class ResourcesIndexComponent extends AppBaseCompo
|
|
|
22111
22112
|
static {
|
|
22112
22113
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
22113
22114
|
minVersion: "17.0.0",
|
|
22114
|
-
version: "22.2.
|
|
22115
|
+
version: "22.2.3",
|
|
22115
22116
|
type: ResourcesIndexComponent,
|
|
22116
22117
|
isStandalone: false,
|
|
22117
22118
|
selector: "pw-resources-index",
|
|
22118
22119
|
usesInheritance: true,
|
|
22119
22120
|
ngImport: i0,
|
|
22120
|
-
template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">{{'Resource.Posts.Title' | transloco}}</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Resource.Add' | transloco}}\n </button>\n </div>\n</div>\n<div class=\"col-12 mb-3\">\n <p [innerHTML]=\"'Resource.Description' | transloco\"></p>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"9\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\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 stateKey=\"pw-table.resources-index\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"resources-index-tags\"\n [showToggleAll]=\"true\"\n [options]=\"tagOptions\"\n [(ngModel)]=\"selectedTags\"\n (onChange)=\"onTagChange($event)\"\n placeholder=\"Filter by tags\"\n [showHeader]=\"true\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"text-end\">\n <label for=\"resources-index-search\" class=\"visually-hidden\">Search Resources</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"resources-index-search\"\n name=\"resources-index-search\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n placeholder=\"Search resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"search-input\"\n aria-label=\"Search resources...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sort-icon field=\"title\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Resource.Posts.Tags' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"showcase\">\n {{ 'Resource.Posts.Showcase' | transloco }}\n <p-sort-icon field=\"showcase\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"when\">\n {{ 'Resource.Posts.When' | transloco }}\n <p-sort-icon field=\"when\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sort-icon field=\"published_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sort-icon field=\"accepted_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sort-icon field=\"view\"></p-sort-icon>\n </th>\n <th scope=\"true\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n @if (item.author?.avatar) {\n <img\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n @if (!item.author?.avatar) {\n <img\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources/view', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"tags\">\n @for (tag of item?.tags?.slice(0, 3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\">{{ tag.name }}</span>\n }\n\n @if (item.expandedTags) {\n <span>\n @for (tag of item?.tags?.slice(3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\" >{{ tag.name }}</span>\n }\n </span>\n }\n\n @if (item?.tags?.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expandedTags = !item.expandedTags\">\n <span>...</span>\n </a>\n </span>\n }\n </td>\n\n <td data-head=\"showcase\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.showcase }\"\n [ngClass]=\"item?.showcase ? 'bg-success' : 'bg-secondary'\"\n class=\"badge\">{{ !!item?.showcase }}</span>\n </td>\n <td data-head=\"when\">{{ item.when | dateFormat }}</td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"navigateToResourceDetails(item)\"\n (click)=\"navigateToResourceDetails(item)\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Insight\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n @if (data.object_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n</div>\n<div class=\"col-12 text-center\">\n @if (data.unfiltered_count === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n >\n </pw-no-data>\n }\n</div>\n",
|
|
22121
|
+
template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">{{'Resource.Posts.Title' | transloco}}</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Resource.Add' | transloco}}\n </button>\n </div>\n</div>\n<div class=\"col-12 mb-3\">\n <p [innerHTML]=\"'Resource.Description' | transloco\"></p>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"9\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\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 stateKey=\"pw-table.resources-index\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"resources-index-tags\"\n [showToggleAll]=\"true\"\n [options]=\"tagOptions\"\n [(ngModel)]=\"selectedTags\"\n (onChange)=\"onTagChange($event)\"\n placeholder=\"Filter by tags\"\n [showHeader]=\"true\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"text-end\">\n <label for=\"resources-index-search\" class=\"visually-hidden\">Search Resources</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"resources-index-search\"\n name=\"resources-index-search\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n placeholder=\"Search resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"search-input\"\n aria-label=\"Search resources...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sort-icon field=\"title\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Resource.Posts.Tags' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"showcase\">\n {{ 'Resource.Posts.Showcase' | transloco }}\n <p-sort-icon field=\"showcase\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"when\">\n {{ 'Resource.Posts.When' | transloco }}\n <p-sort-icon field=\"when\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sort-icon field=\"published_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sort-icon field=\"accepted_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sort-icon field=\"view\"></p-sort-icon>\n </th>\n <th scope=\"true\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"Title\" [attr.data-label]=\"'Resource.Posts.Author' | transloco\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n @if (item.author?.avatar) {\n <img\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n @if (!item.author?.avatar) {\n <img\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources/view', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"tags\" [attr.data-label]=\"'Resource.Posts.Tags' | transloco\">\n @for (tag of item?.tags?.slice(0, 3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\">{{ tag.name }}</span>\n }\n\n @if (item.expandedTags) {\n <span>\n @for (tag of item?.tags?.slice(3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\" >{{ tag.name }}</span>\n }\n </span>\n }\n\n @if (item?.tags?.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expandedTags = !item.expandedTags\">\n <span>...</span>\n </a>\n </span>\n }\n </td>\n\n <td data-head=\"showcase\" [attr.data-label]=\"'Resource.Posts.Showcase' | transloco\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.showcase }\"\n [ngClass]=\"item?.showcase ? 'bg-success' : 'bg-secondary'\"\n class=\"badge\">{{ !!item?.showcase }}</span>\n </td>\n <td data-head=\"when\" [attr.data-label]=\"'Resource.Posts.When' | transloco\">{{ item.when | dateFormat }}</td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"navigateToResourceDetails(item)\"\n (click)=\"navigateToResourceDetails(item)\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Insight\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n @if (data.object_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n</div>\n<div class=\"col-12 text-center\">\n @if (data.unfiltered_count === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n >\n </pw-no-data>\n }\n</div>\n",
|
|
22121
22122
|
styles: [".search-input{max-width:90%}\n"],
|
|
22122
22123
|
dependencies: [
|
|
22123
22124
|
{
|
|
@@ -22510,7 +22511,7 @@ var ResourcesIndexComponent = class ResourcesIndexComponent extends AppBaseCompo
|
|
|
22510
22511
|
};
|
|
22511
22512
|
i0.ɵɵngDeclareClassMetadata({
|
|
22512
22513
|
minVersion: "12.0.0",
|
|
22513
|
-
version: "22.2.
|
|
22514
|
+
version: "22.2.3",
|
|
22514
22515
|
ngImport: i0,
|
|
22515
22516
|
type: ResourcesIndexComponent,
|
|
22516
22517
|
decorators: [{
|
|
@@ -22518,7 +22519,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
22518
22519
|
args: [{
|
|
22519
22520
|
selector: "pw-resources-index",
|
|
22520
22521
|
standalone: false,
|
|
22521
|
-
template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">{{'Resource.Posts.Title' | transloco}}</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Resource.Add' | transloco}}\n </button>\n </div>\n</div>\n<div class=\"col-12 mb-3\">\n <p [innerHTML]=\"'Resource.Description' | transloco\"></p>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"9\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\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 stateKey=\"pw-table.resources-index\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"resources-index-tags\"\n [showToggleAll]=\"true\"\n [options]=\"tagOptions\"\n [(ngModel)]=\"selectedTags\"\n (onChange)=\"onTagChange($event)\"\n placeholder=\"Filter by tags\"\n [showHeader]=\"true\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"text-end\">\n <label for=\"resources-index-search\" class=\"visually-hidden\">Search Resources</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"resources-index-search\"\n name=\"resources-index-search\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n placeholder=\"Search resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"search-input\"\n aria-label=\"Search resources...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sort-icon field=\"title\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Resource.Posts.Tags' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"showcase\">\n {{ 'Resource.Posts.Showcase' | transloco }}\n <p-sort-icon field=\"showcase\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"when\">\n {{ 'Resource.Posts.When' | transloco }}\n <p-sort-icon field=\"when\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sort-icon field=\"published_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sort-icon field=\"accepted_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sort-icon field=\"view\"></p-sort-icon>\n </th>\n <th scope=\"true\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n @if (item.author?.avatar) {\n <img\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n @if (!item.author?.avatar) {\n <img\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources/view', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"tags\">\n @for (tag of item?.tags?.slice(0, 3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\">{{ tag.name }}</span>\n }\n\n @if (item.expandedTags) {\n <span>\n @for (tag of item?.tags?.slice(3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\" >{{ tag.name }}</span>\n }\n </span>\n }\n\n @if (item?.tags?.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expandedTags = !item.expandedTags\">\n <span>...</span>\n </a>\n </span>\n }\n </td>\n\n <td data-head=\"showcase\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.showcase }\"\n [ngClass]=\"item?.showcase ? 'bg-success' : 'bg-secondary'\"\n class=\"badge\">{{ !!item?.showcase }}</span>\n </td>\n <td data-head=\"when\">{{ item.when | dateFormat }}</td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"navigateToResourceDetails(item)\"\n (click)=\"navigateToResourceDetails(item)\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Insight\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n @if (data.object_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n</div>\n<div class=\"col-12 text-center\">\n @if (data.unfiltered_count === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n >\n </pw-no-data>\n }\n</div>\n",
|
|
22522
|
+
template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">{{'Resource.Posts.Title' | transloco}}</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Resource.Add' | transloco}}\n </button>\n </div>\n</div>\n<div class=\"col-12 mb-3\">\n <p [innerHTML]=\"'Resource.Description' | transloco\"></p>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"9\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\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 stateKey=\"pw-table.resources-index\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"resources-index-tags\"\n [showToggleAll]=\"true\"\n [options]=\"tagOptions\"\n [(ngModel)]=\"selectedTags\"\n (onChange)=\"onTagChange($event)\"\n placeholder=\"Filter by tags\"\n [showHeader]=\"true\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"text-end\">\n <label for=\"resources-index-search\" class=\"visually-hidden\">Search Resources</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"resources-index-search\"\n name=\"resources-index-search\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n placeholder=\"Search resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"search-input\"\n aria-label=\"Search resources...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sort-icon field=\"title\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Resource.Posts.Tags' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"showcase\">\n {{ 'Resource.Posts.Showcase' | transloco }}\n <p-sort-icon field=\"showcase\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"when\">\n {{ 'Resource.Posts.When' | transloco }}\n <p-sort-icon field=\"when\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sort-icon field=\"published_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sort-icon field=\"accepted_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sort-icon field=\"view\"></p-sort-icon>\n </th>\n <th scope=\"true\" class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"Title\" [attr.data-label]=\"'Resource.Posts.Author' | transloco\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n @if (item.author?.avatar) {\n <img\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n @if (!item.author?.avatar) {\n <img\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n }\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources/view', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"tags\" [attr.data-label]=\"'Resource.Posts.Tags' | transloco\">\n @for (tag of item?.tags?.slice(0, 3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\">{{ tag.name }}</span>\n }\n\n @if (item.expandedTags) {\n <span>\n @for (tag of item?.tags?.slice(3); track tag) {\n <span\n class=\"badge m-1\"\n [appDynamicBadge]=\"{ itemsArray: item?.tags, item: tag }\"\n [colorByName]=\"true\"\n [dataName]=\"tag.name\"\n color=\"cyan\" >{{ tag.name }}</span>\n }\n </span>\n }\n\n @if (item?.tags?.length > 3) {\n <span class=\"fw-bold\">\n <a (click)=\"item.expandedTags = !item.expandedTags\">\n <span>...</span>\n </a>\n </span>\n }\n </td>\n\n <td data-head=\"showcase\" [attr.data-label]=\"'Resource.Posts.Showcase' | transloco\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.showcase }\"\n [ngClass]=\"item?.showcase ? 'bg-success' : 'bg-secondary'\"\n class=\"badge\">{{ !!item?.showcase }}</span>\n </td>\n <td data-head=\"when\" [attr.data-label]=\"'Resource.Posts.When' | transloco\">{{ item.when | dateFormat }}</td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"navigateToResourceDetails(item)\"\n (click)=\"navigateToResourceDetails(item)\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Insight\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n @if (data.object_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n</div>\n<div class=\"col-12 text-center\">\n @if (data.unfiltered_count === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n >\n </pw-no-data>\n }\n</div>\n",
|
|
22522
22523
|
styles: [".search-input{max-width:90%}\n"]
|
|
22523
22524
|
}]
|
|
22524
22525
|
}],
|
|
@@ -22562,7 +22563,7 @@ var ResourcesInsightComponent = class ResourcesInsightComponent extends AppBaseC
|
|
|
22562
22563
|
static {
|
|
22563
22564
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
22564
22565
|
minVersion: "12.0.0",
|
|
22565
|
-
version: "22.2.
|
|
22566
|
+
version: "22.2.3",
|
|
22566
22567
|
ngImport: i0,
|
|
22567
22568
|
type: ResourcesInsightComponent,
|
|
22568
22569
|
deps: [
|
|
@@ -22576,7 +22577,7 @@ var ResourcesInsightComponent = class ResourcesInsightComponent extends AppBaseC
|
|
|
22576
22577
|
static {
|
|
22577
22578
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
22578
22579
|
minVersion: "17.0.0",
|
|
22579
|
-
version: "22.2.
|
|
22580
|
+
version: "22.2.3",
|
|
22580
22581
|
type: ResourcesInsightComponent,
|
|
22581
22582
|
isStandalone: false,
|
|
22582
22583
|
selector: "pw-resources-insight",
|
|
@@ -22675,7 +22676,7 @@ var ResourcesInsightComponent = class ResourcesInsightComponent extends AppBaseC
|
|
|
22675
22676
|
};
|
|
22676
22677
|
i0.ɵɵngDeclareClassMetadata({
|
|
22677
22678
|
minVersion: "12.0.0",
|
|
22678
|
-
version: "22.2.
|
|
22679
|
+
version: "22.2.3",
|
|
22679
22680
|
ngImport: i0,
|
|
22680
22681
|
type: ResourcesInsightComponent,
|
|
22681
22682
|
decorators: [{
|
|
@@ -22734,7 +22735,7 @@ var ResourcesListsInsightComponent = class ResourcesListsInsightComponent extend
|
|
|
22734
22735
|
static {
|
|
22735
22736
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
22736
22737
|
minVersion: "12.0.0",
|
|
22737
|
-
version: "22.2.
|
|
22738
|
+
version: "22.2.3",
|
|
22738
22739
|
ngImport: i0,
|
|
22739
22740
|
type: ResourcesListsInsightComponent,
|
|
22740
22741
|
deps: [
|
|
@@ -22748,7 +22749,7 @@ var ResourcesListsInsightComponent = class ResourcesListsInsightComponent extend
|
|
|
22748
22749
|
static {
|
|
22749
22750
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
22750
22751
|
minVersion: "17.0.0",
|
|
22751
|
-
version: "22.2.
|
|
22752
|
+
version: "22.2.3",
|
|
22752
22753
|
type: ResourcesListsInsightComponent,
|
|
22753
22754
|
isStandalone: false,
|
|
22754
22755
|
selector: "resources-posts-lists-insight",
|
|
@@ -22984,7 +22985,7 @@ var ResourcesListsInsightComponent = class ResourcesListsInsightComponent extend
|
|
|
22984
22985
|
};
|
|
22985
22986
|
i0.ɵɵngDeclareClassMetadata({
|
|
22986
22987
|
minVersion: "12.0.0",
|
|
22987
|
-
version: "22.2.
|
|
22988
|
+
version: "22.2.3",
|
|
22988
22989
|
ngImport: i0,
|
|
22989
22990
|
type: ResourcesListsInsightComponent,
|
|
22990
22991
|
decorators: [{
|
|
@@ -23124,7 +23125,7 @@ var AgentDetailsComponent = class AgentDetailsComponent extends AppBaseComponent
|
|
|
23124
23125
|
static {
|
|
23125
23126
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
23126
23127
|
minVersion: "12.0.0",
|
|
23127
|
-
version: "22.2.
|
|
23128
|
+
version: "22.2.3",
|
|
23128
23129
|
ngImport: i0,
|
|
23129
23130
|
type: AgentDetailsComponent,
|
|
23130
23131
|
deps: [
|
|
@@ -23140,7 +23141,7 @@ var AgentDetailsComponent = class AgentDetailsComponent extends AppBaseComponent
|
|
|
23140
23141
|
static {
|
|
23141
23142
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
23142
23143
|
minVersion: "17.0.0",
|
|
23143
|
-
version: "22.2.
|
|
23144
|
+
version: "22.2.3",
|
|
23144
23145
|
type: AgentDetailsComponent,
|
|
23145
23146
|
isStandalone: false,
|
|
23146
23147
|
selector: "pw-agent-details",
|
|
@@ -23502,7 +23503,7 @@ var AgentDetailsComponent = class AgentDetailsComponent extends AppBaseComponent
|
|
|
23502
23503
|
__decorate([ValidateForm("form")], AgentDetailsComponent.prototype, "updateDetails", null);
|
|
23503
23504
|
i0.ɵɵngDeclareClassMetadata({
|
|
23504
23505
|
minVersion: "12.0.0",
|
|
23505
|
-
version: "22.2.
|
|
23506
|
+
version: "22.2.3",
|
|
23506
23507
|
ngImport: i0,
|
|
23507
23508
|
type: AgentDetailsComponent,
|
|
23508
23509
|
decorators: [{
|
|
@@ -23574,7 +23575,7 @@ var SubscriptionProductsComponent = class SubscriptionProductsComponent extends
|
|
|
23574
23575
|
static {
|
|
23575
23576
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
23576
23577
|
minVersion: "12.0.0",
|
|
23577
|
-
version: "22.2.
|
|
23578
|
+
version: "22.2.3",
|
|
23578
23579
|
ngImport: i0,
|
|
23579
23580
|
type: SubscriptionProductsComponent,
|
|
23580
23581
|
deps: [
|
|
@@ -23589,7 +23590,7 @@ var SubscriptionProductsComponent = class SubscriptionProductsComponent extends
|
|
|
23589
23590
|
static {
|
|
23590
23591
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
23591
23592
|
minVersion: "17.0.0",
|
|
23592
|
-
version: "22.2.
|
|
23593
|
+
version: "22.2.3",
|
|
23593
23594
|
type: SubscriptionProductsComponent,
|
|
23594
23595
|
isStandalone: false,
|
|
23595
23596
|
selector: "pw-subscription-products",
|
|
@@ -23873,7 +23874,7 @@ var SubscriptionProductsComponent = class SubscriptionProductsComponent extends
|
|
|
23873
23874
|
};
|
|
23874
23875
|
i0.ɵɵngDeclareClassMetadata({
|
|
23875
23876
|
minVersion: "12.0.0",
|
|
23876
|
-
version: "22.2.
|
|
23877
|
+
version: "22.2.3",
|
|
23877
23878
|
ngImport: i0,
|
|
23878
23879
|
type: SubscriptionProductsComponent,
|
|
23879
23880
|
decorators: [{
|
|
@@ -24020,7 +24021,7 @@ var AddMembersComponent = class AddMembersComponent extends AppBaseComponent {
|
|
|
24020
24021
|
static {
|
|
24021
24022
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
24022
24023
|
minVersion: "12.0.0",
|
|
24023
|
-
version: "22.2.
|
|
24024
|
+
version: "22.2.3",
|
|
24024
24025
|
ngImport: i0,
|
|
24025
24026
|
type: AddMembersComponent,
|
|
24026
24027
|
deps: [
|
|
@@ -24037,7 +24038,7 @@ var AddMembersComponent = class AddMembersComponent extends AppBaseComponent {
|
|
|
24037
24038
|
static {
|
|
24038
24039
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
24039
24040
|
minVersion: "17.0.0",
|
|
24040
|
-
version: "22.2.
|
|
24041
|
+
version: "22.2.3",
|
|
24041
24042
|
type: AddMembersComponent,
|
|
24042
24043
|
isStandalone: false,
|
|
24043
24044
|
selector: "pw-add-members",
|
|
@@ -24134,7 +24135,7 @@ var AddMembersComponent = class AddMembersComponent extends AppBaseComponent {
|
|
|
24134
24135
|
__decorate([ValidateForm("form")], AddMembersComponent.prototype, "onSignUpMember", null);
|
|
24135
24136
|
i0.ɵɵngDeclareClassMetadata({
|
|
24136
24137
|
minVersion: "12.0.0",
|
|
24137
|
-
version: "22.2.
|
|
24138
|
+
version: "22.2.3",
|
|
24138
24139
|
ngImport: i0,
|
|
24139
24140
|
type: AddMembersComponent,
|
|
24140
24141
|
decorators: [{
|
|
@@ -24332,7 +24333,7 @@ var SubscriptionUsersComponent = class SubscriptionUsersComponent extends AppBas
|
|
|
24332
24333
|
static {
|
|
24333
24334
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
24334
24335
|
minVersion: "12.0.0",
|
|
24335
|
-
version: "22.2.
|
|
24336
|
+
version: "22.2.3",
|
|
24336
24337
|
ngImport: i0,
|
|
24337
24338
|
type: SubscriptionUsersComponent,
|
|
24338
24339
|
deps: [
|
|
@@ -24351,7 +24352,7 @@ var SubscriptionUsersComponent = class SubscriptionUsersComponent extends AppBas
|
|
|
24351
24352
|
static {
|
|
24352
24353
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
24353
24354
|
minVersion: "17.0.0",
|
|
24354
|
-
version: "22.2.
|
|
24355
|
+
version: "22.2.3",
|
|
24355
24356
|
type: SubscriptionUsersComponent,
|
|
24356
24357
|
isStandalone: false,
|
|
24357
24358
|
selector: "pw-subscription-users",
|
|
@@ -24698,7 +24699,7 @@ var SubscriptionUsersComponent = class SubscriptionUsersComponent extends AppBas
|
|
|
24698
24699
|
};
|
|
24699
24700
|
i0.ɵɵngDeclareClassMetadata({
|
|
24700
24701
|
minVersion: "12.0.0",
|
|
24701
|
-
version: "22.2.
|
|
24702
|
+
version: "22.2.3",
|
|
24702
24703
|
ngImport: i0,
|
|
24703
24704
|
type: SubscriptionUsersComponent,
|
|
24704
24705
|
decorators: [{
|
|
@@ -24860,7 +24861,7 @@ var SubscriptionAgentsListComponent = class SubscriptionAgentsListComponent exte
|
|
|
24860
24861
|
static {
|
|
24861
24862
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
24862
24863
|
minVersion: "12.0.0",
|
|
24863
|
-
version: "22.2.
|
|
24864
|
+
version: "22.2.3",
|
|
24864
24865
|
ngImport: i0,
|
|
24865
24866
|
type: SubscriptionAgentsListComponent,
|
|
24866
24867
|
deps: [
|
|
@@ -24876,7 +24877,7 @@ var SubscriptionAgentsListComponent = class SubscriptionAgentsListComponent exte
|
|
|
24876
24877
|
static {
|
|
24877
24878
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
24878
24879
|
minVersion: "17.0.0",
|
|
24879
|
-
version: "22.2.
|
|
24880
|
+
version: "22.2.3",
|
|
24880
24881
|
type: SubscriptionAgentsListComponent,
|
|
24881
24882
|
isStandalone: false,
|
|
24882
24883
|
selector: "pw-subscription-agents-list",
|
|
@@ -25408,7 +25409,7 @@ var SubscriptionAgentsListComponent = class SubscriptionAgentsListComponent exte
|
|
|
25408
25409
|
};
|
|
25409
25410
|
i0.ɵɵngDeclareClassMetadata({
|
|
25410
25411
|
minVersion: "12.0.0",
|
|
25411
|
-
version: "22.2.
|
|
25412
|
+
version: "22.2.3",
|
|
25412
25413
|
ngImport: i0,
|
|
25413
25414
|
type: SubscriptionAgentsListComponent,
|
|
25414
25415
|
decorators: [{
|
|
@@ -25513,7 +25514,7 @@ var SubscriptionInvoicesComponent = class SubscriptionInvoicesComponent extends
|
|
|
25513
25514
|
static {
|
|
25514
25515
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
25515
25516
|
minVersion: "12.0.0",
|
|
25516
|
-
version: "22.2.
|
|
25517
|
+
version: "22.2.3",
|
|
25517
25518
|
ngImport: i0,
|
|
25518
25519
|
type: SubscriptionInvoicesComponent,
|
|
25519
25520
|
deps: [
|
|
@@ -25527,7 +25528,7 @@ var SubscriptionInvoicesComponent = class SubscriptionInvoicesComponent extends
|
|
|
25527
25528
|
static {
|
|
25528
25529
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
25529
25530
|
minVersion: "17.0.0",
|
|
25530
|
-
version: "22.2.
|
|
25531
|
+
version: "22.2.3",
|
|
25531
25532
|
type: SubscriptionInvoicesComponent,
|
|
25532
25533
|
isStandalone: false,
|
|
25533
25534
|
selector: "pw-subscription-invoices",
|
|
@@ -25846,7 +25847,7 @@ var SubscriptionInvoicesComponent = class SubscriptionInvoicesComponent extends
|
|
|
25846
25847
|
};
|
|
25847
25848
|
i0.ɵɵngDeclareClassMetadata({
|
|
25848
25849
|
minVersion: "12.0.0",
|
|
25849
|
-
version: "22.2.
|
|
25850
|
+
version: "22.2.3",
|
|
25850
25851
|
ngImport: i0,
|
|
25851
25852
|
type: SubscriptionInvoicesComponent,
|
|
25852
25853
|
decorators: [{
|
|
@@ -26065,7 +26066,7 @@ var SubscriptionDetailsComponent = class SubscriptionDetailsComponent extends Ap
|
|
|
26065
26066
|
static {
|
|
26066
26067
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
26067
26068
|
minVersion: "12.0.0",
|
|
26068
|
-
version: "22.2.
|
|
26069
|
+
version: "22.2.3",
|
|
26069
26070
|
ngImport: i0,
|
|
26070
26071
|
type: SubscriptionDetailsComponent,
|
|
26071
26072
|
deps: [
|
|
@@ -26083,7 +26084,7 @@ var SubscriptionDetailsComponent = class SubscriptionDetailsComponent extends Ap
|
|
|
26083
26084
|
static {
|
|
26084
26085
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
26085
26086
|
minVersion: "17.0.0",
|
|
26086
|
-
version: "22.2.
|
|
26087
|
+
version: "22.2.3",
|
|
26087
26088
|
type: SubscriptionDetailsComponent,
|
|
26088
26089
|
isStandalone: false,
|
|
26089
26090
|
selector: "pw-subscription-details",
|
|
@@ -26562,7 +26563,7 @@ var SubscriptionDetailsComponent = class SubscriptionDetailsComponent extends Ap
|
|
|
26562
26563
|
};
|
|
26563
26564
|
i0.ɵɵngDeclareClassMetadata({
|
|
26564
26565
|
minVersion: "12.0.0",
|
|
26565
|
-
version: "22.2.
|
|
26566
|
+
version: "22.2.3",
|
|
26566
26567
|
ngImport: i0,
|
|
26567
26568
|
type: SubscriptionDetailsComponent,
|
|
26568
26569
|
decorators: [{
|
|
@@ -26731,7 +26732,7 @@ var SubscriptionProductDetailsComponent = class SubscriptionProductDetailsCompon
|
|
|
26731
26732
|
static {
|
|
26732
26733
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
26733
26734
|
minVersion: "12.0.0",
|
|
26734
|
-
version: "22.2.
|
|
26735
|
+
version: "22.2.3",
|
|
26735
26736
|
ngImport: i0,
|
|
26736
26737
|
type: SubscriptionProductDetailsComponent,
|
|
26737
26738
|
deps: [
|
|
@@ -26748,7 +26749,7 @@ var SubscriptionProductDetailsComponent = class SubscriptionProductDetailsCompon
|
|
|
26748
26749
|
static {
|
|
26749
26750
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
26750
26751
|
minVersion: "17.0.0",
|
|
26751
|
-
version: "22.2.
|
|
26752
|
+
version: "22.2.3",
|
|
26752
26753
|
type: SubscriptionProductDetailsComponent,
|
|
26753
26754
|
isStandalone: false,
|
|
26754
26755
|
selector: "pw-subscription-product-details",
|
|
@@ -27020,7 +27021,7 @@ var SubscriptionProductDetailsComponent = class SubscriptionProductDetailsCompon
|
|
|
27020
27021
|
__decorate([ValidateForm("form")], SubscriptionProductDetailsComponent.prototype, "onSave", null);
|
|
27021
27022
|
i0.ɵɵngDeclareClassMetadata({
|
|
27022
27023
|
minVersion: "12.0.0",
|
|
27023
|
-
version: "22.2.
|
|
27024
|
+
version: "22.2.3",
|
|
27024
27025
|
ngImport: i0,
|
|
27025
27026
|
type: SubscriptionProductDetailsComponent,
|
|
27026
27027
|
decorators: [{
|
|
@@ -27079,7 +27080,7 @@ var InsightComponent = class InsightComponent extends AppBaseComponent {
|
|
|
27079
27080
|
static {
|
|
27080
27081
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27081
27082
|
minVersion: "12.0.0",
|
|
27082
|
-
version: "22.2.
|
|
27083
|
+
version: "22.2.3",
|
|
27083
27084
|
ngImport: i0,
|
|
27084
27085
|
type: InsightComponent,
|
|
27085
27086
|
deps: [
|
|
@@ -27093,7 +27094,7 @@ var InsightComponent = class InsightComponent extends AppBaseComponent {
|
|
|
27093
27094
|
static {
|
|
27094
27095
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27095
27096
|
minVersion: "17.0.0",
|
|
27096
|
-
version: "22.2.
|
|
27097
|
+
version: "22.2.3",
|
|
27097
27098
|
type: InsightComponent,
|
|
27098
27099
|
isStandalone: false,
|
|
27099
27100
|
selector: "pw-admin-subscription-insight",
|
|
@@ -27193,7 +27194,7 @@ var InsightComponent = class InsightComponent extends AppBaseComponent {
|
|
|
27193
27194
|
};
|
|
27194
27195
|
i0.ɵɵngDeclareClassMetadata({
|
|
27195
27196
|
minVersion: "12.0.0",
|
|
27196
|
-
version: "22.2.
|
|
27197
|
+
version: "22.2.3",
|
|
27197
27198
|
ngImport: i0,
|
|
27198
27199
|
type: InsightComponent,
|
|
27199
27200
|
decorators: [{
|
|
@@ -27294,7 +27295,7 @@ var SubscriptionInsightNpsComponent = class SubscriptionInsightNpsComponent exte
|
|
|
27294
27295
|
static {
|
|
27295
27296
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27296
27297
|
minVersion: "12.0.0",
|
|
27297
|
-
version: "22.2.
|
|
27298
|
+
version: "22.2.3",
|
|
27298
27299
|
ngImport: i0,
|
|
27299
27300
|
type: SubscriptionInsightNpsComponent,
|
|
27300
27301
|
deps: [
|
|
@@ -27310,7 +27311,7 @@ var SubscriptionInsightNpsComponent = class SubscriptionInsightNpsComponent exte
|
|
|
27310
27311
|
static {
|
|
27311
27312
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27312
27313
|
minVersion: "17.0.0",
|
|
27313
|
-
version: "22.2.
|
|
27314
|
+
version: "22.2.3",
|
|
27314
27315
|
type: SubscriptionInsightNpsComponent,
|
|
27315
27316
|
isStandalone: false,
|
|
27316
27317
|
selector: "pw-subscription-insight-nps",
|
|
@@ -27323,7 +27324,7 @@ var SubscriptionInsightNpsComponent = class SubscriptionInsightNpsComponent exte
|
|
|
27323
27324
|
}],
|
|
27324
27325
|
usesInheritance: true,
|
|
27325
27326
|
ngImport: i0,
|
|
27326
|
-
template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n@if (graphLoading && !graph) {\n <pw-skeleton-chart class=\"d-block mt-3\" />\n}\n\n@if (graph) {\n <div [class.opacity-50]=\"graphLoading\" [attr.aria-busy]=\"graphLoading\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n </div>\n}\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"false\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n stateKey=\"pw-table.subscription-insight-nps\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">User Name</th>\n <th pResizableColumn scope=\"true\">Product Name</th>\n <th pResizableColumn scope=\"true\">Feedback Question Name</th>\n <th pResizableColumn scope=\"true\">Comment</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sort-icon field=\"value\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\">\n @if (item?.comment) {\n <button\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n }\n </td>\n <td data-head=\"value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success-muted':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (currentUser && item.user_id !== currentUser.id) {\n <li pTooltip=\"Send Chat Message\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n</div>\n@if (totalRecords === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Feedback Found\"> </pw-no-data>\n </div>\n}\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n",
|
|
27327
|
+
template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n@if (graphLoading && !graph) {\n <pw-skeleton-chart class=\"d-block mt-3\" />\n}\n\n@if (graph) {\n <div [class.opacity-50]=\"graphLoading\" [attr.aria-busy]=\"graphLoading\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n </div>\n}\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"false\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n stateKey=\"pw-table.subscription-insight-nps\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">User Name</th>\n <th pResizableColumn scope=\"true\">Product Name</th>\n <th pResizableColumn scope=\"true\">Feedback Question Name</th>\n <th pResizableColumn scope=\"true\">Comment</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sort-icon field=\"value\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\" data-label=\"Created At\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\" data-label=\"User Name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\" data-label=\"Product Name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\" data-label=\"Feedback Question Name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\" data-label=\"Comment\">\n @if (item?.comment) {\n <button\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n }\n </td>\n <td data-head=\"value\" data-label=\"Value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success-muted':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (currentUser && item.user_id !== currentUser.id) {\n <li pTooltip=\"Send Chat Message\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n</div>\n@if (totalRecords === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Feedback Found\"> </pw-no-data>\n </div>\n}\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n",
|
|
27327
27328
|
dependencies: [
|
|
27328
27329
|
{
|
|
27329
27330
|
kind: "component",
|
|
@@ -27640,7 +27641,7 @@ var SubscriptionInsightNpsComponent = class SubscriptionInsightNpsComponent exte
|
|
|
27640
27641
|
};
|
|
27641
27642
|
i0.ɵɵngDeclareClassMetadata({
|
|
27642
27643
|
minVersion: "12.0.0",
|
|
27643
|
-
version: "22.2.
|
|
27644
|
+
version: "22.2.3",
|
|
27644
27645
|
ngImport: i0,
|
|
27645
27646
|
type: SubscriptionInsightNpsComponent,
|
|
27646
27647
|
decorators: [{
|
|
@@ -27648,7 +27649,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
27648
27649
|
args: [{
|
|
27649
27650
|
selector: "pw-subscription-insight-nps",
|
|
27650
27651
|
standalone: false,
|
|
27651
|
-
template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n@if (graphLoading && !graph) {\n <pw-skeleton-chart class=\"d-block mt-3\" />\n}\n\n@if (graph) {\n <div [class.opacity-50]=\"graphLoading\" [attr.aria-busy]=\"graphLoading\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n </div>\n}\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"false\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n stateKey=\"pw-table.subscription-insight-nps\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">User Name</th>\n <th pResizableColumn scope=\"true\">Product Name</th>\n <th pResizableColumn scope=\"true\">Feedback Question Name</th>\n <th pResizableColumn scope=\"true\">Comment</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sort-icon field=\"value\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\">\n @if (item?.comment) {\n <button\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n }\n </td>\n <td data-head=\"value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success-muted':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (currentUser && item.user_id !== currentUser.id) {\n <li pTooltip=\"Send Chat Message\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n</div>\n@if (totalRecords === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Feedback Found\"> </pw-no-data>\n </div>\n}\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n"
|
|
27652
|
+
template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n@if (graphLoading && !graph) {\n <pw-skeleton-chart class=\"d-block mt-3\" />\n}\n\n@if (graph) {\n <div [class.opacity-50]=\"graphLoading\" [attr.aria-busy]=\"graphLoading\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n </div>\n}\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"7\" [showCaption]=\"false\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\"\n [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\"\n stateKey=\"pw-table.subscription-insight-nps\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sort-icon field=\"created_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">User Name</th>\n <th pResizableColumn scope=\"true\">Product Name</th>\n <th pResizableColumn scope=\"true\">Feedback Question Name</th>\n <th pResizableColumn scope=\"true\">Comment</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sort-icon field=\"value\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"created_at\" data-label=\"Created At\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\" data-label=\"User Name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\" data-label=\"Product Name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\" data-label=\"Feedback Question Name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\" data-label=\"Comment\">\n @if (item?.comment) {\n <button\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n }\n </td>\n <td data-head=\"value\" data-label=\"Value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success-muted':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n @if (currentUser && item.user_id !== currentUser.id) {\n <li pTooltip=\"Send Chat Message\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"tt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n</div>\n@if (totalRecords === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" message=\"No Feedback Found\"> </pw-no-data>\n </div>\n}\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n"
|
|
27652
27653
|
}]
|
|
27653
27654
|
}],
|
|
27654
27655
|
ctorParameters: () => [
|
|
@@ -27692,7 +27693,7 @@ var BaseSubscriptionInsightComponent = class BaseSubscriptionInsightComponent ex
|
|
|
27692
27693
|
static {
|
|
27693
27694
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27694
27695
|
minVersion: "12.0.0",
|
|
27695
|
-
version: "22.2.
|
|
27696
|
+
version: "22.2.3",
|
|
27696
27697
|
ngImport: i0,
|
|
27697
27698
|
type: BaseSubscriptionInsightComponent,
|
|
27698
27699
|
deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }],
|
|
@@ -27702,7 +27703,7 @@ var BaseSubscriptionInsightComponent = class BaseSubscriptionInsightComponent ex
|
|
|
27702
27703
|
static {
|
|
27703
27704
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27704
27705
|
minVersion: "14.0.0",
|
|
27705
|
-
version: "22.2.
|
|
27706
|
+
version: "22.2.3",
|
|
27706
27707
|
type: BaseSubscriptionInsightComponent,
|
|
27707
27708
|
isStandalone: false,
|
|
27708
27709
|
selector: "ng-component",
|
|
@@ -27722,7 +27723,7 @@ var BaseSubscriptionInsightComponent = class BaseSubscriptionInsightComponent ex
|
|
|
27722
27723
|
};
|
|
27723
27724
|
i0.ɵɵngDeclareClassMetadata({
|
|
27724
27725
|
minVersion: "12.0.0",
|
|
27725
|
-
version: "22.2.
|
|
27726
|
+
version: "22.2.3",
|
|
27726
27727
|
ngImport: i0,
|
|
27727
27728
|
type: BaseSubscriptionInsightComponent,
|
|
27728
27729
|
decorators: [{
|
|
@@ -27756,7 +27757,7 @@ var SubscriptionInsightAveragePriceComponent = class SubscriptionInsightAverageP
|
|
|
27756
27757
|
static {
|
|
27757
27758
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27758
27759
|
minVersion: "12.0.0",
|
|
27759
|
-
version: "22.2.
|
|
27760
|
+
version: "22.2.3",
|
|
27760
27761
|
ngImport: i0,
|
|
27761
27762
|
type: SubscriptionInsightAveragePriceComponent,
|
|
27762
27763
|
deps: [
|
|
@@ -27770,7 +27771,7 @@ var SubscriptionInsightAveragePriceComponent = class SubscriptionInsightAverageP
|
|
|
27770
27771
|
static {
|
|
27771
27772
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27772
27773
|
minVersion: "17.0.0",
|
|
27773
|
-
version: "22.2.
|
|
27774
|
+
version: "22.2.3",
|
|
27774
27775
|
type: SubscriptionInsightAveragePriceComponent,
|
|
27775
27776
|
isStandalone: false,
|
|
27776
27777
|
selector: "pw-subscription-insight-average-price",
|
|
@@ -27869,7 +27870,7 @@ var SubscriptionInsightAveragePriceComponent = class SubscriptionInsightAverageP
|
|
|
27869
27870
|
};
|
|
27870
27871
|
i0.ɵɵngDeclareClassMetadata({
|
|
27871
27872
|
minVersion: "12.0.0",
|
|
27872
|
-
version: "22.2.
|
|
27873
|
+
version: "22.2.3",
|
|
27873
27874
|
ngImport: i0,
|
|
27874
27875
|
type: SubscriptionInsightAveragePriceComponent,
|
|
27875
27876
|
decorators: [{
|
|
@@ -27904,7 +27905,7 @@ var SubscriptionInsightProcuctSessionComponent = class SubscriptionInsightProcuc
|
|
|
27904
27905
|
static {
|
|
27905
27906
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
27906
27907
|
minVersion: "12.0.0",
|
|
27907
|
-
version: "22.2.
|
|
27908
|
+
version: "22.2.3",
|
|
27908
27909
|
ngImport: i0,
|
|
27909
27910
|
type: SubscriptionInsightProcuctSessionComponent,
|
|
27910
27911
|
deps: [
|
|
@@ -27918,7 +27919,7 @@ var SubscriptionInsightProcuctSessionComponent = class SubscriptionInsightProcuc
|
|
|
27918
27919
|
static {
|
|
27919
27920
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
27920
27921
|
minVersion: "17.0.0",
|
|
27921
|
-
version: "22.2.
|
|
27922
|
+
version: "22.2.3",
|
|
27922
27923
|
type: SubscriptionInsightProcuctSessionComponent,
|
|
27923
27924
|
isStandalone: false,
|
|
27924
27925
|
selector: "pw-subscription-insight-product-session",
|
|
@@ -28017,7 +28018,7 @@ var SubscriptionInsightProcuctSessionComponent = class SubscriptionInsightProcuc
|
|
|
28017
28018
|
};
|
|
28018
28019
|
i0.ɵɵngDeclareClassMetadata({
|
|
28019
28020
|
minVersion: "12.0.0",
|
|
28020
|
-
version: "22.2.
|
|
28021
|
+
version: "22.2.3",
|
|
28021
28022
|
ngImport: i0,
|
|
28022
28023
|
type: SubscriptionInsightProcuctSessionComponent,
|
|
28023
28024
|
decorators: [{
|
|
@@ -28052,7 +28053,7 @@ var SubscriptionInsightUserSessionComponent = class SubscriptionInsightUserSessi
|
|
|
28052
28053
|
static {
|
|
28053
28054
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
28054
28055
|
minVersion: "12.0.0",
|
|
28055
|
-
version: "22.2.
|
|
28056
|
+
version: "22.2.3",
|
|
28056
28057
|
ngImport: i0,
|
|
28057
28058
|
type: SubscriptionInsightUserSessionComponent,
|
|
28058
28059
|
deps: [
|
|
@@ -28066,7 +28067,7 @@ var SubscriptionInsightUserSessionComponent = class SubscriptionInsightUserSessi
|
|
|
28066
28067
|
static {
|
|
28067
28068
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
28068
28069
|
minVersion: "17.0.0",
|
|
28069
|
-
version: "22.2.
|
|
28070
|
+
version: "22.2.3",
|
|
28070
28071
|
type: SubscriptionInsightUserSessionComponent,
|
|
28071
28072
|
isStandalone: false,
|
|
28072
28073
|
selector: "pw-subscription-insight-user-session",
|
|
@@ -28165,7 +28166,7 @@ var SubscriptionInsightUserSessionComponent = class SubscriptionInsightUserSessi
|
|
|
28165
28166
|
};
|
|
28166
28167
|
i0.ɵɵngDeclareClassMetadata({
|
|
28167
28168
|
minVersion: "12.0.0",
|
|
28168
|
-
version: "22.2.
|
|
28169
|
+
version: "22.2.3",
|
|
28169
28170
|
ngImport: i0,
|
|
28170
28171
|
type: SubscriptionInsightUserSessionComponent,
|
|
28171
28172
|
decorators: [{
|
|
@@ -28200,7 +28201,7 @@ var SubscriptionInsightAverageUserComponent = class SubscriptionInsightAverageUs
|
|
|
28200
28201
|
static {
|
|
28201
28202
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
28202
28203
|
minVersion: "12.0.0",
|
|
28203
|
-
version: "22.2.
|
|
28204
|
+
version: "22.2.3",
|
|
28204
28205
|
ngImport: i0,
|
|
28205
28206
|
type: SubscriptionInsightAverageUserComponent,
|
|
28206
28207
|
deps: [
|
|
@@ -28214,7 +28215,7 @@ var SubscriptionInsightAverageUserComponent = class SubscriptionInsightAverageUs
|
|
|
28214
28215
|
static {
|
|
28215
28216
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
28216
28217
|
minVersion: "17.0.0",
|
|
28217
|
-
version: "22.2.
|
|
28218
|
+
version: "22.2.3",
|
|
28218
28219
|
type: SubscriptionInsightAverageUserComponent,
|
|
28219
28220
|
isStandalone: false,
|
|
28220
28221
|
selector: "pw-subscription-insight-average-user",
|
|
@@ -28313,7 +28314,7 @@ var SubscriptionInsightAverageUserComponent = class SubscriptionInsightAverageUs
|
|
|
28313
28314
|
};
|
|
28314
28315
|
i0.ɵɵngDeclareClassMetadata({
|
|
28315
28316
|
minVersion: "12.0.0",
|
|
28316
|
-
version: "22.2.
|
|
28317
|
+
version: "22.2.3",
|
|
28317
28318
|
ngImport: i0,
|
|
28318
28319
|
type: SubscriptionInsightAverageUserComponent,
|
|
28319
28320
|
decorators: [{
|
|
@@ -28362,7 +28363,7 @@ var SubscriptionInsightRevenueComponent = class SubscriptionInsightRevenueCompon
|
|
|
28362
28363
|
static {
|
|
28363
28364
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
28364
28365
|
minVersion: "12.0.0",
|
|
28365
|
-
version: "22.2.
|
|
28366
|
+
version: "22.2.3",
|
|
28366
28367
|
ngImport: i0,
|
|
28367
28368
|
type: SubscriptionInsightRevenueComponent,
|
|
28368
28369
|
deps: [
|
|
@@ -28376,7 +28377,7 @@ var SubscriptionInsightRevenueComponent = class SubscriptionInsightRevenueCompon
|
|
|
28376
28377
|
static {
|
|
28377
28378
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
28378
28379
|
minVersion: "17.0.0",
|
|
28379
|
-
version: "22.2.
|
|
28380
|
+
version: "22.2.3",
|
|
28380
28381
|
type: SubscriptionInsightRevenueComponent,
|
|
28381
28382
|
isStandalone: false,
|
|
28382
28383
|
selector: "pw-subscription-insight-revenue",
|
|
@@ -28475,7 +28476,7 @@ var SubscriptionInsightRevenueComponent = class SubscriptionInsightRevenueCompon
|
|
|
28475
28476
|
};
|
|
28476
28477
|
i0.ɵɵngDeclareClassMetadata({
|
|
28477
28478
|
minVersion: "12.0.0",
|
|
28478
|
-
version: "22.2.
|
|
28479
|
+
version: "22.2.3",
|
|
28479
28480
|
ngImport: i0,
|
|
28480
28481
|
type: SubscriptionInsightRevenueComponent,
|
|
28481
28482
|
decorators: [{
|
|
@@ -28524,7 +28525,7 @@ var SubscriptionInsightChurnComponent = class SubscriptionInsightChurnComponent
|
|
|
28524
28525
|
static {
|
|
28525
28526
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
28526
28527
|
minVersion: "12.0.0",
|
|
28527
|
-
version: "22.2.
|
|
28528
|
+
version: "22.2.3",
|
|
28528
28529
|
ngImport: i0,
|
|
28529
28530
|
type: SubscriptionInsightChurnComponent,
|
|
28530
28531
|
deps: [
|
|
@@ -28538,7 +28539,7 @@ var SubscriptionInsightChurnComponent = class SubscriptionInsightChurnComponent
|
|
|
28538
28539
|
static {
|
|
28539
28540
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
28540
28541
|
minVersion: "17.0.0",
|
|
28541
|
-
version: "22.2.
|
|
28542
|
+
version: "22.2.3",
|
|
28542
28543
|
type: SubscriptionInsightChurnComponent,
|
|
28543
28544
|
isStandalone: false,
|
|
28544
28545
|
selector: "pw-subscription-insight-churn",
|
|
@@ -28637,7 +28638,7 @@ var SubscriptionInsightChurnComponent = class SubscriptionInsightChurnComponent
|
|
|
28637
28638
|
};
|
|
28638
28639
|
i0.ɵɵngDeclareClassMetadata({
|
|
28639
28640
|
minVersion: "12.0.0",
|
|
28640
|
-
version: "22.2.
|
|
28641
|
+
version: "22.2.3",
|
|
28641
28642
|
ngImport: i0,
|
|
28642
28643
|
type: SubscriptionInsightChurnComponent,
|
|
28643
28644
|
decorators: [{
|
|
@@ -28661,7 +28662,7 @@ var SubscriptionInsightTabsComponent = class SubscriptionInsightTabsComponent {
|
|
|
28661
28662
|
static {
|
|
28662
28663
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
28663
28664
|
minVersion: "12.0.0",
|
|
28664
|
-
version: "22.2.
|
|
28665
|
+
version: "22.2.3",
|
|
28665
28666
|
ngImport: i0,
|
|
28666
28667
|
type: SubscriptionInsightTabsComponent,
|
|
28667
28668
|
deps: [],
|
|
@@ -28671,7 +28672,7 @@ var SubscriptionInsightTabsComponent = class SubscriptionInsightTabsComponent {
|
|
|
28671
28672
|
static {
|
|
28672
28673
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
28673
28674
|
minVersion: "14.0.0",
|
|
28674
|
-
version: "22.2.
|
|
28675
|
+
version: "22.2.3",
|
|
28675
28676
|
type: SubscriptionInsightTabsComponent,
|
|
28676
28677
|
isStandalone: false,
|
|
28677
28678
|
selector: "pw-admin-subscription-insight-tabs",
|
|
@@ -28784,7 +28785,7 @@ var SubscriptionInsightTabsComponent = class SubscriptionInsightTabsComponent {
|
|
|
28784
28785
|
};
|
|
28785
28786
|
i0.ɵɵngDeclareClassMetadata({
|
|
28786
28787
|
minVersion: "12.0.0",
|
|
28787
|
-
version: "22.2.
|
|
28788
|
+
version: "22.2.3",
|
|
28788
28789
|
ngImport: i0,
|
|
28789
28790
|
type: SubscriptionInsightTabsComponent,
|
|
28790
28791
|
decorators: [{
|
|
@@ -28980,7 +28981,7 @@ var InviteUsersComponent = class InviteUsersComponent extends AppBaseComponent {
|
|
|
28980
28981
|
static {
|
|
28981
28982
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
28982
28983
|
minVersion: "12.0.0",
|
|
28983
|
-
version: "22.2.
|
|
28984
|
+
version: "22.2.3",
|
|
28984
28985
|
ngImport: i0,
|
|
28985
28986
|
type: InviteUsersComponent,
|
|
28986
28987
|
deps: [
|
|
@@ -28997,7 +28998,7 @@ var InviteUsersComponent = class InviteUsersComponent extends AppBaseComponent {
|
|
|
28997
28998
|
static {
|
|
28998
28999
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
28999
29000
|
minVersion: "17.0.0",
|
|
29000
|
-
version: "22.2.
|
|
29001
|
+
version: "22.2.3",
|
|
29001
29002
|
type: InviteUsersComponent,
|
|
29002
29003
|
isStandalone: false,
|
|
29003
29004
|
selector: "pw-invite-users",
|
|
@@ -29273,7 +29274,7 @@ var InviteUsersComponent = class InviteUsersComponent extends AppBaseComponent {
|
|
|
29273
29274
|
};
|
|
29274
29275
|
i0.ɵɵngDeclareClassMetadata({
|
|
29275
29276
|
minVersion: "12.0.0",
|
|
29276
|
-
version: "22.2.
|
|
29277
|
+
version: "22.2.3",
|
|
29277
29278
|
ngImport: i0,
|
|
29278
29279
|
type: InviteUsersComponent,
|
|
29279
29280
|
decorators: [{
|
|
@@ -29315,7 +29316,7 @@ var KpiInsightPipe = class KpiInsightPipe {
|
|
|
29315
29316
|
static {
|
|
29316
29317
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
29317
29318
|
minVersion: "12.0.0",
|
|
29318
|
-
version: "22.2.
|
|
29319
|
+
version: "22.2.3",
|
|
29319
29320
|
ngImport: i0,
|
|
29320
29321
|
type: KpiInsightPipe,
|
|
29321
29322
|
deps: [],
|
|
@@ -29325,7 +29326,7 @@ var KpiInsightPipe = class KpiInsightPipe {
|
|
|
29325
29326
|
static {
|
|
29326
29327
|
this.ɵpipe = i0.ɵɵngDeclarePipe({
|
|
29327
29328
|
minVersion: "14.0.0",
|
|
29328
|
-
version: "22.2.
|
|
29329
|
+
version: "22.2.3",
|
|
29329
29330
|
ngImport: i0,
|
|
29330
29331
|
type: KpiInsightPipe,
|
|
29331
29332
|
isStandalone: true,
|
|
@@ -29335,7 +29336,7 @@ var KpiInsightPipe = class KpiInsightPipe {
|
|
|
29335
29336
|
};
|
|
29336
29337
|
i0.ɵɵngDeclareClassMetadata({
|
|
29337
29338
|
minVersion: "12.0.0",
|
|
29338
|
-
version: "22.2.
|
|
29339
|
+
version: "22.2.3",
|
|
29339
29340
|
ngImport: i0,
|
|
29340
29341
|
type: KpiInsightPipe,
|
|
29341
29342
|
decorators: [{
|
|
@@ -29587,7 +29588,7 @@ var SubscriptionsListComponent = class SubscriptionsListComponent extends AppBas
|
|
|
29587
29588
|
static {
|
|
29588
29589
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
29589
29590
|
minVersion: "12.0.0",
|
|
29590
|
-
version: "22.2.
|
|
29591
|
+
version: "22.2.3",
|
|
29591
29592
|
ngImport: i0,
|
|
29592
29593
|
type: SubscriptionsListComponent,
|
|
29593
29594
|
deps: [
|
|
@@ -29605,7 +29606,7 @@ var SubscriptionsListComponent = class SubscriptionsListComponent extends AppBas
|
|
|
29605
29606
|
static {
|
|
29606
29607
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
29607
29608
|
minVersion: "17.0.0",
|
|
29608
|
-
version: "22.2.
|
|
29609
|
+
version: "22.2.3",
|
|
29609
29610
|
type: SubscriptionsListComponent,
|
|
29610
29611
|
isStandalone: false,
|
|
29611
29612
|
selector: "pw-subscriptions-list",
|
|
@@ -29622,7 +29623,7 @@ var SubscriptionsListComponent = class SubscriptionsListComponent extends AppBas
|
|
|
29622
29623
|
}],
|
|
29623
29624
|
usesInheritance: true,
|
|
29624
29625
|
ngImport: i0,
|
|
29625
|
-
template: "<div class=\"row\">\n <div\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Subscriptions</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n [routerLink]=\"[routers.inviteUsers]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Invite a User to a Trial\n </a>\n </div>\n</div>\n<div class=\"p-2 mt-2\">\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"14\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptions\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [lazy]=\"true\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onStateRestore($event)\"\n stateKey=\"pw-table.admin-subscriptions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [customSort]=\"true\">\n <ng-template #caption>\n @if (subscriptionInsights) {\n <div class=\"row mb-4\">\n @for (temp of objectKeys(subscriptionInsights); track temp) {\n <div class=\"col-12 col-lg-3 summary\">\n <div class=\"card\">\n <div class=\"card-body\">\n @for (item of subscriptionInsights[temp]; track item) {\n @let k = item | kpiInsight;\n <div class=\"kpi\">\n <p class=\"kpi-label\">{{ k.name }}@if (item?.info) {<span [pTooltip]=\"item?.info\" tooltipPosition=\"top\" appendTo=\"body\"><i class=\"far fa-info-circle text-muted\"></i></span>}</p>\n <div class=\"kpi-value\">{{ k.primary }}</div>\n @if (k.secondary) {<div class=\"kpi-comp\">{{ k.comp }} <b>{{ k.secondary }}</b></div>}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"search-filter\">\n <div class=\"col-12 col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"subscriptions-list-feature-keys\"\n placeholder=\"Filter by feature keys\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n [maxSelectedLabels]=\"2\"\n selectedItemsLabel=\"{0} feature keys selected\"\n [(ngModel)]=\"selectedFeatureKeys\"\n [options]=\"searchOptions\"\n (onChange)=\"dt.filter($event.value, 'featureKeys', 'equals')\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"col-12 col-sm-4\">\n <p-select class=\"pw-filter-select\"\n inputId=\"subscriptions-list-status\"\n [options]=\"subscriptionStatus\"\n [placeholder]=\"'Filter by status'\"\n (onChange)=\"dt.filter($event.value, 'status', 'equals')\"\n [(ngModel)]=\"status\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"subscriptions-list-search\" class=\"visually-hidden\">Search Subscription</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"subscriptions-list-search\"\n name=\"subscriptions-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search subscriptions...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search subscriptions...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Subscriptions.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"organisation\">\n {{ 'Admin.Subscriptions.Organization' | transloco }}\n <p-sort-icon field=\"organisation\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_name\">\n {{ 'Admin.Subscriptions.ContactName' | transloco }}\n <p-sort-icon field=\"contact_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_email\">\n {{ 'Admin.Subscriptions.ContactEmail' | transloco }}\n <p-sort-icon field=\"contact_email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Product' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Currency' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.PricePerMonth' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"stripe_customer_id\">\n {{ 'Admin.Subscriptions.Paid' | transloco }}\n <p-sort-icon field=\"stripe_customer_id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Billing' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n class=\"expires-at-width\">\n {{ 'Admin.Subscriptions.ExpiresAt' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_total\">\n {{ 'Admin.Subscriptions.SessionsTotal' | transloco }}\n <p-sort-icon field=\"sessions_total\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"deleted_at\">\n {{ 'Admin.Subscriptions.Deleted' | transloco }}\n <p-sort-icon field=\"deleted_at\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"id\">{{ item.id }}</td>\n <td data-head=\"Organization\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.organisation\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.organisation | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactName\" class=\"custom-break-word\">\n <span [pTooltip]=\"item.contact_name\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_name | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactEmail\">\n <span [pTooltip]=\"item.contact_email\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_email | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Name\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.productName\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.productName | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Currency\">\n <span [appDynamicBadge]=\"{ itemsArray: currency, item: item.currency }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item.currency }}</span>\n </td>\n <td data-head=\"Price/M\">\n <span>{{ (item.price / 100).toFixed(2) | currency:item.currency }}\n @if (item?.discount && objectKeys(item?.discount)?.length) {\n <i\n class=\"far fa-info-circle text-muted\"\n aria-hidden=\"true\"\n [pTooltip]=\"item?.discount | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n ></i>\n }\n </span>\n </td>\n <td data-head=\"Paid\">\n @if (item?.unsubscribed_at) {\n <span class=\"badge bg-warning d-inline-flex align-items-center\">\n Unsub\n @if (item?.reason_to_cancel) {\n <i class=\"far fa-info-circle ms-2 text-muted\"\n [pTooltip]=\"item.reason_to_cancel\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n aria-hidden=\"true\"></i>\n }\n </span>\n }\n @if (!item?.unsubscribed_at) {\n @if ((item?.stripe_customer_id || item?.external_payment) && item?.signed_up_at) {\n <span class=\"badge bg-success\">Yes</span>\n } @else {\n <span class=\"badge bg-blue-grey\">No</span>\n }\n }\n @if (item?.pause_collection && objectKeys(item?.pause_collection)?.length) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"item?.pause_collection | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"Billing\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: billingFrequency,\n item: item?.billingFrequency\n }\"\n color=\"blue-grey\">{{ item.billingFrequency }}</span>\n </td>\n <td data-head=\"Expires\">\n <span [ngClass]=\"getExpiresAtColor(item)\">{{item?.expires_at | dateFormat}}</span>\n <span> ({{item?.created_at | sinceAgo:true}})</span>\n </td>\n <td data-head=\"S#\">{{ item?.sessions_total }}</td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': item?.sessions_last_month < 3\n }\">{{ item?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Deleted\">\n @if (item?.deleted_at) {\n <span\n class=\"badge bg-danger\">Yes</span>\n }\n @if (!item?.deleted_at) {\n <span\n class=\"badge bg-blue-grey\">No</span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.subscriptionDetails, item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n @if (item.deleted) {\n <li pTooltip=\"Reactivate subscription\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Alpha'\"\n (keydown.enter)=\"openRecoverSubscriptionModal(item)\"\n (click)=\"openRecoverSubscriptionModal(item)\">\n <i class=\"fa fa-trash delete-icon text-success\" aria-hidden=\"true\"></i>\n </li>\n } @else {\n <li pTooltip=\"Delete\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Subscription.Delete'\"\n (keydown.enter)=\"onDelete(item)\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Subscriptions.NoSubscriptionMessage' | transloco\">\n </pw-no-data>\n}\n<pw-password-validation\n #recoverSubscriptionPasswordModal\n (successEvent)=\"onRecoverConfirmed()\">\n</pw-password-validation>\n\n",
|
|
29626
|
+
template: "<div class=\"row\">\n <div\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Subscriptions</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n [routerLink]=\"[routers.inviteUsers]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Invite a User to a Trial\n </a>\n </div>\n</div>\n<div class=\"p-2 mt-2\">\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"14\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptions\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [lazy]=\"true\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onStateRestore($event)\"\n stateKey=\"pw-table.admin-subscriptions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [customSort]=\"true\">\n <ng-template #caption>\n @if (subscriptionInsights) {\n <div class=\"row mb-4\">\n @for (temp of objectKeys(subscriptionInsights); track temp) {\n <div class=\"col-12 col-lg-3 summary\">\n <div class=\"card\">\n <div class=\"card-body\">\n @for (item of subscriptionInsights[temp]; track item) {\n @let k = item | kpiInsight;\n <div class=\"kpi\">\n <p class=\"kpi-label\">{{ k.name }}@if (item?.info) {<span [pTooltip]=\"item?.info\" tooltipPosition=\"top\" appendTo=\"body\"><i class=\"far fa-info-circle text-muted\"></i></span>}</p>\n <div class=\"kpi-value\">{{ k.primary }}</div>\n @if (k.secondary) {<div class=\"kpi-comp\">{{ k.comp }} <b>{{ k.secondary }}</b></div>}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"search-filter\">\n <div class=\"col-12 col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"subscriptions-list-feature-keys\"\n placeholder=\"Filter by feature keys\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n [maxSelectedLabels]=\"2\"\n selectedItemsLabel=\"{0} feature keys selected\"\n [(ngModel)]=\"selectedFeatureKeys\"\n [options]=\"searchOptions\"\n (onChange)=\"dt.filter($event.value, 'featureKeys', 'equals')\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"col-12 col-sm-4\">\n <p-select class=\"pw-filter-select\"\n inputId=\"subscriptions-list-status\"\n [options]=\"subscriptionStatus\"\n [placeholder]=\"'Filter by status'\"\n (onChange)=\"dt.filter($event.value, 'status', 'equals')\"\n [(ngModel)]=\"status\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"subscriptions-list-search\" class=\"visually-hidden\">Search Subscription</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"subscriptions-list-search\"\n name=\"subscriptions-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search subscriptions...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search subscriptions...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Subscriptions.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"organisation\">\n {{ 'Admin.Subscriptions.Organization' | transloco }}\n <p-sort-icon field=\"organisation\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_name\">\n {{ 'Admin.Subscriptions.ContactName' | transloco }}\n <p-sort-icon field=\"contact_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_email\">\n {{ 'Admin.Subscriptions.ContactEmail' | transloco }}\n <p-sort-icon field=\"contact_email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Product' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Currency' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.PricePerMonth' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"stripe_customer_id\">\n {{ 'Admin.Subscriptions.Paid' | transloco }}\n <p-sort-icon field=\"stripe_customer_id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Billing' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n class=\"expires-at-width\">\n {{ 'Admin.Subscriptions.ExpiresAt' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_total\">\n {{ 'Admin.Subscriptions.SessionsTotal' | transloco }}\n <p-sort-icon field=\"sessions_total\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"deleted_at\">\n {{ 'Admin.Subscriptions.Deleted' | transloco }}\n <p-sort-icon field=\"deleted_at\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"id\" [attr.data-label]=\"'Admin.Subscriptions.Id' | transloco\">{{ item.id }}</td>\n <td data-head=\"Organization\" [attr.data-label]=\"'Admin.Subscriptions.Organization' | transloco\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.organisation\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.organisation | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactName\" [attr.data-label]=\"'Admin.Subscriptions.ContactName' | transloco\" class=\"custom-break-word\">\n <span [pTooltip]=\"item.contact_name\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_name | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactEmail\" [attr.data-label]=\"'Admin.Subscriptions.ContactEmail' | transloco\">\n <span [pTooltip]=\"item.contact_email\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_email | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Name\" [attr.data-label]=\"'Admin.Subscriptions.Product' | transloco\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.productName\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.productName | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Currency\" [attr.data-label]=\"'Admin.Subscriptions.Currency' | transloco\">\n <span [appDynamicBadge]=\"{ itemsArray: currency, item: item.currency }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item.currency }}</span>\n </td>\n <td data-head=\"Price/M\" [attr.data-label]=\"'Admin.Subscriptions.PricePerMonth' | transloco\">\n <span>{{ (item.price / 100).toFixed(2) | currency:item.currency }}\n @if (item?.discount && objectKeys(item?.discount)?.length) {\n <i\n class=\"far fa-info-circle text-muted\"\n aria-hidden=\"true\"\n [pTooltip]=\"item?.discount | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n ></i>\n }\n </span>\n </td>\n <td data-head=\"Paid\" [attr.data-label]=\"'Admin.Subscriptions.Paid' | transloco\">\n @if (item?.unsubscribed_at) {\n <span class=\"badge bg-warning d-inline-flex align-items-center\">\n Unsub\n @if (item?.reason_to_cancel) {\n <i class=\"far fa-info-circle ms-2 text-muted\"\n [pTooltip]=\"item.reason_to_cancel\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n aria-hidden=\"true\"></i>\n }\n </span>\n }\n @if (!item?.unsubscribed_at) {\n @if ((item?.stripe_customer_id || item?.external_payment) && item?.signed_up_at) {\n <span class=\"badge bg-success\">Yes</span>\n } @else {\n <span class=\"badge bg-blue-grey\">No</span>\n }\n }\n @if (item?.pause_collection && objectKeys(item?.pause_collection)?.length) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"item?.pause_collection | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"Billing\" [attr.data-label]=\"'Admin.Subscriptions.Billing' | transloco\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: billingFrequency,\n item: item?.billingFrequency\n }\"\n color=\"blue-grey\">{{ item.billingFrequency }}</span>\n </td>\n <td data-head=\"Expires\" [attr.data-label]=\"'Admin.Subscriptions.ExpiresAt' | transloco\">\n <span [ngClass]=\"getExpiresAtColor(item)\">{{item?.expires_at | dateFormat}}</span>\n <span> ({{item?.created_at | sinceAgo:true}})</span>\n </td>\n <td data-head=\"S#\" [attr.data-label]=\"'Admin.Subscriptions.SessionsTotal' | transloco\">{{ item?.sessions_total }}</td>\n <td data-head=\"S/m #\" [attr.data-label]=\"'Admin.Subscriptions.SessionsTotalLastMonth' | transloco\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': item?.sessions_last_month < 3\n }\">{{ item?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Deleted\" [attr.data-label]=\"'Admin.Subscriptions.Deleted' | transloco\">\n @if (item?.deleted_at) {\n <span\n class=\"badge bg-danger\">Yes</span>\n }\n @if (!item?.deleted_at) {\n <span\n class=\"badge bg-blue-grey\">No</span>\n }\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.subscriptionDetails, item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n @if (item.deleted) {\n <li pTooltip=\"Reactivate subscription\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Alpha'\"\n (keydown.enter)=\"openRecoverSubscriptionModal(item)\"\n (click)=\"openRecoverSubscriptionModal(item)\">\n <i class=\"fa fa-trash delete-icon text-success\" aria-hidden=\"true\"></i>\n </li>\n } @else {\n <li pTooltip=\"Delete\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Subscription.Delete'\"\n (keydown.enter)=\"onDelete(item)\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Subscriptions.NoSubscriptionMessage' | transloco\">\n </pw-no-data>\n}\n<pw-password-validation\n #recoverSubscriptionPasswordModal\n (successEvent)=\"onRecoverConfirmed()\">\n</pw-password-validation>\n\n",
|
|
29626
29627
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.summary{display:flex}.summary .card{width:100%;margin-top:0;margin-bottom:0;padding-bottom:0!important;border:1px solid #e2e5ea;border-radius:8px;background-color:#fff;transition:background-color .12s ease,border-color .12s ease}.summary .card:hover{background-color:#fafbfc;border-color:#cfd4dc}.summary .card-body{display:flex;flex-direction:column;padding:2px 0}.summary .kpi{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:12px;align-items:baseline;padding:10px 16px}.summary .kpi+.kpi{border-top:1px solid #eef0f3}.summary .kpi-label{grid-column:1/-1;margin:0 0 4px;font-size:10px;font-weight:600;line-height:1.3;letter-spacing:.05em;text-transform:uppercase;color:#5a6473}.summary .kpi-label .fa-info-circle{display:inline;vertical-align:middle;margin-left:4px;font-size:15px;color:#a8afbc}.summary .kpi-value{grid-column:1;font-size:18px;font-weight:700;line-height:1.1;color:#1a1d21;font-variant-numeric:tabular-nums}.summary .kpi-comp{grid-column:2;text-align:right;font-size:12px;color:#7c8696;font-variant-numeric:tabular-nums;white-space:normal}.summary .kpi-comp:before{content:\"\\b7\";margin-right:4px;color:#a8afbc}.summary .kpi-comp b{font-weight:600;color:#5a6473}@media(min-width:320px)and (max-width:720px){.primeng-datatable-container .search-filter{display:flex;flex-direction:column;gap:.5rem;justify-content:space-between}}.table-responsive td{padding:6px 10px!important;font-size:12px!important;line-height:1.35;vertical-align:top;overflow-wrap:break-word}.table-responsive th{font-size:12px!important;vertical-align:bottom}.table-responsive td[data-head=Organization],.table-responsive td[data-head=Name],.table-responsive td[data-head=ContactName],.table-responsive td[data-head=ContactEmail],.table-responsive td[data-head=id],.table-responsive td[data-head=\"Price/M\"],.table-responsive td[data-head=\"S#\"],.table-responsive td[data-head=\"S/m #\"]{white-space:nowrap}.table-responsive td[data-head=id]{font-variant-numeric:tabular-nums;color:#7c8696}.table-responsive td[data-head=\"Price/M\"],.table-responsive td[data-head=\"S#\"],.table-responsive td[data-head=\"S/m #\"]{font-variant-numeric:tabular-nums;text-align:right}.table-responsive th:nth-child(7),.table-responsive th:nth-child(11),.table-responsive th:nth-child(12){text-align:right}.table-responsive .badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;letter-spacing:.01em}.table-responsive .badge[class*=bg-success]{background-color:#e6f4ec!important;color:#0f6b3a!important}.table-responsive .badge[class*=bg-danger]{background-color:#fbeae8!important;color:#c0392b!important}.table-responsive .badge[class*=bg-warning]{background-color:#fbf1e3!important;color:#8a5a00!important}.table-responsive .badge.bg-blue-grey{background-color:#eef0f3!important;color:#5a6473!important}.table-responsive .badge.bg-blue-grey-1{background-color:#e9e6ef!important;color:#473172!important}.table-responsive .badge.bg-blue-grey-2{background-color:#efe6ef!important;color:#723172!important}.table-responsive .badge.bg-blue-grey-3{background-color:#efe6e9!important;color:#723147!important}.table-responsive .badge.bg-blue-grey-4{background-color:#efe9e6!important;color:#724731!important}.table-responsive .badge.bg-blue-grey-5{background-color:#efefe6!important;color:#727231!important}.table-responsive .badge.bg-blue-grey-6{background-color:#e9efe6!important;color:#477231!important}.table-responsive .badge.bg-blue-grey-7{background-color:#e6efe9!important;color:#317247!important}.table-responsive .badge.bg-blue-grey-8{background-color:#e6efef!important;color:#317272!important}.table-responsive .badge.bg-blue-grey-9{background-color:#e6e9ef!important;color:#314772!important}.table-responsive .badge.bg-blue-grey-10{background-color:#e9e6ef!important;color:#473172!important}.table-responsive .badge.bg-blue-grey-11{background-color:#efe6ef!important;color:#723172!important}.table-responsive .badge.bg-blue-grey-12{background-color:#efe6e9!important;color:#723147!important}.table-responsive .badge.bg-blue-grey-13{background-color:#efe9e6!important;color:#724731!important}.table-responsive .badge.bg-blue-grey-14{background-color:#efefe6!important;color:#727231!important}.table-responsive .badge.bg-blue-grey-15{background-color:#e9efe6!important;color:#477231!important}.table-responsive .badge.bg-blue-grey-16{background-color:#e6efe9!important;color:#317247!important}.table-responsive .badge.bg-blue-grey-17{background-color:#e6efef!important;color:#317272!important}.table-responsive .badge.bg-blue-grey-18{background-color:#e6e9ef!important;color:#314772!important}.table-responsive .badge.bg-blue-grey-19{background-color:#e9e6ef!important;color:#473172!important}.table-responsive .badge.bg-blue-grey-20{background-color:#efe6ef!important;color:#723172!important}.table-responsive .badge.bg-blue-grey-21{background-color:#efe6e9!important;color:#723147!important}.table-responsive .badge.bg-blue-grey-22{background-color:#efe9e6!important;color:#724731!important}.table-responsive .badge.bg-blue-grey-23{background-color:#efefe6!important;color:#727231!important}.table-responsive .badge.bg-blue-grey-24{background-color:#e9efe6!important;color:#477231!important}.table-responsive .badge[class*=bg-success]:before,.table-responsive .badge[class*=bg-danger]:before,.table-responsive .badge[class*=bg-warning]:before{content:\"\";display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background-color:currentColor;vertical-align:middle}.table-responsive tbody tr:hover{background-color:#f5f7fa}.table-responsive td[data-head=Organization] span,.table-responsive td[data-head=Name] span{font-weight:600;color:#1a1d21}.table-responsive td[data-head=Expires] span~span{font-weight:600}.table-responsive .list-action .edit-icon{color:#5a6473}.table-responsive .list-action .delete-icon{color:#c0392b!important}.table-responsive .list-action .delete-icon.text-success{color:#0f6b3a!important}@media(max-width:1199.98px){.table-responsive td,.table-responsive th{white-space:nowrap;word-break:normal}}.expires-at-width{width:8%}.custom-break-word{overflow-wrap:break-word!important}\n"],
|
|
29627
29628
|
dependencies: [
|
|
29628
29629
|
{
|
|
@@ -30107,7 +30108,7 @@ var SubscriptionsListComponent = class SubscriptionsListComponent extends AppBas
|
|
|
30107
30108
|
};
|
|
30108
30109
|
i0.ɵɵngDeclareClassMetadata({
|
|
30109
30110
|
minVersion: "12.0.0",
|
|
30110
|
-
version: "22.2.
|
|
30111
|
+
version: "22.2.3",
|
|
30111
30112
|
ngImport: i0,
|
|
30112
30113
|
type: SubscriptionsListComponent,
|
|
30113
30114
|
decorators: [{
|
|
@@ -30115,7 +30116,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
30115
30116
|
args: [{
|
|
30116
30117
|
selector: "pw-subscriptions-list",
|
|
30117
30118
|
standalone: false,
|
|
30118
|
-
template: "<div class=\"row\">\n <div\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Subscriptions</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n [routerLink]=\"[routers.inviteUsers]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Invite a User to a Trial\n </a>\n </div>\n</div>\n<div class=\"p-2 mt-2\">\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"14\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptions\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [lazy]=\"true\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onStateRestore($event)\"\n stateKey=\"pw-table.admin-subscriptions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [customSort]=\"true\">\n <ng-template #caption>\n @if (subscriptionInsights) {\n <div class=\"row mb-4\">\n @for (temp of objectKeys(subscriptionInsights); track temp) {\n <div class=\"col-12 col-lg-3 summary\">\n <div class=\"card\">\n <div class=\"card-body\">\n @for (item of subscriptionInsights[temp]; track item) {\n @let k = item | kpiInsight;\n <div class=\"kpi\">\n <p class=\"kpi-label\">{{ k.name }}@if (item?.info) {<span [pTooltip]=\"item?.info\" tooltipPosition=\"top\" appendTo=\"body\"><i class=\"far fa-info-circle text-muted\"></i></span>}</p>\n <div class=\"kpi-value\">{{ k.primary }}</div>\n @if (k.secondary) {<div class=\"kpi-comp\">{{ k.comp }} <b>{{ k.secondary }}</b></div>}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"search-filter\">\n <div class=\"col-12 col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"subscriptions-list-feature-keys\"\n placeholder=\"Filter by feature keys\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n [maxSelectedLabels]=\"2\"\n selectedItemsLabel=\"{0} feature keys selected\"\n [(ngModel)]=\"selectedFeatureKeys\"\n [options]=\"searchOptions\"\n (onChange)=\"dt.filter($event.value, 'featureKeys', 'equals')\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"col-12 col-sm-4\">\n <p-select class=\"pw-filter-select\"\n inputId=\"subscriptions-list-status\"\n [options]=\"subscriptionStatus\"\n [placeholder]=\"'Filter by status'\"\n (onChange)=\"dt.filter($event.value, 'status', 'equals')\"\n [(ngModel)]=\"status\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"subscriptions-list-search\" class=\"visually-hidden\">Search Subscription</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"subscriptions-list-search\"\n name=\"subscriptions-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search subscriptions...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search subscriptions...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Subscriptions.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"organisation\">\n {{ 'Admin.Subscriptions.Organization' | transloco }}\n <p-sort-icon field=\"organisation\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_name\">\n {{ 'Admin.Subscriptions.ContactName' | transloco }}\n <p-sort-icon field=\"contact_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_email\">\n {{ 'Admin.Subscriptions.ContactEmail' | transloco }}\n <p-sort-icon field=\"contact_email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Product' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Currency' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.PricePerMonth' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"stripe_customer_id\">\n {{ 'Admin.Subscriptions.Paid' | transloco }}\n <p-sort-icon field=\"stripe_customer_id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Billing' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n class=\"expires-at-width\">\n {{ 'Admin.Subscriptions.ExpiresAt' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_total\">\n {{ 'Admin.Subscriptions.SessionsTotal' | transloco }}\n <p-sort-icon field=\"sessions_total\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"deleted_at\">\n {{ 'Admin.Subscriptions.Deleted' | transloco }}\n <p-sort-icon field=\"deleted_at\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"id\">{{ item.id }}</td>\n <td data-head=\"Organization\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.organisation\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.organisation | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactName\" class=\"custom-break-word\">\n <span [pTooltip]=\"item.contact_name\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_name | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactEmail\">\n <span [pTooltip]=\"item.contact_email\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_email | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Name\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.productName\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.productName | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Currency\">\n <span [appDynamicBadge]=\"{ itemsArray: currency, item: item.currency }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item.currency }}</span>\n </td>\n <td data-head=\"Price/M\">\n <span>{{ (item.price / 100).toFixed(2) | currency:item.currency }}\n @if (item?.discount && objectKeys(item?.discount)?.length) {\n <i\n class=\"far fa-info-circle text-muted\"\n aria-hidden=\"true\"\n [pTooltip]=\"item?.discount | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n ></i>\n }\n </span>\n </td>\n <td data-head=\"Paid\">\n @if (item?.unsubscribed_at) {\n <span class=\"badge bg-warning d-inline-flex align-items-center\">\n Unsub\n @if (item?.reason_to_cancel) {\n <i class=\"far fa-info-circle ms-2 text-muted\"\n [pTooltip]=\"item.reason_to_cancel\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n aria-hidden=\"true\"></i>\n }\n </span>\n }\n @if (!item?.unsubscribed_at) {\n @if ((item?.stripe_customer_id || item?.external_payment) && item?.signed_up_at) {\n <span class=\"badge bg-success\">Yes</span>\n } @else {\n <span class=\"badge bg-blue-grey\">No</span>\n }\n }\n @if (item?.pause_collection && objectKeys(item?.pause_collection)?.length) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"item?.pause_collection | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"Billing\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: billingFrequency,\n item: item?.billingFrequency\n }\"\n color=\"blue-grey\">{{ item.billingFrequency }}</span>\n </td>\n <td data-head=\"Expires\">\n <span [ngClass]=\"getExpiresAtColor(item)\">{{item?.expires_at | dateFormat}}</span>\n <span> ({{item?.created_at | sinceAgo:true}})</span>\n </td>\n <td data-head=\"S#\">{{ item?.sessions_total }}</td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': item?.sessions_last_month < 3\n }\">{{ item?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Deleted\">\n @if (item?.deleted_at) {\n <span\n class=\"badge bg-danger\">Yes</span>\n }\n @if (!item?.deleted_at) {\n <span\n class=\"badge bg-blue-grey\">No</span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.subscriptionDetails, item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n @if (item.deleted) {\n <li pTooltip=\"Reactivate subscription\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Alpha'\"\n (keydown.enter)=\"openRecoverSubscriptionModal(item)\"\n (click)=\"openRecoverSubscriptionModal(item)\">\n <i class=\"fa fa-trash delete-icon text-success\" aria-hidden=\"true\"></i>\n </li>\n } @else {\n <li pTooltip=\"Delete\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Subscription.Delete'\"\n (keydown.enter)=\"onDelete(item)\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Subscriptions.NoSubscriptionMessage' | transloco\">\n </pw-no-data>\n}\n<pw-password-validation\n #recoverSubscriptionPasswordModal\n (successEvent)=\"onRecoverConfirmed()\">\n</pw-password-validation>\n\n",
|
|
30119
|
+
template: "<div class=\"row\">\n <div\n class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Subscriptions</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n [routerLink]=\"[routers.inviteUsers]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Invite a User to a Trial\n </a>\n </div>\n</div>\n<div class=\"p-2 mt-2\">\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"14\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive mt-0\" [class.d-none]=\"!isLoaded\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptions\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [lazy]=\"true\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onStateRestore($event)\"\n stateKey=\"pw-table.admin-subscriptions-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [customSort]=\"true\">\n <ng-template #caption>\n @if (subscriptionInsights) {\n <div class=\"row mb-4\">\n @for (temp of objectKeys(subscriptionInsights); track temp) {\n <div class=\"col-12 col-lg-3 summary\">\n <div class=\"card\">\n <div class=\"card-body\">\n @for (item of subscriptionInsights[temp]; track item) {\n @let k = item | kpiInsight;\n <div class=\"kpi\">\n <p class=\"kpi-label\">{{ k.name }}@if (item?.info) {<span [pTooltip]=\"item?.info\" tooltipPosition=\"top\" appendTo=\"body\"><i class=\"far fa-info-circle text-muted\"></i></span>}</p>\n <div class=\"kpi-value\">{{ k.primary }}</div>\n @if (k.secondary) {<div class=\"kpi-comp\">{{ k.comp }} <b>{{ k.secondary }}</b></div>}\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n <div class=\"search-filter\">\n <div class=\"col-12 col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"subscriptions-list-feature-keys\"\n placeholder=\"Filter by feature keys\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n [maxSelectedLabels]=\"2\"\n selectedItemsLabel=\"{0} feature keys selected\"\n [(ngModel)]=\"selectedFeatureKeys\"\n [options]=\"searchOptions\"\n (onChange)=\"dt.filter($event.value, 'featureKeys', 'equals')\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n <div class=\"col-12 col-sm-4\">\n <p-select class=\"pw-filter-select\"\n inputId=\"subscriptions-list-status\"\n [options]=\"subscriptionStatus\"\n [placeholder]=\"'Filter by status'\"\n (onChange)=\"dt.filter($event.value, 'status', 'equals')\"\n [(ngModel)]=\"status\"\n appendTo=\"body\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"subscriptions-list-search\" class=\"visually-hidden\">Search Subscription</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"subscriptions-list-search\"\n name=\"subscriptions-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search subscriptions...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search subscriptions...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Subscriptions.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"organisation\">\n {{ 'Admin.Subscriptions.Organization' | transloco }}\n <p-sort-icon field=\"organisation\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_name\">\n {{ 'Admin.Subscriptions.ContactName' | transloco }}\n <p-sort-icon field=\"contact_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"contact_email\">\n {{ 'Admin.Subscriptions.ContactEmail' | transloco }}\n <p-sort-icon field=\"contact_email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Product' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Currency' | transloco }}</th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.PricePerMonth' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"stripe_customer_id\">\n {{ 'Admin.Subscriptions.Paid' | transloco }}\n <p-sort-icon field=\"stripe_customer_id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">{{ 'Admin.Subscriptions.Billing' | transloco }}</th>\n <th pResizableColumn scope=\"true\"\n class=\"expires-at-width\">\n {{ 'Admin.Subscriptions.ExpiresAt' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_total\">\n {{ 'Admin.Subscriptions.SessionsTotal' | transloco }}\n <p-sort-icon field=\"sessions_total\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"deleted_at\">\n {{ 'Admin.Subscriptions.Deleted' | transloco }}\n <p-sort-icon field=\"deleted_at\"></p-sort-icon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body\n let-item>\n <tr>\n <td data-head=\"id\" [attr.data-label]=\"'Admin.Subscriptions.Id' | transloco\">{{ item.id }}</td>\n <td data-head=\"Organization\" [attr.data-label]=\"'Admin.Subscriptions.Organization' | transloco\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.organisation\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.organisation | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactName\" [attr.data-label]=\"'Admin.Subscriptions.ContactName' | transloco\" class=\"custom-break-word\">\n <span [pTooltip]=\"item.contact_name\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_name | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"ContactEmail\" [attr.data-label]=\"'Admin.Subscriptions.ContactEmail' | transloco\">\n <span [pTooltip]=\"item.contact_email\" tooltipPosition=\"top\" appendTo=\"body\">{{ item.contact_email | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Name\" [attr.data-label]=\"'Admin.Subscriptions.Product' | transloco\">\n <span class=\"cursor-pointer custom-break-word\"\n [pTooltip]=\"item.productName\"\n appendTo=\"body\"\n tooltipPosition=\"top\">{{ item.productName | textTruncate: 20 }}</span>\n </td>\n <td data-head=\"Currency\" [attr.data-label]=\"'Admin.Subscriptions.Currency' | transloco\">\n <span [appDynamicBadge]=\"{ itemsArray: currency, item: item.currency }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item.currency }}</span>\n </td>\n <td data-head=\"Price/M\" [attr.data-label]=\"'Admin.Subscriptions.PricePerMonth' | transloco\">\n <span>{{ (item.price / 100).toFixed(2) | currency:item.currency }}\n @if (item?.discount && objectKeys(item?.discount)?.length) {\n <i\n class=\"far fa-info-circle text-muted\"\n aria-hidden=\"true\"\n [pTooltip]=\"item?.discount | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n ></i>\n }\n </span>\n </td>\n <td data-head=\"Paid\" [attr.data-label]=\"'Admin.Subscriptions.Paid' | transloco\">\n @if (item?.unsubscribed_at) {\n <span class=\"badge bg-warning d-inline-flex align-items-center\">\n Unsub\n @if (item?.reason_to_cancel) {\n <i class=\"far fa-info-circle ms-2 text-muted\"\n [pTooltip]=\"item.reason_to_cancel\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n aria-hidden=\"true\"></i>\n }\n </span>\n }\n @if (!item?.unsubscribed_at) {\n @if ((item?.stripe_customer_id || item?.external_payment) && item?.signed_up_at) {\n <span class=\"badge bg-success\">Yes</span>\n } @else {\n <span class=\"badge bg-blue-grey\">No</span>\n }\n }\n @if (item?.pause_collection && objectKeys(item?.pause_collection)?.length) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"item?.pause_collection | json\"\n tooltipPosition=\"top\"\n appendTo=\"body\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"Billing\" [attr.data-label]=\"'Admin.Subscriptions.Billing' | transloco\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: billingFrequency,\n item: item?.billingFrequency\n }\"\n color=\"blue-grey\">{{ item.billingFrequency }}</span>\n </td>\n <td data-head=\"Expires\" [attr.data-label]=\"'Admin.Subscriptions.ExpiresAt' | transloco\">\n <span [ngClass]=\"getExpiresAtColor(item)\">{{item?.expires_at | dateFormat}}</span>\n <span> ({{item?.created_at | sinceAgo:true}})</span>\n </td>\n <td data-head=\"S#\" [attr.data-label]=\"'Admin.Subscriptions.SessionsTotal' | transloco\">{{ item?.sessions_total }}</td>\n <td data-head=\"S/m #\" [attr.data-label]=\"'Admin.Subscriptions.SessionsTotalLastMonth' | transloco\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': item?.sessions_last_month < 3\n }\">{{ item?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Deleted\" [attr.data-label]=\"'Admin.Subscriptions.Deleted' | transloco\">\n @if (item?.deleted_at) {\n <span\n class=\"badge bg-danger\">Yes</span>\n }\n @if (!item?.deleted_at) {\n <span\n class=\"badge bg-blue-grey\">No</span>\n }\n </td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Edit\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.subscriptionDetails, item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n @if (item.deleted) {\n <li pTooltip=\"Reactivate subscription\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Alpha'\"\n (keydown.enter)=\"openRecoverSubscriptionModal(item)\"\n (click)=\"openRecoverSubscriptionModal(item)\">\n <i class=\"fa fa-trash delete-icon text-success\" aria-hidden=\"true\"></i>\n </li>\n } @else {\n <li pTooltip=\"Delete\"\n tooltipPosition=\"top\"\n appendTo=\"body\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Subscription.Delete'\"\n (keydown.enter)=\"onDelete(item)\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (totalRecordsUnFiltered === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Subscriptions.NoSubscriptionMessage' | transloco\">\n </pw-no-data>\n}\n<pw-password-validation\n #recoverSubscriptionPasswordModal\n (successEvent)=\"onRecoverConfirmed()\">\n</pw-password-validation>\n\n",
|
|
30119
30120
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.summary{display:flex}.summary .card{width:100%;margin-top:0;margin-bottom:0;padding-bottom:0!important;border:1px solid #e2e5ea;border-radius:8px;background-color:#fff;transition:background-color .12s ease,border-color .12s ease}.summary .card:hover{background-color:#fafbfc;border-color:#cfd4dc}.summary .card-body{display:flex;flex-direction:column;padding:2px 0}.summary .kpi{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:12px;align-items:baseline;padding:10px 16px}.summary .kpi+.kpi{border-top:1px solid #eef0f3}.summary .kpi-label{grid-column:1/-1;margin:0 0 4px;font-size:10px;font-weight:600;line-height:1.3;letter-spacing:.05em;text-transform:uppercase;color:#5a6473}.summary .kpi-label .fa-info-circle{display:inline;vertical-align:middle;margin-left:4px;font-size:15px;color:#a8afbc}.summary .kpi-value{grid-column:1;font-size:18px;font-weight:700;line-height:1.1;color:#1a1d21;font-variant-numeric:tabular-nums}.summary .kpi-comp{grid-column:2;text-align:right;font-size:12px;color:#7c8696;font-variant-numeric:tabular-nums;white-space:normal}.summary .kpi-comp:before{content:\"\\b7\";margin-right:4px;color:#a8afbc}.summary .kpi-comp b{font-weight:600;color:#5a6473}@media(min-width:320px)and (max-width:720px){.primeng-datatable-container .search-filter{display:flex;flex-direction:column;gap:.5rem;justify-content:space-between}}.table-responsive td{padding:6px 10px!important;font-size:12px!important;line-height:1.35;vertical-align:top;overflow-wrap:break-word}.table-responsive th{font-size:12px!important;vertical-align:bottom}.table-responsive td[data-head=Organization],.table-responsive td[data-head=Name],.table-responsive td[data-head=ContactName],.table-responsive td[data-head=ContactEmail],.table-responsive td[data-head=id],.table-responsive td[data-head=\"Price/M\"],.table-responsive td[data-head=\"S#\"],.table-responsive td[data-head=\"S/m #\"]{white-space:nowrap}.table-responsive td[data-head=id]{font-variant-numeric:tabular-nums;color:#7c8696}.table-responsive td[data-head=\"Price/M\"],.table-responsive td[data-head=\"S#\"],.table-responsive td[data-head=\"S/m #\"]{font-variant-numeric:tabular-nums;text-align:right}.table-responsive th:nth-child(7),.table-responsive th:nth-child(11),.table-responsive th:nth-child(12){text-align:right}.table-responsive .badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;letter-spacing:.01em}.table-responsive .badge[class*=bg-success]{background-color:#e6f4ec!important;color:#0f6b3a!important}.table-responsive .badge[class*=bg-danger]{background-color:#fbeae8!important;color:#c0392b!important}.table-responsive .badge[class*=bg-warning]{background-color:#fbf1e3!important;color:#8a5a00!important}.table-responsive .badge.bg-blue-grey{background-color:#eef0f3!important;color:#5a6473!important}.table-responsive .badge.bg-blue-grey-1{background-color:#e9e6ef!important;color:#473172!important}.table-responsive .badge.bg-blue-grey-2{background-color:#efe6ef!important;color:#723172!important}.table-responsive .badge.bg-blue-grey-3{background-color:#efe6e9!important;color:#723147!important}.table-responsive .badge.bg-blue-grey-4{background-color:#efe9e6!important;color:#724731!important}.table-responsive .badge.bg-blue-grey-5{background-color:#efefe6!important;color:#727231!important}.table-responsive .badge.bg-blue-grey-6{background-color:#e9efe6!important;color:#477231!important}.table-responsive .badge.bg-blue-grey-7{background-color:#e6efe9!important;color:#317247!important}.table-responsive .badge.bg-blue-grey-8{background-color:#e6efef!important;color:#317272!important}.table-responsive .badge.bg-blue-grey-9{background-color:#e6e9ef!important;color:#314772!important}.table-responsive .badge.bg-blue-grey-10{background-color:#e9e6ef!important;color:#473172!important}.table-responsive .badge.bg-blue-grey-11{background-color:#efe6ef!important;color:#723172!important}.table-responsive .badge.bg-blue-grey-12{background-color:#efe6e9!important;color:#723147!important}.table-responsive .badge.bg-blue-grey-13{background-color:#efe9e6!important;color:#724731!important}.table-responsive .badge.bg-blue-grey-14{background-color:#efefe6!important;color:#727231!important}.table-responsive .badge.bg-blue-grey-15{background-color:#e9efe6!important;color:#477231!important}.table-responsive .badge.bg-blue-grey-16{background-color:#e6efe9!important;color:#317247!important}.table-responsive .badge.bg-blue-grey-17{background-color:#e6efef!important;color:#317272!important}.table-responsive .badge.bg-blue-grey-18{background-color:#e6e9ef!important;color:#314772!important}.table-responsive .badge.bg-blue-grey-19{background-color:#e9e6ef!important;color:#473172!important}.table-responsive .badge.bg-blue-grey-20{background-color:#efe6ef!important;color:#723172!important}.table-responsive .badge.bg-blue-grey-21{background-color:#efe6e9!important;color:#723147!important}.table-responsive .badge.bg-blue-grey-22{background-color:#efe9e6!important;color:#724731!important}.table-responsive .badge.bg-blue-grey-23{background-color:#efefe6!important;color:#727231!important}.table-responsive .badge.bg-blue-grey-24{background-color:#e9efe6!important;color:#477231!important}.table-responsive .badge[class*=bg-success]:before,.table-responsive .badge[class*=bg-danger]:before,.table-responsive .badge[class*=bg-warning]:before{content:\"\";display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background-color:currentColor;vertical-align:middle}.table-responsive tbody tr:hover{background-color:#f5f7fa}.table-responsive td[data-head=Organization] span,.table-responsive td[data-head=Name] span{font-weight:600;color:#1a1d21}.table-responsive td[data-head=Expires] span~span{font-weight:600}.table-responsive .list-action .edit-icon{color:#5a6473}.table-responsive .list-action .delete-icon{color:#c0392b!important}.table-responsive .list-action .delete-icon.text-success{color:#0f6b3a!important}@media(max-width:1199.98px){.table-responsive td,.table-responsive th{white-space:nowrap;word-break:normal}}.expires-at-width{width:8%}.custom-break-word{overflow-wrap:break-word!important}\n"]
|
|
30120
30121
|
}]
|
|
30121
30122
|
}],
|
|
@@ -30159,7 +30160,7 @@ var SubscriptionComponent = class SubscriptionComponent extends AppBaseComponent
|
|
|
30159
30160
|
static {
|
|
30160
30161
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
30161
30162
|
minVersion: "12.0.0",
|
|
30162
|
-
version: "22.2.
|
|
30163
|
+
version: "22.2.3",
|
|
30163
30164
|
ngImport: i0,
|
|
30164
30165
|
type: SubscriptionComponent,
|
|
30165
30166
|
deps: [{ token: i0.Injector }],
|
|
@@ -30169,7 +30170,7 @@ var SubscriptionComponent = class SubscriptionComponent extends AppBaseComponent
|
|
|
30169
30170
|
static {
|
|
30170
30171
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
30171
30172
|
minVersion: "14.0.0",
|
|
30172
|
-
version: "22.2.
|
|
30173
|
+
version: "22.2.3",
|
|
30173
30174
|
type: SubscriptionComponent,
|
|
30174
30175
|
isStandalone: false,
|
|
30175
30176
|
selector: "pw-subscriptions",
|
|
@@ -30188,7 +30189,7 @@ var SubscriptionComponent = class SubscriptionComponent extends AppBaseComponent
|
|
|
30188
30189
|
};
|
|
30189
30190
|
i0.ɵɵngDeclareClassMetadata({
|
|
30190
30191
|
minVersion: "12.0.0",
|
|
30191
|
-
version: "22.2.
|
|
30192
|
+
version: "22.2.3",
|
|
30192
30193
|
ngImport: i0,
|
|
30193
30194
|
type: SubscriptionComponent,
|
|
30194
30195
|
decorators: [{
|
|
@@ -30322,7 +30323,7 @@ var TagsCategoryComponent = class TagsCategoryComponent extends AppBaseComponent
|
|
|
30322
30323
|
static {
|
|
30323
30324
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
30324
30325
|
minVersion: "12.0.0",
|
|
30325
|
-
version: "22.2.
|
|
30326
|
+
version: "22.2.3",
|
|
30326
30327
|
ngImport: i0,
|
|
30327
30328
|
type: TagsCategoryComponent,
|
|
30328
30329
|
deps: [
|
|
@@ -30339,7 +30340,7 @@ var TagsCategoryComponent = class TagsCategoryComponent extends AppBaseComponent
|
|
|
30339
30340
|
static {
|
|
30340
30341
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
30341
30342
|
minVersion: "17.0.0",
|
|
30342
|
-
version: "22.2.
|
|
30343
|
+
version: "22.2.3",
|
|
30343
30344
|
type: TagsCategoryComponent,
|
|
30344
30345
|
isStandalone: false,
|
|
30345
30346
|
selector: "pw-admin-tags-category",
|
|
@@ -30632,7 +30633,7 @@ var TagsCategoryComponent = class TagsCategoryComponent extends AppBaseComponent
|
|
|
30632
30633
|
};
|
|
30633
30634
|
i0.ɵɵngDeclareClassMetadata({
|
|
30634
30635
|
minVersion: "12.0.0",
|
|
30635
|
-
version: "22.2.
|
|
30636
|
+
version: "22.2.3",
|
|
30636
30637
|
ngImport: i0,
|
|
30637
30638
|
type: TagsCategoryComponent,
|
|
30638
30639
|
decorators: [{
|
|
@@ -30767,7 +30768,7 @@ var TagDetailsComponent = class TagDetailsComponent extends AppBaseComponent {
|
|
|
30767
30768
|
static {
|
|
30768
30769
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
30769
30770
|
minVersion: "12.0.0",
|
|
30770
|
-
version: "22.2.
|
|
30771
|
+
version: "22.2.3",
|
|
30771
30772
|
ngImport: i0,
|
|
30772
30773
|
type: TagDetailsComponent,
|
|
30773
30774
|
deps: [
|
|
@@ -30782,7 +30783,7 @@ var TagDetailsComponent = class TagDetailsComponent extends AppBaseComponent {
|
|
|
30782
30783
|
static {
|
|
30783
30784
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
30784
30785
|
minVersion: "17.0.0",
|
|
30785
|
-
version: "22.2.
|
|
30786
|
+
version: "22.2.3",
|
|
30786
30787
|
type: TagDetailsComponent,
|
|
30787
30788
|
isStandalone: false,
|
|
30788
30789
|
selector: "pw-tag-details",
|
|
@@ -30995,7 +30996,7 @@ var TagDetailsComponent = class TagDetailsComponent extends AppBaseComponent {
|
|
|
30995
30996
|
};
|
|
30996
30997
|
i0.ɵɵngDeclareClassMetadata({
|
|
30997
30998
|
minVersion: "12.0.0",
|
|
30998
|
-
version: "22.2.
|
|
30999
|
+
version: "22.2.3",
|
|
30999
31000
|
ngImport: i0,
|
|
31000
31001
|
type: TagDetailsComponent,
|
|
31001
31002
|
decorators: [{
|
|
@@ -31121,7 +31122,7 @@ var TagsListComponent = class TagsListComponent extends AppBaseComponent {
|
|
|
31121
31122
|
static {
|
|
31122
31123
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
31123
31124
|
minVersion: "12.0.0",
|
|
31124
|
-
version: "22.2.
|
|
31125
|
+
version: "22.2.3",
|
|
31125
31126
|
ngImport: i0,
|
|
31126
31127
|
type: TagsListComponent,
|
|
31127
31128
|
deps: [
|
|
@@ -31137,7 +31138,7 @@ var TagsListComponent = class TagsListComponent extends AppBaseComponent {
|
|
|
31137
31138
|
static {
|
|
31138
31139
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
31139
31140
|
minVersion: "17.0.0",
|
|
31140
|
-
version: "22.2.
|
|
31141
|
+
version: "22.2.3",
|
|
31141
31142
|
type: TagsListComponent,
|
|
31142
31143
|
isStandalone: false,
|
|
31143
31144
|
selector: "pw-admin-tags-list",
|
|
@@ -31430,7 +31431,7 @@ var TagsListComponent = class TagsListComponent extends AppBaseComponent {
|
|
|
31430
31431
|
};
|
|
31431
31432
|
i0.ɵɵngDeclareClassMetadata({
|
|
31432
31433
|
minVersion: "12.0.0",
|
|
31433
|
-
version: "22.2.
|
|
31434
|
+
version: "22.2.3",
|
|
31434
31435
|
ngImport: i0,
|
|
31435
31436
|
type: TagsListComponent,
|
|
31436
31437
|
decorators: [{
|
|
@@ -31468,7 +31469,7 @@ var TagsTabsComponent = class TagsTabsComponent {
|
|
|
31468
31469
|
static {
|
|
31469
31470
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
31470
31471
|
minVersion: "12.0.0",
|
|
31471
|
-
version: "22.2.
|
|
31472
|
+
version: "22.2.3",
|
|
31472
31473
|
ngImport: i0,
|
|
31473
31474
|
type: TagsTabsComponent,
|
|
31474
31475
|
deps: [],
|
|
@@ -31478,7 +31479,7 @@ var TagsTabsComponent = class TagsTabsComponent {
|
|
|
31478
31479
|
static {
|
|
31479
31480
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
31480
31481
|
minVersion: "14.0.0",
|
|
31481
|
-
version: "22.2.
|
|
31482
|
+
version: "22.2.3",
|
|
31482
31483
|
type: TagsTabsComponent,
|
|
31483
31484
|
isStandalone: false,
|
|
31484
31485
|
selector: "pw-tags-tabs",
|
|
@@ -31496,7 +31497,7 @@ var TagsTabsComponent = class TagsTabsComponent {
|
|
|
31496
31497
|
};
|
|
31497
31498
|
i0.ɵɵngDeclareClassMetadata({
|
|
31498
31499
|
minVersion: "12.0.0",
|
|
31499
|
-
version: "22.2.
|
|
31500
|
+
version: "22.2.3",
|
|
31500
31501
|
ngImport: i0,
|
|
31501
31502
|
type: TagsTabsComponent,
|
|
31502
31503
|
decorators: [{
|
|
@@ -31554,10 +31555,11 @@ var TipComponent = class TipComponent extends AppBaseComponent {
|
|
|
31554
31555
|
}
|
|
31555
31556
|
onSave() {
|
|
31556
31557
|
this.buttonBusy = true;
|
|
31558
|
+
const messageKey = this.id ? "Admin.Tips.UpdatedMessage" : "Admin.Tips.AddedMessage";
|
|
31557
31559
|
(this.id ? this.tipService.saveTips(this.id, this.form.value, this.subscriptionId) : this.tipService.addTips(this.form.value, this.subscriptionId)).subscribe(() => {
|
|
31558
31560
|
this.form.markAsPristine();
|
|
31559
31561
|
this.router.navigate(["../list"], { relativeTo: this.route });
|
|
31560
|
-
this.toast.success(this.translation.translate(
|
|
31562
|
+
this.toast.success(this.translation.translate(messageKey));
|
|
31561
31563
|
this.cdr.markForCheck();
|
|
31562
31564
|
}).add(() => {
|
|
31563
31565
|
this.buttonBusy = false;
|
|
@@ -31570,7 +31572,7 @@ var TipComponent = class TipComponent extends AppBaseComponent {
|
|
|
31570
31572
|
static {
|
|
31571
31573
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
31572
31574
|
minVersion: "12.0.0",
|
|
31573
|
-
version: "22.2.
|
|
31575
|
+
version: "22.2.3",
|
|
31574
31576
|
ngImport: i0,
|
|
31575
31577
|
type: TipComponent,
|
|
31576
31578
|
deps: [
|
|
@@ -31584,7 +31586,7 @@ var TipComponent = class TipComponent extends AppBaseComponent {
|
|
|
31584
31586
|
static {
|
|
31585
31587
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
31586
31588
|
minVersion: "17.0.0",
|
|
31587
|
-
version: "22.2.
|
|
31589
|
+
version: "22.2.3",
|
|
31588
31590
|
type: TipComponent,
|
|
31589
31591
|
isStandalone: false,
|
|
31590
31592
|
selector: "pw-admin-tip",
|
|
@@ -31726,7 +31728,7 @@ var TipComponent = class TipComponent extends AppBaseComponent {
|
|
|
31726
31728
|
__decorate([ValidateForm("form")], TipComponent.prototype, "onSave", null);
|
|
31727
31729
|
i0.ɵɵngDeclareClassMetadata({
|
|
31728
31730
|
minVersion: "12.0.0",
|
|
31729
|
-
version: "22.2.
|
|
31731
|
+
version: "22.2.3",
|
|
31730
31732
|
ngImport: i0,
|
|
31731
31733
|
type: TipComponent,
|
|
31732
31734
|
decorators: [{
|
|
@@ -31782,7 +31784,7 @@ var TipsComponent = class TipsComponent extends AppBaseComponent {
|
|
|
31782
31784
|
static {
|
|
31783
31785
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
31784
31786
|
minVersion: "12.0.0",
|
|
31785
|
-
version: "22.2.
|
|
31787
|
+
version: "22.2.3",
|
|
31786
31788
|
ngImport: i0,
|
|
31787
31789
|
type: TipsComponent,
|
|
31788
31790
|
deps: [
|
|
@@ -31796,7 +31798,7 @@ var TipsComponent = class TipsComponent extends AppBaseComponent {
|
|
|
31796
31798
|
static {
|
|
31797
31799
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
31798
31800
|
minVersion: "17.0.0",
|
|
31799
|
-
version: "22.2.
|
|
31801
|
+
version: "22.2.3",
|
|
31800
31802
|
type: TipsComponent,
|
|
31801
31803
|
isStandalone: false,
|
|
31802
31804
|
selector: "pw-tips-list",
|
|
@@ -32026,7 +32028,7 @@ var TipsComponent = class TipsComponent extends AppBaseComponent {
|
|
|
32026
32028
|
};
|
|
32027
32029
|
i0.ɵɵngDeclareClassMetadata({
|
|
32028
32030
|
minVersion: "12.0.0",
|
|
32029
|
-
version: "22.2.
|
|
32031
|
+
version: "22.2.3",
|
|
32030
32032
|
ngImport: i0,
|
|
32031
32033
|
type: TipsComponent,
|
|
32032
32034
|
decorators: [{
|
|
@@ -32055,7 +32057,7 @@ var TipsTabsComponent = class TipsTabsComponent {
|
|
|
32055
32057
|
static {
|
|
32056
32058
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
32057
32059
|
minVersion: "12.0.0",
|
|
32058
|
-
version: "22.2.
|
|
32060
|
+
version: "22.2.3",
|
|
32059
32061
|
ngImport: i0,
|
|
32060
32062
|
type: TipsTabsComponent,
|
|
32061
32063
|
deps: [],
|
|
@@ -32065,7 +32067,7 @@ var TipsTabsComponent = class TipsTabsComponent {
|
|
|
32065
32067
|
static {
|
|
32066
32068
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
32067
32069
|
minVersion: "14.0.0",
|
|
32068
|
-
version: "22.2.
|
|
32070
|
+
version: "22.2.3",
|
|
32069
32071
|
type: TipsTabsComponent,
|
|
32070
32072
|
isStandalone: false,
|
|
32071
32073
|
selector: "pw-tips",
|
|
@@ -32083,7 +32085,7 @@ var TipsTabsComponent = class TipsTabsComponent {
|
|
|
32083
32085
|
};
|
|
32084
32086
|
i0.ɵɵngDeclareClassMetadata({
|
|
32085
32087
|
minVersion: "12.0.0",
|
|
32086
|
-
version: "22.2.
|
|
32088
|
+
version: "22.2.3",
|
|
32087
32089
|
ngImport: i0,
|
|
32088
32090
|
type: TipsTabsComponent,
|
|
32089
32091
|
decorators: [{
|
|
@@ -32142,7 +32144,7 @@ var TermsOfServiceComponent = class TermsOfServiceComponent extends AppBaseCompo
|
|
|
32142
32144
|
textParams: { entityType: "terms of service" }
|
|
32143
32145
|
}).then((ok) => {
|
|
32144
32146
|
if (!ok) return;
|
|
32145
|
-
this.adminService.deleteTos(id).subscribe(() => {
|
|
32147
|
+
this.adminService.deleteTos(id, this.subscriptionId).subscribe(() => {
|
|
32146
32148
|
this.toast.success(this.translation.translate("Admin.Tos.DeletedMessage"));
|
|
32147
32149
|
this.getAllTos({
|
|
32148
32150
|
page: this.page,
|
|
@@ -32159,7 +32161,7 @@ var TermsOfServiceComponent = class TermsOfServiceComponent extends AppBaseCompo
|
|
|
32159
32161
|
static {
|
|
32160
32162
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
32161
32163
|
minVersion: "12.0.0",
|
|
32162
|
-
version: "22.2.
|
|
32164
|
+
version: "22.2.3",
|
|
32163
32165
|
ngImport: i0,
|
|
32164
32166
|
type: TermsOfServiceComponent,
|
|
32165
32167
|
deps: [
|
|
@@ -32174,13 +32176,13 @@ var TermsOfServiceComponent = class TermsOfServiceComponent extends AppBaseCompo
|
|
|
32174
32176
|
static {
|
|
32175
32177
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
32176
32178
|
minVersion: "17.0.0",
|
|
32177
|
-
version: "22.2.
|
|
32179
|
+
version: "22.2.3",
|
|
32178
32180
|
type: TermsOfServiceComponent,
|
|
32179
32181
|
isStandalone: false,
|
|
32180
32182
|
selector: "pw-terms-of-service",
|
|
32181
32183
|
usesInheritance: true,
|
|
32182
32184
|
ngImport: i0,
|
|
32183
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Terms of Services & Privacy Policy</h2>\n <button *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\" class=\"btn btn-sm btn-outline-primary\" data-cy=\"create-Tos\"\n [routerLink]=\"[routers.tosAndPrivacyDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Terms of Services </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"4\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed mt table-responsive\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt [customSort]=\"true\" [value]=\"data.product_privacy_services\" [paginator]=\"data.object_count !== 0\" [lazy]=\"true\" [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\" [loading]=\"loading\" [filterDelay]=\"1000\" (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.terms-of-service\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"terms-of-service-search\"\n name=\"terms-of-service-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search terms...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search terms...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn pSortableColumn=\"title\" scope=\"true\" data-head=\"Title\" >{{ 'Label.Title' | transloco }} <p-sort-icon field=\"title\"></p-sort-icon></th>\n <th pResizableColumn scope=\"true\" data-head=\"Privacy\">Privacy</th>\n <th pResizableColumn scope=\"true\" data-head=\"Terms of Services\">Terms of Services</th>\n <th class=\"actions-list-two\" scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body let-tos>\n <tr>\n\n <td data-head=\"Title\" ><a pTooltip=\"{{tos.title}}\" tooltipPosition=\"top\" appendTo=\"body\" [routerLink]=\"[routers.tosAndPrivacyView
|
|
32185
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Terms of Services & Privacy Policy</h2>\n <button *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\" class=\"btn btn-sm btn-outline-primary\" data-cy=\"create-Tos\"\n [routerLink]=\"[routers.tosAndPrivacyDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Terms of Services </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"4\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed mt table-responsive\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt [customSort]=\"true\" [value]=\"data.product_privacy_services\" [paginator]=\"data.object_count !== 0\" [lazy]=\"true\" [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\" [loading]=\"loading\" [filterDelay]=\"1000\" (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.terms-of-service\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"terms-of-service-search\"\n name=\"terms-of-service-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search terms...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search terms...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn pSortableColumn=\"title\" scope=\"true\" data-head=\"Title\" >{{ 'Label.Title' | transloco }} <p-sort-icon field=\"title\"></p-sort-icon></th>\n <th pResizableColumn scope=\"true\" data-head=\"Privacy\">Privacy</th>\n <th pResizableColumn scope=\"true\" data-head=\"Terms of Services\">Terms of Services</th>\n <th class=\"actions-list-two\" scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body let-tos>\n <tr>\n\n <td data-head=\"Title\" ><a pTooltip=\"{{tos.title}}\" tooltipPosition=\"top\" appendTo=\"body\" [routerLink]=\"tos.slug ? [routers.tosAndPrivacyView, tos.slug] : [routers.tosAndPrivacyView]\" target=\"_blank\">{{\n tos.title | textTruncate : 30\n }}</a></td>\n <td data-head=\"Name\" data-label=\"Privacy\">{{ tos.privacy | removeHtml: 'quill' | textTruncate: 220 }}</td>\n <td data-head=\"Terms of Services\" data-label=\"Terms\"> {{ tos.tos | removeHtml: 'quill' | textTruncate: 220 }} </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <!-- Show only to SubscriptionSuperAdmin or SubscriptionOwner -->\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\" class=\"me-2 me-sm-3\" *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\"\n [routerLink]=\"[routers.tosAndPrivacyDetails + tos.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\" *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\" class=\"me-2 me-sm-3\">\n <i (keydown.enter)=\"onDelete(tos.id)\" (keydown.space)=\"onDelete(tos.id)\" (click)=\"onDelete(tos.id)\" class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"View TOS\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\">\n <a aria-label=\"View TOS\" [routerLink]=\"tos.slug ? [routers.tosAndPrivacyView, tos.slug] : [routers.tosAndPrivacyView]\" target=\"_blank\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </a>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Tos.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
32184
32186
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"],
|
|
32185
32187
|
dependencies: [
|
|
32186
32188
|
{
|
|
@@ -32466,7 +32468,7 @@ var TermsOfServiceComponent = class TermsOfServiceComponent extends AppBaseCompo
|
|
|
32466
32468
|
};
|
|
32467
32469
|
i0.ɵɵngDeclareClassMetadata({
|
|
32468
32470
|
minVersion: "12.0.0",
|
|
32469
|
-
version: "22.2.
|
|
32471
|
+
version: "22.2.3",
|
|
32470
32472
|
ngImport: i0,
|
|
32471
32473
|
type: TermsOfServiceComponent,
|
|
32472
32474
|
decorators: [{
|
|
@@ -32474,7 +32476,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
32474
32476
|
args: [{
|
|
32475
32477
|
selector: "pw-terms-of-service",
|
|
32476
32478
|
standalone: false,
|
|
32477
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Terms of Services & Privacy Policy</h2>\n <button *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\" class=\"btn btn-sm btn-outline-primary\" data-cy=\"create-Tos\"\n [routerLink]=\"[routers.tosAndPrivacyDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Terms of Services </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"4\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed mt table-responsive\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt [customSort]=\"true\" [value]=\"data.product_privacy_services\" [paginator]=\"data.object_count !== 0\" [lazy]=\"true\" [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\" [loading]=\"loading\" [filterDelay]=\"1000\" (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.terms-of-service\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"terms-of-service-search\"\n name=\"terms-of-service-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search terms...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search terms...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn pSortableColumn=\"title\" scope=\"true\" data-head=\"Title\" >{{ 'Label.Title' | transloco }} <p-sort-icon field=\"title\"></p-sort-icon></th>\n <th pResizableColumn scope=\"true\" data-head=\"Privacy\">Privacy</th>\n <th pResizableColumn scope=\"true\" data-head=\"Terms of Services\">Terms of Services</th>\n <th class=\"actions-list-two\" scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body let-tos>\n <tr>\n\n <td data-head=\"Title\" ><a pTooltip=\"{{tos.title}}\" tooltipPosition=\"top\" appendTo=\"body\" [routerLink]=\"[routers.tosAndPrivacyView
|
|
32479
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Terms of Services & Privacy Policy</h2>\n <button *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\" class=\"btn btn-sm btn-outline-primary\" data-cy=\"create-Tos\"\n [routerLink]=\"[routers.tosAndPrivacyDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Terms of Services </button>\n </div>\n </div>\n @if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"4\" [showCaption]=\"true\" />\n }\n <div class=\"primeng-datatable-container actions-collapsed mt table-responsive\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt [customSort]=\"true\" [value]=\"data.product_privacy_services\" [paginator]=\"data.object_count !== 0\" [lazy]=\"true\" [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\" [loading]=\"loading\" [filterDelay]=\"1000\" (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.terms-of-service\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"text-end\">\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"terms-of-service-search\"\n name=\"terms-of-service-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search terms...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n aria-label=\"Search terms...\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn pSortableColumn=\"title\" scope=\"true\" data-head=\"Title\" >{{ 'Label.Title' | transloco }} <p-sort-icon field=\"title\"></p-sort-icon></th>\n <th pResizableColumn scope=\"true\" data-head=\"Privacy\">Privacy</th>\n <th pResizableColumn scope=\"true\" data-head=\"Terms of Services\">Terms of Services</th>\n <th class=\"actions-list-two\" scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template #body let-tos>\n <tr>\n\n <td data-head=\"Title\" ><a pTooltip=\"{{tos.title}}\" tooltipPosition=\"top\" appendTo=\"body\" [routerLink]=\"tos.slug ? [routers.tosAndPrivacyView, tos.slug] : [routers.tosAndPrivacyView]\" target=\"_blank\">{{\n tos.title | textTruncate : 30\n }}</a></td>\n <td data-head=\"Name\" data-label=\"Privacy\">{{ tos.privacy | removeHtml: 'quill' | textTruncate: 220 }}</td>\n <td data-head=\"Terms of Services\" data-label=\"Terms\"> {{ tos.tos | removeHtml: 'quill' | textTruncate: 220 }} </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <!-- Show only to SubscriptionSuperAdmin or SubscriptionOwner -->\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\" class=\"me-2 me-sm-3\" *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\"\n [routerLink]=\"[routers.tosAndPrivacyDetails + tos.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\" *rbacAllow=\"'SubscriptionSuperAdmin || SubscriptionOwner'\" class=\"me-2 me-sm-3\">\n <i (keydown.enter)=\"onDelete(tos.id)\" (keydown.space)=\"onDelete(tos.id)\" (click)=\"onDelete(tos.id)\" class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"View TOS\" tooltipPosition=\"top\" appendTo=\"body\"\n class=\"me-2 me-sm-3\">\n <a aria-label=\"View TOS\" [routerLink]=\"tos.slug ? [routers.tosAndPrivacyView, tos.slug] : [routers.tosAndPrivacyView]\" target=\"_blank\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </a>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n @if (data.unfiltered_count === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Tos.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
32478
32480
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}\n"]
|
|
32479
32481
|
}]
|
|
32480
32482
|
}],
|
|
@@ -32540,7 +32542,7 @@ var TermsOfServiceDetailsComponent = class TermsOfServiceDetailsComponent extend
|
|
|
32540
32542
|
return this.form.controls;
|
|
32541
32543
|
}
|
|
32542
32544
|
getTosDetails() {
|
|
32543
|
-
this.adminService.getTosDetails(this.id).subscribe((response) => {
|
|
32545
|
+
this.adminService.getTosDetails(this.id, PermissionService.selectedSubscription?.id).subscribe((response) => {
|
|
32544
32546
|
this.isLoading = false;
|
|
32545
32547
|
this.data = response;
|
|
32546
32548
|
this.form.patchValue({
|
|
@@ -32553,7 +32555,7 @@ var TermsOfServiceDetailsComponent = class TermsOfServiceDetailsComponent extend
|
|
|
32553
32555
|
static {
|
|
32554
32556
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
32555
32557
|
minVersion: "12.0.0",
|
|
32556
|
-
version: "22.2.
|
|
32558
|
+
version: "22.2.3",
|
|
32557
32559
|
ngImport: i0,
|
|
32558
32560
|
type: TermsOfServiceDetailsComponent,
|
|
32559
32561
|
deps: [
|
|
@@ -32567,7 +32569,7 @@ var TermsOfServiceDetailsComponent = class TermsOfServiceDetailsComponent extend
|
|
|
32567
32569
|
static {
|
|
32568
32570
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
32569
32571
|
minVersion: "17.0.0",
|
|
32570
|
-
version: "22.2.
|
|
32572
|
+
version: "22.2.3",
|
|
32571
32573
|
type: TermsOfServiceDetailsComponent,
|
|
32572
32574
|
isStandalone: false,
|
|
32573
32575
|
selector: "pw-terms-of-service-details",
|
|
@@ -32783,7 +32785,7 @@ var TermsOfServiceDetailsComponent = class TermsOfServiceDetailsComponent extend
|
|
|
32783
32785
|
__decorate([ValidateForm("form")], TermsOfServiceDetailsComponent.prototype, "onSave", null);
|
|
32784
32786
|
i0.ɵɵngDeclareClassMetadata({
|
|
32785
32787
|
minVersion: "12.0.0",
|
|
32786
|
-
version: "22.2.
|
|
32788
|
+
version: "22.2.3",
|
|
32787
32789
|
ngImport: i0,
|
|
32788
32790
|
type: TermsOfServiceDetailsComponent,
|
|
32789
32791
|
decorators: [{
|
|
@@ -32815,7 +32817,7 @@ var TermsOfServiceTabsComponent = class TermsOfServiceTabsComponent {
|
|
|
32815
32817
|
static {
|
|
32816
32818
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
32817
32819
|
minVersion: "12.0.0",
|
|
32818
|
-
version: "22.2.
|
|
32820
|
+
version: "22.2.3",
|
|
32819
32821
|
ngImport: i0,
|
|
32820
32822
|
type: TermsOfServiceTabsComponent,
|
|
32821
32823
|
deps: [],
|
|
@@ -32825,7 +32827,7 @@ var TermsOfServiceTabsComponent = class TermsOfServiceTabsComponent {
|
|
|
32825
32827
|
static {
|
|
32826
32828
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
32827
32829
|
minVersion: "14.0.0",
|
|
32828
|
-
version: "22.2.
|
|
32830
|
+
version: "22.2.3",
|
|
32829
32831
|
type: TermsOfServiceTabsComponent,
|
|
32830
32832
|
isStandalone: false,
|
|
32831
32833
|
selector: "pw-terms-of-service-tabs",
|
|
@@ -32843,7 +32845,7 @@ var TermsOfServiceTabsComponent = class TermsOfServiceTabsComponent {
|
|
|
32843
32845
|
};
|
|
32844
32846
|
i0.ɵɵngDeclareClassMetadata({
|
|
32845
32847
|
minVersion: "12.0.0",
|
|
32846
|
-
version: "22.2.
|
|
32848
|
+
version: "22.2.3",
|
|
32847
32849
|
ngImport: i0,
|
|
32848
32850
|
type: TermsOfServiceTabsComponent,
|
|
32849
32851
|
decorators: [{
|
|
@@ -33010,7 +33012,7 @@ var AhoyEventsComponent = class AhoyEventsComponent extends AppBaseComponent {
|
|
|
33010
33012
|
static {
|
|
33011
33013
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
33012
33014
|
minVersion: "12.0.0",
|
|
33013
|
-
version: "22.2.
|
|
33015
|
+
version: "22.2.3",
|
|
33014
33016
|
ngImport: i0,
|
|
33015
33017
|
type: AhoyEventsComponent,
|
|
33016
33018
|
deps: [
|
|
@@ -33026,7 +33028,7 @@ var AhoyEventsComponent = class AhoyEventsComponent extends AppBaseComponent {
|
|
|
33026
33028
|
static {
|
|
33027
33029
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
33028
33030
|
minVersion: "17.0.0",
|
|
33029
|
-
version: "22.2.
|
|
33031
|
+
version: "22.2.3",
|
|
33030
33032
|
type: AhoyEventsComponent,
|
|
33031
33033
|
isStandalone: false,
|
|
33032
33034
|
selector: "pw-ahoy-events",
|
|
@@ -33540,7 +33542,7 @@ var AhoyEventsComponent = class AhoyEventsComponent extends AppBaseComponent {
|
|
|
33540
33542
|
};
|
|
33541
33543
|
i0.ɵɵngDeclareClassMetadata({
|
|
33542
33544
|
minVersion: "12.0.0",
|
|
33543
|
-
version: "22.2.
|
|
33545
|
+
version: "22.2.3",
|
|
33544
33546
|
ngImport: i0,
|
|
33545
33547
|
type: AhoyEventsComponent,
|
|
33546
33548
|
decorators: [{
|
|
@@ -33706,7 +33708,7 @@ var AhoyMessagesComponent = class AhoyMessagesComponent extends AppBaseComponent
|
|
|
33706
33708
|
static {
|
|
33707
33709
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
33708
33710
|
minVersion: "12.0.0",
|
|
33709
|
-
version: "22.2.
|
|
33711
|
+
version: "22.2.3",
|
|
33710
33712
|
ngImport: i0,
|
|
33711
33713
|
type: AhoyMessagesComponent,
|
|
33712
33714
|
deps: [
|
|
@@ -33721,7 +33723,7 @@ var AhoyMessagesComponent = class AhoyMessagesComponent extends AppBaseComponent
|
|
|
33721
33723
|
static {
|
|
33722
33724
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
33723
33725
|
minVersion: "17.0.0",
|
|
33724
|
-
version: "22.2.
|
|
33726
|
+
version: "22.2.3",
|
|
33725
33727
|
type: AhoyMessagesComponent,
|
|
33726
33728
|
isStandalone: false,
|
|
33727
33729
|
selector: "pw-ahoy-messages",
|
|
@@ -34218,7 +34220,7 @@ var AhoyMessagesComponent = class AhoyMessagesComponent extends AppBaseComponent
|
|
|
34218
34220
|
};
|
|
34219
34221
|
i0.ɵɵngDeclareClassMetadata({
|
|
34220
34222
|
minVersion: "12.0.0",
|
|
34221
|
-
version: "22.2.
|
|
34223
|
+
version: "22.2.3",
|
|
34222
34224
|
ngImport: i0,
|
|
34223
34225
|
type: AhoyMessagesComponent,
|
|
34224
34226
|
decorators: [{
|
|
@@ -34379,7 +34381,7 @@ var AhoyVisitsComponent = class AhoyVisitsComponent extends AppBaseComponent {
|
|
|
34379
34381
|
static {
|
|
34380
34382
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
34381
34383
|
minVersion: "12.0.0",
|
|
34382
|
-
version: "22.2.
|
|
34384
|
+
version: "22.2.3",
|
|
34383
34385
|
ngImport: i0,
|
|
34384
34386
|
type: AhoyVisitsComponent,
|
|
34385
34387
|
deps: [
|
|
@@ -34394,13 +34396,13 @@ var AhoyVisitsComponent = class AhoyVisitsComponent extends AppBaseComponent {
|
|
|
34394
34396
|
static {
|
|
34395
34397
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
34396
34398
|
minVersion: "17.0.0",
|
|
34397
|
-
version: "22.2.
|
|
34399
|
+
version: "22.2.3",
|
|
34398
34400
|
type: AhoyVisitsComponent,
|
|
34399
34401
|
isStandalone: false,
|
|
34400
34402
|
selector: "pw-ahoy-visits",
|
|
34401
34403
|
usesInheritance: true,
|
|
34402
34404
|
ngImport: i0,
|
|
34403
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Ahoy Visits</h2>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"11\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"data.visits\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [sortField]=\"'started_at'\"\n [sortOrder]=\"-1\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.ahoy-visits\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"row\">\n <div *rbacAllow=\"'SuperAdmin'\"\n class=\"col-sm-2\">\n <p-select\n class=\"tracking-service-select pw-filter-select\"\n [options]=\"microServices\"\n (onChange)=\"onServiceChange($event.value)\"\n appendTo=\"body\"\n [placeholder]=\"'Filter by service'\"\n panelStyleClass=\"tracking-service-select-panel\"\n scrollHeight=\"220px\"\n optionLabel=\"name\"\n optionValue=\"name\">\n </p-select>\n </div>\n <div class=\"col-sm-2\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"ahoy-visits-filter-users\"\n #multiSelector [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter by users\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\"\n [lazy]=\"true\"\n (scroll)=\"onScroll($event)\"\n (onPanelShow)=\"onPanelShow()\"\n [loading]=\"userLoading\"\n (onFilter)=\"handleFilter($event)\"\n >\n </p-multiselect>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [showTime]=\"true\"\n [appendTo]=\"'body'\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'Start Date'\"\n [(ngModel)]=\"startDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\"\n >\n </p-datepicker>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [appendTo]=\"'body'\"\n [showTime]=\"true\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'End Date'\"\n [(ngModel)]=\"endDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\">\n </p-datepicker>\n </div>\n <div class=\"col d-flex align-items-center\">\n <label for=\"ahoy-visits-search\" class=\"visually-hidden\">Search Visits</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"ahoy-visits-search\"\n name=\"ahoy-visits-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search visits...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"form-control bg-white\"\n aria-label=\"Search visits...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"browser\">\n {{ 'Admin.Tracking.Browser' | transloco }}\n <p-sort-icon field=\"browser\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"device_type\">\n {{ 'Admin.Tracking.DeviceType' | transloco }}\n <p-sort-icon field=\"device_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"ip\">\n {{ 'Admin.Tracking.Ip' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"referring_domain\">\n {{ 'Admin.Tracking.Domain' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"landing_page\">\n {{ 'Admin.Tracking.LandingPage' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"country\">\n {{ 'Admin.Tracking.Country' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"region\">\n {{ 'Admin.Tracking.Region' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"city\">\n {{ 'Admin.Tracking.City' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"os\">\n {{ 'Admin.Tracking.Os' | transloco }}\n <p-sort-icon field=\"os\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Tracking.User' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Tracking.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-visits>\n <tr [class.d-none]=\"loading\">\n <td data-head=\"Browser\">{{ visits.browser }}</td>\n <td data-head=\"Device Type\">{{ visits.device_type }}</td>\n <td data-head=\"IP\">{{ visits.ip }}</td>\n <td data-head=\"referring_domain\">\n <span [pTooltip]=\"visits.referring_domain\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.referring_domain | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"landing_page\">\n <span [pTooltip]=\"visits.landing_page\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.landing_page | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"country\">\n <span [pTooltip]=\"visits.country\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.country | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"region\">\n <span [pTooltip]=\"visits.region\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.region | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"city\">\n <span [pTooltip]=\"visits.city\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.city | textTruncate: 20 }}\n </span></td>\n <td data-head=\"OS\">{{ visits.os }}</td>\n <td data-head=\"User\">\n @if (visits?.user_id) {\n <span>\n @if (visits?.user) {\n <span><a [routerLink]=\"['/members', visits?.user?.slug]\">{{ visits?.user?.first_name }} {{ visits?.user?.last_name }}</a></span>\n }\n @if (!visits?.user) {\n <span>{{ visits?.user_id }}</span>\n }\n </span>\n }\n </td>\n <td data-head=\"Started At\">{{ visits.started_at | dateFormat : 'datetime' }}</td>\n </tr>\n </ng-template>\n </p-table>\n @if ( data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n </div>\n @if (!loading && data.unfiltered_count === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Ahoy.NoVistitsDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
34405
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Ahoy Visits</h2>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"11\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"data.visits\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [sortField]=\"'started_at'\"\n [sortOrder]=\"-1\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.ahoy-visits\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"row\">\n <div *rbacAllow=\"'SuperAdmin'\"\n class=\"col-sm-2\">\n <p-select\n class=\"tracking-service-select pw-filter-select\"\n [options]=\"microServices\"\n (onChange)=\"onServiceChange($event.value)\"\n appendTo=\"body\"\n [placeholder]=\"'Filter by service'\"\n panelStyleClass=\"tracking-service-select-panel\"\n scrollHeight=\"220px\"\n optionLabel=\"name\"\n optionValue=\"name\">\n </p-select>\n </div>\n <div class=\"col-sm-2\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"ahoy-visits-filter-users\"\n #multiSelector [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter by users\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\"\n [lazy]=\"true\"\n (scroll)=\"onScroll($event)\"\n (onPanelShow)=\"onPanelShow()\"\n [loading]=\"userLoading\"\n (onFilter)=\"handleFilter($event)\"\n >\n </p-multiselect>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [showTime]=\"true\"\n [appendTo]=\"'body'\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'Start Date'\"\n [(ngModel)]=\"startDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\"\n >\n </p-datepicker>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [appendTo]=\"'body'\"\n [showTime]=\"true\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'End Date'\"\n [(ngModel)]=\"endDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\">\n </p-datepicker>\n </div>\n <div class=\"col d-flex align-items-center\">\n <label for=\"ahoy-visits-search\" class=\"visually-hidden\">Search Visits</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"ahoy-visits-search\"\n name=\"ahoy-visits-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search visits...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"form-control bg-white\"\n aria-label=\"Search visits...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"browser\">\n {{ 'Admin.Tracking.Browser' | transloco }}\n <p-sort-icon field=\"browser\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"device_type\">\n {{ 'Admin.Tracking.DeviceType' | transloco }}\n <p-sort-icon field=\"device_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"ip\">\n {{ 'Admin.Tracking.Ip' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"referring_domain\">\n {{ 'Admin.Tracking.Domain' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"landing_page\">\n {{ 'Admin.Tracking.LandingPage' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"country\">\n {{ 'Admin.Tracking.Country' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"region\">\n {{ 'Admin.Tracking.Region' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"city\">\n {{ 'Admin.Tracking.City' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"os\">\n {{ 'Admin.Tracking.Os' | transloco }}\n <p-sort-icon field=\"os\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Tracking.User' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Tracking.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-visits>\n <tr [class.d-none]=\"loading\">\n <td data-head=\"Browser\" [attr.data-label]=\"'Admin.Tracking.Browser' | transloco\">{{ visits.browser }}</td>\n <td data-head=\"Device Type\" [attr.data-label]=\"'Admin.Tracking.DeviceType' | transloco\">{{ visits.device_type }}</td>\n <td data-head=\"IP\" [attr.data-label]=\"'Admin.Tracking.Ip' | transloco\">{{ visits.ip }}</td>\n <td data-head=\"referring_domain\" [attr.data-label]=\"'Admin.Tracking.Domain' | transloco\">\n <span [pTooltip]=\"visits.referring_domain\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.referring_domain | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"landing_page\" [attr.data-label]=\"'Admin.Tracking.LandingPage' | transloco\">\n <span [pTooltip]=\"visits.landing_page\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.landing_page | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"country\" [attr.data-label]=\"'Admin.Tracking.Country' | transloco\">\n <span [pTooltip]=\"visits.country\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.country | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"region\" [attr.data-label]=\"'Admin.Tracking.Region' | transloco\">\n <span [pTooltip]=\"visits.region\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.region | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"city\" [attr.data-label]=\"'Admin.Tracking.City' | transloco\">\n <span [pTooltip]=\"visits.city\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.city | textTruncate: 20 }}\n </span></td>\n <td data-head=\"OS\" [attr.data-label]=\"'Admin.Tracking.Os' | transloco\">{{ visits.os }}</td>\n <td data-head=\"User\" [attr.data-label]=\"'Admin.Tracking.User' | transloco\">\n @if (visits?.user_id) {\n <span>\n @if (visits?.user) {\n <span><a [routerLink]=\"['/members', visits?.user?.slug]\">{{ visits?.user?.first_name }} {{ visits?.user?.last_name }}</a></span>\n }\n @if (!visits?.user) {\n <span>{{ visits?.user_id }}</span>\n }\n </span>\n }\n </td>\n <td data-head=\"Started At\" [attr.data-label]=\"'Admin.Tracking.StartedAt' | transloco\">{{ visits.started_at | dateFormat : 'datetime' }}</td>\n </tr>\n </ng-template>\n </p-table>\n @if ( data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n </div>\n @if (!loading && data.unfiltered_count === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Ahoy.NoVistitsDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
34404
34406
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}\n"],
|
|
34405
34407
|
dependencies: [
|
|
34406
34408
|
{
|
|
@@ -34919,7 +34921,7 @@ var AhoyVisitsComponent = class AhoyVisitsComponent extends AppBaseComponent {
|
|
|
34919
34921
|
};
|
|
34920
34922
|
i0.ɵɵngDeclareClassMetadata({
|
|
34921
34923
|
minVersion: "12.0.0",
|
|
34922
|
-
version: "22.2.
|
|
34924
|
+
version: "22.2.3",
|
|
34923
34925
|
ngImport: i0,
|
|
34924
34926
|
type: AhoyVisitsComponent,
|
|
34925
34927
|
decorators: [{
|
|
@@ -34927,7 +34929,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
34927
34929
|
args: [{
|
|
34928
34930
|
selector: "pw-ahoy-visits",
|
|
34929
34931
|
standalone: false,
|
|
34930
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Ahoy Visits</h2>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"11\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"data.visits\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [sortField]=\"'started_at'\"\n [sortOrder]=\"-1\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.ahoy-visits\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"row\">\n <div *rbacAllow=\"'SuperAdmin'\"\n class=\"col-sm-2\">\n <p-select\n class=\"tracking-service-select pw-filter-select\"\n [options]=\"microServices\"\n (onChange)=\"onServiceChange($event.value)\"\n appendTo=\"body\"\n [placeholder]=\"'Filter by service'\"\n panelStyleClass=\"tracking-service-select-panel\"\n scrollHeight=\"220px\"\n optionLabel=\"name\"\n optionValue=\"name\">\n </p-select>\n </div>\n <div class=\"col-sm-2\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"ahoy-visits-filter-users\"\n #multiSelector [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter by users\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\"\n [lazy]=\"true\"\n (scroll)=\"onScroll($event)\"\n (onPanelShow)=\"onPanelShow()\"\n [loading]=\"userLoading\"\n (onFilter)=\"handleFilter($event)\"\n >\n </p-multiselect>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [showTime]=\"true\"\n [appendTo]=\"'body'\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'Start Date'\"\n [(ngModel)]=\"startDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\"\n >\n </p-datepicker>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [appendTo]=\"'body'\"\n [showTime]=\"true\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'End Date'\"\n [(ngModel)]=\"endDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\">\n </p-datepicker>\n </div>\n <div class=\"col d-flex align-items-center\">\n <label for=\"ahoy-visits-search\" class=\"visually-hidden\">Search Visits</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"ahoy-visits-search\"\n name=\"ahoy-visits-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search visits...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"form-control bg-white\"\n aria-label=\"Search visits...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"browser\">\n {{ 'Admin.Tracking.Browser' | transloco }}\n <p-sort-icon field=\"browser\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"device_type\">\n {{ 'Admin.Tracking.DeviceType' | transloco }}\n <p-sort-icon field=\"device_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"ip\">\n {{ 'Admin.Tracking.Ip' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"referring_domain\">\n {{ 'Admin.Tracking.Domain' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"landing_page\">\n {{ 'Admin.Tracking.LandingPage' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"country\">\n {{ 'Admin.Tracking.Country' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"region\">\n {{ 'Admin.Tracking.Region' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"city\">\n {{ 'Admin.Tracking.City' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"os\">\n {{ 'Admin.Tracking.Os' | transloco }}\n <p-sort-icon field=\"os\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Tracking.User' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Tracking.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-visits>\n <tr [class.d-none]=\"loading\">\n <td data-head=\"Browser\">{{ visits.browser }}</td>\n <td data-head=\"Device Type\">{{ visits.device_type }}</td>\n <td data-head=\"IP\">{{ visits.ip }}</td>\n <td data-head=\"referring_domain\">\n <span [pTooltip]=\"visits.referring_domain\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.referring_domain | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"landing_page\">\n <span [pTooltip]=\"visits.landing_page\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.landing_page | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"country\">\n <span [pTooltip]=\"visits.country\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.country | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"region\">\n <span [pTooltip]=\"visits.region\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.region | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"city\">\n <span [pTooltip]=\"visits.city\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.city | textTruncate: 20 }}\n </span></td>\n <td data-head=\"OS\">{{ visits.os }}</td>\n <td data-head=\"User\">\n @if (visits?.user_id) {\n <span>\n @if (visits?.user) {\n <span><a [routerLink]=\"['/members', visits?.user?.slug]\">{{ visits?.user?.first_name }} {{ visits?.user?.last_name }}</a></span>\n }\n @if (!visits?.user) {\n <span>{{ visits?.user_id }}</span>\n }\n </span>\n }\n </td>\n <td data-head=\"Started At\">{{ visits.started_at | dateFormat : 'datetime' }}</td>\n </tr>\n </ng-template>\n </p-table>\n @if ( data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n </div>\n @if (!loading && data.unfiltered_count === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Ahoy.NoVistitsDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
34932
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Ahoy Visits</h2>\n </div>\n</div>\n@if (!isLoaded) {\n <pw-skeleton-table [rows]=\"8\" [columns]=\"11\" [showCaption]=\"true\" />\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"data.unfiltered_count === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"data.visits\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [sortField]=\"'started_at'\"\n [sortOrder]=\"-1\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n stateKey=\"pw-table.ahoy-visits\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #caption>\n <div class=\"row\">\n <div *rbacAllow=\"'SuperAdmin'\"\n class=\"col-sm-2\">\n <p-select\n class=\"tracking-service-select pw-filter-select\"\n [options]=\"microServices\"\n (onChange)=\"onServiceChange($event.value)\"\n appendTo=\"body\"\n [placeholder]=\"'Filter by service'\"\n panelStyleClass=\"tracking-service-select-panel\"\n scrollHeight=\"220px\"\n optionLabel=\"name\"\n optionValue=\"name\">\n </p-select>\n </div>\n <div class=\"col-sm-2\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"ahoy-visits-filter-users\"\n #multiSelector [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter by users\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\"\n [lazy]=\"true\"\n (scroll)=\"onScroll($event)\"\n (onPanelShow)=\"onPanelShow()\"\n [loading]=\"userLoading\"\n (onFilter)=\"handleFilter($event)\"\n >\n </p-multiselect>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [showTime]=\"true\"\n [appendTo]=\"'body'\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'Start Date'\"\n [(ngModel)]=\"startDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\"\n >\n </p-datepicker>\n </div>\n <div class=\"col-sm-2\">\n <p-datepicker [appendTo]=\"'body'\"\n [showTime]=\"true\"\n (onSelect)=\"onDateSelection()\"\n [placeholder]=\"'End Date'\"\n [(ngModel)]=\"endDate\"\n [showIcon]=\"true\"\n dateFormat=\"yy-M-dd\">\n </p-datepicker>\n </div>\n <div class=\"col d-flex align-items-center\">\n <label for=\"ahoy-visits-search\" class=\"visually-hidden\">Search Visits</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"ahoy-visits-search\"\n name=\"ahoy-visits-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search visits...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"form-control bg-white\"\n aria-label=\"Search visits...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"browser\">\n {{ 'Admin.Tracking.Browser' | transloco }}\n <p-sort-icon field=\"browser\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"device_type\">\n {{ 'Admin.Tracking.DeviceType' | transloco }}\n <p-sort-icon field=\"device_type\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"ip\">\n {{ 'Admin.Tracking.Ip' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"referring_domain\">\n {{ 'Admin.Tracking.Domain' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"landing_page\">\n {{ 'Admin.Tracking.LandingPage' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"country\">\n {{ 'Admin.Tracking.Country' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"region\">\n {{ 'Admin.Tracking.Region' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"city\">\n {{ 'Admin.Tracking.City' | transloco }}\n <p-sort-icon field=\"ip\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"os\">\n {{ 'Admin.Tracking.Os' | transloco }}\n <p-sort-icon field=\"os\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\">\n {{ 'Admin.Tracking.User' | transloco }}\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"started_at\">\n {{ 'Admin.Tracking.StartedAt' | transloco }}\n <p-sort-icon field=\"started_at\"></p-sort-icon>\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-visits>\n <tr [class.d-none]=\"loading\">\n <td data-head=\"Browser\" [attr.data-label]=\"'Admin.Tracking.Browser' | transloco\">{{ visits.browser }}</td>\n <td data-head=\"Device Type\" [attr.data-label]=\"'Admin.Tracking.DeviceType' | transloco\">{{ visits.device_type }}</td>\n <td data-head=\"IP\" [attr.data-label]=\"'Admin.Tracking.Ip' | transloco\">{{ visits.ip }}</td>\n <td data-head=\"referring_domain\" [attr.data-label]=\"'Admin.Tracking.Domain' | transloco\">\n <span [pTooltip]=\"visits.referring_domain\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.referring_domain | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"landing_page\" [attr.data-label]=\"'Admin.Tracking.LandingPage' | transloco\">\n <span [pTooltip]=\"visits.landing_page\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.landing_page | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"country\" [attr.data-label]=\"'Admin.Tracking.Country' | transloco\">\n <span [pTooltip]=\"visits.country\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.country | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"region\" [attr.data-label]=\"'Admin.Tracking.Region' | transloco\">\n <span [pTooltip]=\"visits.region\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.region | textTruncate: 20 }}\n </span>\n </td>\n <td data-head=\"city\" [attr.data-label]=\"'Admin.Tracking.City' | transloco\">\n <span [pTooltip]=\"visits.city\"\n tooltipStyleClass=\"custom-tooltip\"\n tooltipPosition=\"top\" appendTo=\"body\"> {{ visits.city | textTruncate: 20 }}\n </span></td>\n <td data-head=\"OS\" [attr.data-label]=\"'Admin.Tracking.Os' | transloco\">{{ visits.os }}</td>\n <td data-head=\"User\" [attr.data-label]=\"'Admin.Tracking.User' | transloco\">\n @if (visits?.user_id) {\n <span>\n @if (visits?.user) {\n <span><a [routerLink]=\"['/members', visits?.user?.slug]\">{{ visits?.user?.first_name }} {{ visits?.user?.last_name }}</a></span>\n }\n @if (!visits?.user) {\n <span>{{ visits?.user_id }}</span>\n }\n </span>\n }\n </td>\n <td data-head=\"Started At\" [attr.data-label]=\"'Admin.Tracking.StartedAt' | transloco\">{{ visits.started_at | dateFormat : 'datetime' }}</td>\n </tr>\n </ng-template>\n </p-table>\n @if ( data.object_count === 0 && data.unfiltered_count !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (data.object_count !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"data.object_count\" />\n }\n </div>\n </div>\n @if (!loading && data.unfiltered_count === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Ahoy.NoVistitsDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n",
|
|
34931
34933
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}\n"]
|
|
34932
34934
|
}]
|
|
34933
34935
|
}],
|
|
@@ -35081,7 +35083,7 @@ var EventsComponent = class EventsComponent extends AppBaseComponent {
|
|
|
35081
35083
|
static {
|
|
35082
35084
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
35083
35085
|
minVersion: "12.0.0",
|
|
35084
|
-
version: "22.2.
|
|
35086
|
+
version: "22.2.3",
|
|
35085
35087
|
ngImport: i0,
|
|
35086
35088
|
type: EventsComponent,
|
|
35087
35089
|
deps: [
|
|
@@ -35096,7 +35098,7 @@ var EventsComponent = class EventsComponent extends AppBaseComponent {
|
|
|
35096
35098
|
static {
|
|
35097
35099
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
35098
35100
|
minVersion: "17.0.0",
|
|
35099
|
-
version: "22.2.
|
|
35101
|
+
version: "22.2.3",
|
|
35100
35102
|
type: EventsComponent,
|
|
35101
35103
|
isStandalone: false,
|
|
35102
35104
|
selector: "pw-events",
|
|
@@ -35588,7 +35590,7 @@ var EventsComponent = class EventsComponent extends AppBaseComponent {
|
|
|
35588
35590
|
};
|
|
35589
35591
|
i0.ɵɵngDeclareClassMetadata({
|
|
35590
35592
|
minVersion: "12.0.0",
|
|
35591
|
-
version: "22.2.
|
|
35593
|
+
version: "22.2.3",
|
|
35592
35594
|
ngImport: i0,
|
|
35593
35595
|
type: EventsComponent,
|
|
35594
35596
|
decorators: [{
|
|
@@ -35645,7 +35647,7 @@ var TrackingComponent = class TrackingComponent {
|
|
|
35645
35647
|
static {
|
|
35646
35648
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
35647
35649
|
minVersion: "12.0.0",
|
|
35648
|
-
version: "22.2.
|
|
35650
|
+
version: "22.2.3",
|
|
35649
35651
|
ngImport: i0,
|
|
35650
35652
|
type: TrackingComponent,
|
|
35651
35653
|
deps: [],
|
|
@@ -35655,7 +35657,7 @@ var TrackingComponent = class TrackingComponent {
|
|
|
35655
35657
|
static {
|
|
35656
35658
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
35657
35659
|
minVersion: "14.0.0",
|
|
35658
|
-
version: "22.2.
|
|
35660
|
+
version: "22.2.3",
|
|
35659
35661
|
type: TrackingComponent,
|
|
35660
35662
|
isStandalone: false,
|
|
35661
35663
|
selector: "pw-tracking",
|
|
@@ -35673,7 +35675,7 @@ var TrackingComponent = class TrackingComponent {
|
|
|
35673
35675
|
};
|
|
35674
35676
|
i0.ɵɵngDeclareClassMetadata({
|
|
35675
35677
|
minVersion: "12.0.0",
|
|
35676
|
-
version: "22.2.
|
|
35678
|
+
version: "22.2.3",
|
|
35677
35679
|
ngImport: i0,
|
|
35678
35680
|
type: TrackingComponent,
|
|
35679
35681
|
decorators: [{
|
|
@@ -35842,7 +35844,7 @@ var VersionsComponent = class VersionsComponent extends AppBaseComponent {
|
|
|
35842
35844
|
static {
|
|
35843
35845
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
35844
35846
|
minVersion: "12.0.0",
|
|
35845
|
-
version: "22.2.
|
|
35847
|
+
version: "22.2.3",
|
|
35846
35848
|
ngImport: i0,
|
|
35847
35849
|
type: VersionsComponent,
|
|
35848
35850
|
deps: [
|
|
@@ -35858,7 +35860,7 @@ var VersionsComponent = class VersionsComponent extends AppBaseComponent {
|
|
|
35858
35860
|
static {
|
|
35859
35861
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
35860
35862
|
minVersion: "17.0.0",
|
|
35861
|
-
version: "22.2.
|
|
35863
|
+
version: "22.2.3",
|
|
35862
35864
|
type: VersionsComponent,
|
|
35863
35865
|
isStandalone: false,
|
|
35864
35866
|
selector: "pw-versions",
|
|
@@ -36372,7 +36374,7 @@ var VersionsComponent = class VersionsComponent extends AppBaseComponent {
|
|
|
36372
36374
|
};
|
|
36373
36375
|
i0.ɵɵngDeclareClassMetadata({
|
|
36374
36376
|
minVersion: "12.0.0",
|
|
36375
|
-
version: "22.2.
|
|
36377
|
+
version: "22.2.3",
|
|
36376
36378
|
ngImport: i0,
|
|
36377
36379
|
type: VersionsComponent,
|
|
36378
36380
|
decorators: [{
|
|
@@ -36536,7 +36538,7 @@ var UserDetailsComponent = class UserDetailsComponent extends AppBaseComponent {
|
|
|
36536
36538
|
static {
|
|
36537
36539
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
36538
36540
|
minVersion: "12.0.0",
|
|
36539
|
-
version: "22.2.
|
|
36541
|
+
version: "22.2.3",
|
|
36540
36542
|
ngImport: i0,
|
|
36541
36543
|
type: UserDetailsComponent,
|
|
36542
36544
|
deps: [
|
|
@@ -36550,7 +36552,7 @@ var UserDetailsComponent = class UserDetailsComponent extends AppBaseComponent {
|
|
|
36550
36552
|
static {
|
|
36551
36553
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
36552
36554
|
minVersion: "17.0.0",
|
|
36553
|
-
version: "22.2.
|
|
36555
|
+
version: "22.2.3",
|
|
36554
36556
|
type: UserDetailsComponent,
|
|
36555
36557
|
isStandalone: false,
|
|
36556
36558
|
selector: "pw-user-details",
|
|
@@ -36884,7 +36886,7 @@ var UserDetailsComponent = class UserDetailsComponent extends AppBaseComponent {
|
|
|
36884
36886
|
__decorate([ValidateForm("form")], UserDetailsComponent.prototype, "onSave", null);
|
|
36885
36887
|
i0.ɵɵngDeclareClassMetadata({
|
|
36886
36888
|
minVersion: "12.0.0",
|
|
36887
|
-
version: "22.2.
|
|
36889
|
+
version: "22.2.3",
|
|
36888
36890
|
ngImport: i0,
|
|
36889
36891
|
type: UserDetailsComponent,
|
|
36890
36892
|
decorators: [{
|
|
@@ -36934,7 +36936,7 @@ var UserInsightComponent = class UserInsightComponent extends AppBaseComponent {
|
|
|
36934
36936
|
static {
|
|
36935
36937
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
36936
36938
|
minVersion: "12.0.0",
|
|
36937
|
-
version: "22.2.
|
|
36939
|
+
version: "22.2.3",
|
|
36938
36940
|
ngImport: i0,
|
|
36939
36941
|
type: UserInsightComponent,
|
|
36940
36942
|
deps: [
|
|
@@ -36948,7 +36950,7 @@ var UserInsightComponent = class UserInsightComponent extends AppBaseComponent {
|
|
|
36948
36950
|
static {
|
|
36949
36951
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
36950
36952
|
minVersion: "17.0.0",
|
|
36951
|
-
version: "22.2.
|
|
36953
|
+
version: "22.2.3",
|
|
36952
36954
|
type: UserInsightComponent,
|
|
36953
36955
|
isStandalone: false,
|
|
36954
36956
|
selector: "pw-admin-user-insight",
|
|
@@ -37047,7 +37049,7 @@ var UserInsightComponent = class UserInsightComponent extends AppBaseComponent {
|
|
|
37047
37049
|
};
|
|
37048
37050
|
i0.ɵɵngDeclareClassMetadata({
|
|
37049
37051
|
minVersion: "12.0.0",
|
|
37050
|
-
version: "22.2.
|
|
37052
|
+
version: "22.2.3",
|
|
37051
37053
|
ngImport: i0,
|
|
37052
37054
|
type: UserInsightComponent,
|
|
37053
37055
|
decorators: [{
|
|
@@ -37068,7 +37070,7 @@ var UsersInformationSidebarComponent = class UsersInformationSidebarComponent {
|
|
|
37068
37070
|
static {
|
|
37069
37071
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
37070
37072
|
minVersion: "12.0.0",
|
|
37071
|
-
version: "22.2.
|
|
37073
|
+
version: "22.2.3",
|
|
37072
37074
|
ngImport: i0,
|
|
37073
37075
|
type: UsersInformationSidebarComponent,
|
|
37074
37076
|
deps: [],
|
|
@@ -37078,7 +37080,7 @@ var UsersInformationSidebarComponent = class UsersInformationSidebarComponent {
|
|
|
37078
37080
|
static {
|
|
37079
37081
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
37080
37082
|
minVersion: "14.0.0",
|
|
37081
|
-
version: "22.2.
|
|
37083
|
+
version: "22.2.3",
|
|
37082
37084
|
type: UsersInformationSidebarComponent,
|
|
37083
37085
|
isStandalone: false,
|
|
37084
37086
|
selector: "pw-users-information-sidebar",
|
|
@@ -37096,7 +37098,7 @@ var UsersInformationSidebarComponent = class UsersInformationSidebarComponent {
|
|
|
37096
37098
|
};
|
|
37097
37099
|
i0.ɵɵngDeclareClassMetadata({
|
|
37098
37100
|
minVersion: "12.0.0",
|
|
37099
|
-
version: "22.2.
|
|
37101
|
+
version: "22.2.3",
|
|
37100
37102
|
ngImport: i0,
|
|
37101
37103
|
type: UsersInformationSidebarComponent,
|
|
37102
37104
|
decorators: [{
|
|
@@ -37372,7 +37374,7 @@ var UserListComponent = class UserListComponent extends UsersListBaseComponent {
|
|
|
37372
37374
|
static {
|
|
37373
37375
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
37374
37376
|
minVersion: "12.0.0",
|
|
37375
|
-
version: "22.2.
|
|
37377
|
+
version: "22.2.3",
|
|
37376
37378
|
ngImport: i0,
|
|
37377
37379
|
type: UserListComponent,
|
|
37378
37380
|
deps: [
|
|
@@ -37391,7 +37393,7 @@ var UserListComponent = class UserListComponent extends UsersListBaseComponent {
|
|
|
37391
37393
|
static {
|
|
37392
37394
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
37393
37395
|
minVersion: "17.0.0",
|
|
37394
|
-
version: "22.2.
|
|
37396
|
+
version: "22.2.3",
|
|
37395
37397
|
type: UserListComponent,
|
|
37396
37398
|
isStandalone: false,
|
|
37397
37399
|
selector: "pw-admin-user-list",
|
|
@@ -37417,7 +37419,7 @@ var UserListComponent = class UserListComponent extends UsersListBaseComponent {
|
|
|
37417
37419
|
],
|
|
37418
37420
|
usesInheritance: true,
|
|
37419
37421
|
ngImport: i0,
|
|
37420
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add User\n </a>\n </div>\n</div>\n@if (!isLoaded) {\n <div class=\"w-100 mt-0\">\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\"></pw-skeleton-table>\n </div>\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n stateKey=\"pw-table.admin-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onTableStateRestore($event)\"\n [customSort]=\"true\">\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-role-product\"\n [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event); dt.filter($event.value, 'filterSource', 'equals')\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n @if (selectedOption) {\n <div class=\"col-4\"\n >\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-criteria\"\n [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event); dt.filter($event.value, 'criteria', 'equals')\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Filter by {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n }\n <div class=\"col-auto d-flex align-items-center\">\n <span class=\"ambassadors-only-toggle\"\n [pTooltip]=\"'Admin.Users.AmbassadorsOnly' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <ui-switch\n [checked]=\"showAmbassadorsOnly\"\n (change)=\"showAmbassadorsOnly = $event; onAmbassadorsOnlyToggle(); dt.filter($event, 'ambassadors', 'equals')\"\n [attr.aria-label]=\"'Admin.Users.AmbassadorsOnly' | transloco\">\n </ui-switch>\n </span>\n </div>\n <div class=\"text-end\">\n <label for=\"users-list-search\" class=\"visually-hidden\">Search User</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"users-list-search\"\n name=\"users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sort-icon field=\"first_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sort-icon field=\"last_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sort-icon field=\"slug\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sort-icon field=\"encrypted_password\"></p-sort-icon>\n </th>\n\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sort-icon field=\"last_sign_in_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sort-icon field=\"signed_up_at\"></p-sort-icon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n @if (user?.alpha) {\n <span\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n }\n @if (user?.beta) {\n <span class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n }\n @if (user?.cognito_sso_activated) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Cognito' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-cloud success\" ></i>\n </span>\n }\n @if (user?.ambassador_count > 0) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Ambassador' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-handshake alpha-beta text-primary\" aria-hidden=\"true\"></i>\n </span>\n }\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n @if (user?.blocked) {\n <span class=\"ms-2\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n @if (user?.current_sign_in_at | isOnline) {\n <pw-online-indicator [lastSeen]=\"user.current_sign_in_at\" />\n } @else if (user?.current_sign_in_at) {\n <span>\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n } @else {\n {{ user.last_sign_in_at | dateFormat }}\n }\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Impersonate this user\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows fa-lg\"\n (click)=\"onImpersonate(user)\"\n (keydown.enter)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n @if (user?.enable_two_factor_authenticator) {\n <li pTooltip=\"Disable 2FA\" tooltipPosition=\"top\" appendTo=\"body\"\n (click)=\"disable2fa(user?.id)\"\n (keydown.enter)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock fa-lg success\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (currentUser && user.id !== currentUser.id) {\n <li pTooltip=\"Message\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(user)\"\n (keydown.space)=\"onDelete(user)\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (!loading && totalRecordsUnFiltered === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n [destructive]=\"true\"\n (successEvent)=\"deleteUser($event)\">\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n",
|
|
37422
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add User\n </a>\n </div>\n</div>\n@if (!isLoaded) {\n <div class=\"w-100 mt-0\">\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\"></pw-skeleton-table>\n </div>\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n stateKey=\"pw-table.admin-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onTableStateRestore($event)\"\n [customSort]=\"true\">\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-role-product\"\n [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event); dt.filter($event.value, 'filterSource', 'equals')\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n @if (selectedOption) {\n <div class=\"col-4\"\n >\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-criteria\"\n [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event); dt.filter($event.value, 'criteria', 'equals')\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Filter by {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n }\n <div class=\"col-auto d-flex align-items-center\">\n <span class=\"ambassadors-only-toggle\"\n [pTooltip]=\"'Admin.Users.AmbassadorsOnly' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <ui-switch\n [checked]=\"showAmbassadorsOnly\"\n (change)=\"showAmbassadorsOnly = $event; onAmbassadorsOnlyToggle(); dt.filter($event, 'ambassadors', 'equals')\"\n [attr.aria-label]=\"'Admin.Users.AmbassadorsOnly' | transloco\">\n </ui-switch>\n </span>\n </div>\n <div class=\"text-end\">\n <label for=\"users-list-search\" class=\"visually-hidden\">Search User</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"users-list-search\"\n name=\"users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sort-icon field=\"first_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sort-icon field=\"last_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sort-icon field=\"slug\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sort-icon field=\"encrypted_password\"></p-sort-icon>\n </th>\n\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sort-icon field=\"last_sign_in_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sort-icon field=\"signed_up_at\"></p-sort-icon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-user>\n <tr>\n <td data-head=\"id\" [attr.data-label]=\"'Admin.Users.Id' | transloco\"> {{ user.id }}</td>\n <td data-head=\"First Name\" [attr.data-label]=\"'Label.FirstName' | transloco\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\" [attr.data-label]=\"'Label.LastName' | transloco\">{{ user.last_name }}\n @if (user?.alpha) {\n <span\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n }\n @if (user?.beta) {\n <span class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n }\n @if (user?.cognito_sso_activated) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Cognito' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-cloud success\" ></i>\n </span>\n }\n @if (user?.ambassador_count > 0) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Ambassador' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-handshake alpha-beta text-primary\" aria-hidden=\"true\"></i>\n </span>\n }\n </td>\n <td data-head=\"Email\" [attr.data-label]=\"'Label.Email' | transloco\">{{ user.email }}</td>\n <td data-head=\"Slug\" [attr.data-label]=\"'Admin.Users.Slug' | transloco\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\" [attr.data-label]=\"'Admin.Users.EmailConfirm' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n @if (user?.blocked) {\n <span class=\"ms-2\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"S/m #\" [attr.data-label]=\"'Admin.Subscriptions.SessionsTotalLastMonth' | transloco\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\" [attr.data-label]=\"'Admin.Users.LastLogin' | transloco\">\n @if (user?.current_sign_in_at | isOnline) {\n <pw-online-indicator [lastSeen]=\"user.current_sign_in_at\" />\n } @else if (user?.current_sign_in_at) {\n <span>\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n } @else {\n {{ user.last_sign_in_at | dateFormat }}\n }\n </td>\n <td data-head=\"Registered On\" [attr.data-label]=\"'Admin.Users.RegisteredOn' | transloco\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Impersonate this user\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows fa-lg\"\n (click)=\"onImpersonate(user)\"\n (keydown.enter)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n @if (user?.enable_two_factor_authenticator) {\n <li pTooltip=\"Disable 2FA\" tooltipPosition=\"top\" appendTo=\"body\"\n (click)=\"disable2fa(user?.id)\"\n (keydown.enter)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock fa-lg success\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (currentUser && user.id !== currentUser.id) {\n <li pTooltip=\"Message\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(user)\"\n (keydown.space)=\"onDelete(user)\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (!loading && totalRecordsUnFiltered === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n [destructive]=\"true\"\n (successEvent)=\"deleteUser($event)\">\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n",
|
|
37421
37423
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.search-input input{width:100%}.w-150{width:150px}.table-responsive td[data-head=id]{font-variant-numeric:tabular-nums;color:#7c8696}.hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}.ambassadors-only-toggle{display:inline-flex;align-items:center}.ambassadors-only-toggle ::ng-deep .switch small{display:flex;align-items:center;justify-content:center}.ambassadors-only-toggle ::ng-deep .switch small:after{content:\"\\f2b5\";font-family:\"Font Awesome 6 Pro\",sans-serif;font-weight:900;font-size:12px;line-height:1;color:var(--first)}\n"],
|
|
37422
37424
|
dependencies: [
|
|
37423
37425
|
{
|
|
@@ -37846,7 +37848,7 @@ var UserListComponent = class UserListComponent extends UsersListBaseComponent {
|
|
|
37846
37848
|
};
|
|
37847
37849
|
i0.ɵɵngDeclareClassMetadata({
|
|
37848
37850
|
minVersion: "12.0.0",
|
|
37849
|
-
version: "22.2.
|
|
37851
|
+
version: "22.2.3",
|
|
37850
37852
|
ngImport: i0,
|
|
37851
37853
|
type: UserListComponent,
|
|
37852
37854
|
decorators: [{
|
|
@@ -37854,7 +37856,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
37854
37856
|
args: [{
|
|
37855
37857
|
selector: "pw-admin-user-list",
|
|
37856
37858
|
standalone: false,
|
|
37857
|
-
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add User\n </a>\n </div>\n</div>\n@if (!isLoaded) {\n <div class=\"w-100 mt-0\">\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\"></pw-skeleton-table>\n </div>\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n stateKey=\"pw-table.admin-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onTableStateRestore($event)\"\n [customSort]=\"true\">\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-role-product\"\n [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event); dt.filter($event.value, 'filterSource', 'equals')\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n @if (selectedOption) {\n <div class=\"col-4\"\n >\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-criteria\"\n [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event); dt.filter($event.value, 'criteria', 'equals')\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Filter by {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n }\n <div class=\"col-auto d-flex align-items-center\">\n <span class=\"ambassadors-only-toggle\"\n [pTooltip]=\"'Admin.Users.AmbassadorsOnly' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <ui-switch\n [checked]=\"showAmbassadorsOnly\"\n (change)=\"showAmbassadorsOnly = $event; onAmbassadorsOnlyToggle(); dt.filter($event, 'ambassadors', 'equals')\"\n [attr.aria-label]=\"'Admin.Users.AmbassadorsOnly' | transloco\">\n </ui-switch>\n </span>\n </div>\n <div class=\"text-end\">\n <label for=\"users-list-search\" class=\"visually-hidden\">Search User</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"users-list-search\"\n name=\"users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sort-icon field=\"first_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sort-icon field=\"last_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sort-icon field=\"slug\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sort-icon field=\"encrypted_password\"></p-sort-icon>\n </th>\n\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sort-icon field=\"last_sign_in_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sort-icon field=\"signed_up_at\"></p-sort-icon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n @if (user?.alpha) {\n <span\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n }\n @if (user?.beta) {\n <span class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n }\n @if (user?.cognito_sso_activated) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Cognito' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-cloud success\" ></i>\n </span>\n }\n @if (user?.ambassador_count > 0) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Ambassador' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-handshake alpha-beta text-primary\" aria-hidden=\"true\"></i>\n </span>\n }\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n @if (user?.blocked) {\n <span class=\"ms-2\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n @if (user?.current_sign_in_at | isOnline) {\n <pw-online-indicator [lastSeen]=\"user.current_sign_in_at\" />\n } @else if (user?.current_sign_in_at) {\n <span>\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n } @else {\n {{ user.last_sign_in_at | dateFormat }}\n }\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Impersonate this user\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows fa-lg\"\n (click)=\"onImpersonate(user)\"\n (keydown.enter)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n @if (user?.enable_two_factor_authenticator) {\n <li pTooltip=\"Disable 2FA\" tooltipPosition=\"top\" appendTo=\"body\"\n (click)=\"disable2fa(user?.id)\"\n (keydown.enter)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock fa-lg success\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (currentUser && user.id !== currentUser.id) {\n <li pTooltip=\"Message\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(user)\"\n (keydown.space)=\"onDelete(user)\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (!loading && totalRecordsUnFiltered === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n [destructive]=\"true\"\n (successEvent)=\"deleteUser($event)\">\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n",
|
|
37859
|
+
template: "<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-baseline\">\n <h2 class=\"card-title p-0\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add User\n </a>\n </div>\n</div>\n@if (!isLoaded) {\n <div class=\"w-100 mt-0\">\n <pw-skeleton-table [rows]=\"8\" [columns]=\"10\" [showCaption]=\"true\"></pw-skeleton-table>\n </div>\n}\n<div class=\"primeng-datatable-container actions-collapsed mt-0\" [class.d-none]=\"!isLoaded\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n stateKey=\"pw-table.admin-users-list\"\n stateStorage=\"session\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [value]=\"users\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n (onStateRestore)=\"onTableStateRestore($event)\"\n [customSort]=\"true\">\n <ng-template #caption>\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-role-product\"\n [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event); dt.filter($event.value, 'filterSource', 'equals')\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n @if (selectedOption) {\n <div class=\"col-4\"\n >\n <p-multiselect class=\"pw-filter-select\" inputId=\"users-list-filter-criteria\"\n [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event); dt.filter($event.value, 'criteria', 'equals')\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Filter by {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiselect>\n </div>\n }\n <div class=\"col-auto d-flex align-items-center\">\n <span class=\"ambassadors-only-toggle\"\n [pTooltip]=\"'Admin.Users.AmbassadorsOnly' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <ui-switch\n [checked]=\"showAmbassadorsOnly\"\n (change)=\"showAmbassadorsOnly = $event; onAmbassadorsOnlyToggle(); dt.filter($event, 'ambassadors', 'equals')\"\n [attr.aria-label]=\"'Admin.Users.AmbassadorsOnly' | transloco\">\n </ui-switch>\n </span>\n </div>\n <div class=\"text-end\">\n <label for=\"users-list-search\" class=\"visually-hidden\">Search User</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"users-list-search\"\n name=\"users-list-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search users...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\"\n aria-label=\"Search users...\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template #header>\n <tr>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sort-icon field=\"id\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sort-icon field=\"first_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sort-icon field=\"last_name\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sort-icon field=\"email\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sort-icon field=\"slug\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sort-icon field=\"encrypted_password\"></p-sort-icon>\n </th>\n\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sort-icon field=\"sessions_last_month\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sort-icon field=\"last_sign_in_at\"></p-sort-icon>\n </th>\n <th pResizableColumn scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sort-icon field=\"signed_up_at\"></p-sort-icon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template #body\n let-user>\n <tr>\n <td data-head=\"id\" [attr.data-label]=\"'Admin.Users.Id' | transloco\"> {{ user.id }}</td>\n <td data-head=\"First Name\" [attr.data-label]=\"'Label.FirstName' | transloco\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\" [attr.data-label]=\"'Label.LastName' | transloco\">{{ user.last_name }}\n @if (user?.alpha) {\n <span\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n }\n @if (user?.beta) {\n <span class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n }\n @if (user?.cognito_sso_activated) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Cognito' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-cloud success\" ></i>\n </span>\n }\n @if (user?.ambassador_count > 0) {\n <span\n class=\"ms-2\"\n [pTooltip]=\"'Admin.Users.Tooltip.Ambassador' | transloco\"\n tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa fa-handshake alpha-beta text-primary\" aria-hidden=\"true\"></i>\n </span>\n }\n </td>\n <td data-head=\"Email\" [attr.data-label]=\"'Label.Email' | transloco\">{{ user.email }}</td>\n <td data-head=\"Slug\" [attr.data-label]=\"'Admin.Users.Slug' | transloco\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\" [attr.data-label]=\"'Admin.Users.EmailConfirm' | transloco\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n @if (user?.blocked) {\n <span class=\"ms-2\" [pTooltip]=\"'This user has been blocked'\" tooltipPosition=\"top\" appendTo=\"body\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n </span>\n }\n </td>\n <td data-head=\"S/m #\" [attr.data-label]=\"'Admin.Subscriptions.SessionsTotalLastMonth' | transloco\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\" [attr.data-label]=\"'Admin.Users.LastLogin' | transloco\">\n @if (user?.current_sign_in_at | isOnline) {\n <pw-online-indicator [lastSeen]=\"user.current_sign_in_at\" />\n } @else if (user?.current_sign_in_at) {\n <span>\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n } @else {\n {{ user.last_sign_in_at | dateFormat }}\n }\n </td>\n <td data-head=\"Registered On\" [attr.data-label]=\"'Admin.Users.RegisteredOn' | transloco\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\" [attr.data-label]=\"'Label.Actions' | transloco\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li pTooltip=\"Impersonate this user\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows fa-lg\"\n (click)=\"onImpersonate(user)\"\n (keydown.enter)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n @if (user?.enable_two_factor_authenticator) {\n <li pTooltip=\"Disable 2FA\" tooltipPosition=\"top\" appendTo=\"body\"\n (click)=\"disable2fa(user?.id)\"\n (keydown.enter)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock fa-lg success\" aria-hidden=\"true\"></i>\n </li>\n }\n @if (currentUser && user.id !== currentUser.id) {\n <li pTooltip=\"Message\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n <li pTooltip=\"Edit\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li pTooltip=\"Delete\" tooltipPosition=\"top\" appendTo=\"body\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(user)\"\n (keydown.space)=\"onDelete(user)\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\">\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n</div>\n@if (!loading && totalRecordsUnFiltered === 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Users.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n}\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n [destructive]=\"true\"\n (successEvent)=\"deleteUser($event)\">\n</pw-password-validation>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n",
|
|
37858
37860
|
styles: ["@charset \"UTF-8\";: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: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--public-btn-radius: 24px}.search-input input{width:100%}.w-150{width:150px}.table-responsive td[data-head=id]{font-variant-numeric:tabular-nums;color:#7c8696}.hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}.ambassadors-only-toggle{display:inline-flex;align-items:center}.ambassadors-only-toggle ::ng-deep .switch small{display:flex;align-items:center;justify-content:center}.ambassadors-only-toggle ::ng-deep .switch small:after{content:\"\\f2b5\";font-family:\"Font Awesome 6 Pro\",sans-serif;font-weight:900;font-size:12px;line-height:1;color:var(--first)}\n"]
|
|
37859
37861
|
}]
|
|
37860
37862
|
}],
|
|
@@ -37902,7 +37904,7 @@ var UserTabComponent = class UserTabComponent {
|
|
|
37902
37904
|
static {
|
|
37903
37905
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
37904
37906
|
minVersion: "12.0.0",
|
|
37905
|
-
version: "22.2.
|
|
37907
|
+
version: "22.2.3",
|
|
37906
37908
|
ngImport: i0,
|
|
37907
37909
|
type: UserTabComponent,
|
|
37908
37910
|
deps: [{ token: i2.PermissionService }],
|
|
@@ -37912,7 +37914,7 @@ var UserTabComponent = class UserTabComponent {
|
|
|
37912
37914
|
static {
|
|
37913
37915
|
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
37914
37916
|
minVersion: "14.0.0",
|
|
37915
|
-
version: "22.2.
|
|
37917
|
+
version: "22.2.3",
|
|
37916
37918
|
type: UserTabComponent,
|
|
37917
37919
|
isStandalone: false,
|
|
37918
37920
|
selector: "pw-users-management",
|
|
@@ -37931,7 +37933,7 @@ var UserTabComponent = class UserTabComponent {
|
|
|
37931
37933
|
};
|
|
37932
37934
|
i0.ɵɵngDeclareClassMetadata({
|
|
37933
37935
|
minVersion: "12.0.0",
|
|
37934
|
-
version: "22.2.
|
|
37936
|
+
version: "22.2.3",
|
|
37935
37937
|
ngImport: i0,
|
|
37936
37938
|
type: UserTabComponent,
|
|
37937
37939
|
decorators: [{
|
|
@@ -38877,7 +38879,7 @@ var AdminRoutingModule = class AdminRoutingModule {
|
|
|
38877
38879
|
static {
|
|
38878
38880
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
38879
38881
|
minVersion: "12.0.0",
|
|
38880
|
-
version: "22.2.
|
|
38882
|
+
version: "22.2.3",
|
|
38881
38883
|
ngImport: i0,
|
|
38882
38884
|
type: AdminRoutingModule,
|
|
38883
38885
|
deps: [],
|
|
@@ -38887,7 +38889,7 @@ var AdminRoutingModule = class AdminRoutingModule {
|
|
|
38887
38889
|
static {
|
|
38888
38890
|
this.ɵmod = i0.ɵɵngDeclareNgModule({
|
|
38889
38891
|
minVersion: "14.0.0",
|
|
38890
|
-
version: "22.2.
|
|
38892
|
+
version: "22.2.3",
|
|
38891
38893
|
ngImport: i0,
|
|
38892
38894
|
type: AdminRoutingModule,
|
|
38893
38895
|
imports: [i7$2.RouterModule],
|
|
@@ -38897,7 +38899,7 @@ var AdminRoutingModule = class AdminRoutingModule {
|
|
|
38897
38899
|
static {
|
|
38898
38900
|
this.ɵinj = i0.ɵɵngDeclareInjector({
|
|
38899
38901
|
minVersion: "12.0.0",
|
|
38900
|
-
version: "22.2.
|
|
38902
|
+
version: "22.2.3",
|
|
38901
38903
|
ngImport: i0,
|
|
38902
38904
|
type: AdminRoutingModule,
|
|
38903
38905
|
imports: [RouterModule.forChild(routes), RouterModule]
|
|
@@ -38906,7 +38908,7 @@ var AdminRoutingModule = class AdminRoutingModule {
|
|
|
38906
38908
|
};
|
|
38907
38909
|
i0.ɵɵngDeclareClassMetadata({
|
|
38908
38910
|
minVersion: "12.0.0",
|
|
38909
|
-
version: "22.2.
|
|
38911
|
+
version: "22.2.3",
|
|
38910
38912
|
ngImport: i0,
|
|
38911
38913
|
type: AdminRoutingModule,
|
|
38912
38914
|
decorators: [{
|
|
@@ -38934,7 +38936,7 @@ var AdminModule = class AdminModule {
|
|
|
38934
38936
|
static {
|
|
38935
38937
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
38936
38938
|
minVersion: "12.0.0",
|
|
38937
|
-
version: "22.2.
|
|
38939
|
+
version: "22.2.3",
|
|
38938
38940
|
ngImport: i0,
|
|
38939
38941
|
type: AdminModule,
|
|
38940
38942
|
deps: [],
|
|
@@ -38944,7 +38946,7 @@ var AdminModule = class AdminModule {
|
|
|
38944
38946
|
static {
|
|
38945
38947
|
this.ɵmod = i0.ɵɵngDeclareNgModule({
|
|
38946
38948
|
minVersion: "14.0.0",
|
|
38947
|
-
version: "22.2.
|
|
38949
|
+
version: "22.2.3",
|
|
38948
38950
|
ngImport: i0,
|
|
38949
38951
|
type: AdminModule,
|
|
38950
38952
|
declarations: [
|
|
@@ -39105,7 +39107,7 @@ var AdminModule = class AdminModule {
|
|
|
39105
39107
|
static {
|
|
39106
39108
|
this.ɵinj = i0.ɵɵngDeclareInjector({
|
|
39107
39109
|
minVersion: "12.0.0",
|
|
39108
|
-
version: "22.2.
|
|
39110
|
+
version: "22.2.3",
|
|
39109
39111
|
ngImport: i0,
|
|
39110
39112
|
type: AdminModule,
|
|
39111
39113
|
providers: [
|
|
@@ -39155,7 +39157,7 @@ var AdminModule = class AdminModule {
|
|
|
39155
39157
|
};
|
|
39156
39158
|
i0.ɵɵngDeclareClassMetadata({
|
|
39157
39159
|
minVersion: "12.0.0",
|
|
39158
|
-
version: "22.2.
|
|
39160
|
+
version: "22.2.3",
|
|
39159
39161
|
ngImport: i0,
|
|
39160
39162
|
type: AdminModule,
|
|
39161
39163
|
decorators: [{
|
|
@@ -39355,7 +39357,7 @@ var AdminGuardService = class AdminGuardService {
|
|
|
39355
39357
|
static {
|
|
39356
39358
|
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
39357
39359
|
minVersion: "12.0.0",
|
|
39358
|
-
version: "22.2.
|
|
39360
|
+
version: "22.2.3",
|
|
39359
39361
|
ngImport: i0,
|
|
39360
39362
|
type: AdminGuardService,
|
|
39361
39363
|
deps: [
|
|
@@ -39370,7 +39372,7 @@ var AdminGuardService = class AdminGuardService {
|
|
|
39370
39372
|
static {
|
|
39371
39373
|
this.ɵprov = i0.ɵɵngDeclareInjectable({
|
|
39372
39374
|
minVersion: "12.0.0",
|
|
39373
|
-
version: "22.2.
|
|
39375
|
+
version: "22.2.3",
|
|
39374
39376
|
ngImport: i0,
|
|
39375
39377
|
type: AdminGuardService
|
|
39376
39378
|
});
|
|
@@ -39378,7 +39380,7 @@ var AdminGuardService = class AdminGuardService {
|
|
|
39378
39380
|
};
|
|
39379
39381
|
i0.ɵɵngDeclareClassMetadata({
|
|
39380
39382
|
minVersion: "12.0.0",
|
|
39381
|
-
version: "22.2.
|
|
39383
|
+
version: "22.2.3",
|
|
39382
39384
|
ngImport: i0,
|
|
39383
39385
|
type: AdminGuardService,
|
|
39384
39386
|
decorators: [{ type: Injectable }],
|