@posiwise/enterprise-module 0.0.92 → 0.0.94

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.
@@ -4,14 +4,14 @@ import * as i0 from '@angular/core';
4
4
  import { Component, EventEmitter, ViewChild, NgModule } from '@angular/core';
5
5
  import * as i1$1 from '@angular/forms';
6
6
  import { UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import * as i12 from '@angular/router';
7
+ import * as i14 from '@angular/router';
8
8
  import { RouterModule } from '@angular/router';
9
9
  import { CoreTranslocoModule } from '@posiwise/core-transloco';
10
10
  import * as i8 from '@posiwise/directives';
11
11
  import { DirectivesModule } from '@posiwise/directives';
12
12
  import * as i17 from '@posiwise/pipes';
13
13
  import { PipesModule } from '@posiwise/pipes';
14
- import * as i14 from '@posiwise/shared-components';
14
+ import * as i13 from '@posiwise/shared-components';
15
15
  import { GroupsComponent, GroupDefinitionComponent, EntityGroupComponent, SharedComponentsModule } from '@posiwise/shared-components';
16
16
  import * as i3 from 'angular-plotly.js';
17
17
  import { PlotlyViaCDNModule } from 'angular-plotly.js';
@@ -19,7 +19,7 @@ import * as i15 from 'ngx-quill';
19
19
  import { QuillModule } from 'ngx-quill';
20
20
  import * as i6 from 'ngx-ui-switch';
21
21
  import { UiSwitchModule } from 'ngx-ui-switch';
22
- import * as i14$1 from 'ngx-uploader';
22
+ import * as i13$1 from 'ngx-uploader';
23
23
  import { humanizeBytes, UploadStatus, NgxUploaderModule } from 'ngx-uploader';
24
24
  import * as i7 from 'primeng/dropdown';
25
25
  import { DropdownModule } from 'primeng/dropdown';
@@ -27,7 +27,7 @@ import * as i9 from 'primeng/fileupload';
27
27
  import { FileUploadModule } from 'primeng/fileupload';
28
28
  import * as i5 from 'primeng/inputtext';
29
29
  import { InputTextModule } from 'primeng/inputtext';
30
- import * as i12$1 from 'primeng/multiselect';
30
+ import * as i10 from 'primeng/multiselect';
31
31
  import { MultiSelectModule } from 'primeng/multiselect';
32
32
  import * as i4 from '@ng-bootstrap/ng-bootstrap';
33
33
  import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
@@ -36,7 +36,7 @@ import { AppBaseComponent } from '@posiwise/app-base-component';
36
36
  import * as i1 from '@posiwise/common-services';
37
37
  import { PermissionService, ValidationService, PrimeNgHelper, FormHelperService } from '@posiwise/common-services';
38
38
  import { HelperService } from '@posiwise/helper-service';
39
- import * as i13 from 'primeng/progressspinner';
39
+ import * as i12 from 'primeng/progressspinner';
40
40
  import { __decorate, __metadata } from 'tslib';
41
41
  import { PAGE_SIZE, DOCUMENT_TYPE_EXT, TOKEN_HEADER_KEY } from '@posiwise/common-utilities';
42
42
  import { QuillHelper, ValidateForm, handleDateRangeSelection } from '@posiwise/utils';
@@ -46,9 +46,8 @@ import * as i16 from '@jsverse/transloco';
46
46
  import * as i3$1 from '@posiwise/admin-module-utils';
47
47
  import { StatusCodes } from 'http-status-codes';
48
48
  import swal from 'sweetalert2';
49
- import * as i11 from 'primeng/tooltip';
50
49
  import groupBy from 'lodash/groupBy';
51
- import * as i11$1 from 'primeng/autocomplete';
50
+ import * as i11 from 'primeng/autocomplete';
52
51
  import { switchMap } from 'rxjs/operators';
53
52
 
54
53
  class EnterpriseViewParticularCommunicationComponent extends AppBaseComponent {
@@ -88,12 +87,12 @@ class EnterpriseViewParticularCommunicationComponent extends AppBaseComponent {
88
87
  ngOnDestroy() {
89
88
  super.ngOnDestroy();
90
89
  }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseViewParticularCommunicationComponent, deps: [{ token: i0.Injector }, { token: i1.GroupService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseViewParticularCommunicationComponent, selector: "pw-enterprise-communication-details", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.ql-container{resize:none!important}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseViewParticularCommunicationComponent, deps: [{ token: i0.Injector }, { token: i1.GroupService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseViewParticularCommunicationComponent, isStandalone: false, selector: "pw-enterprise-communication-details", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.ql-container{resize:none!important}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i14.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
93
92
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseViewParticularCommunicationComponent, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseViewParticularCommunicationComponent, decorators: [{
95
94
  type: Component,
96
- args: [{ selector: 'pw-enterprise-communication-details', template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.ql-container{resize:none!important}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"] }]
95
+ args: [{ selector: 'pw-enterprise-communication-details', standalone: false, template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.ql-container{resize:none!important}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"] }]
97
96
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.GroupService }, { type: i2.DomSanitizer }] });
98
97
 
99
98
  class AppEnterprise {
@@ -420,8 +419,8 @@ class EnterpriseCommunicationsComponent extends AppBaseComponent {
420
419
  ngOnDestroy() {
421
420
  super.ngOnDestroy();
422
421
  }
423
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseCommunicationsComponent, deps: [{ token: i1.GroupService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
424
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseCommunicationsComponent, selector: "pw-enterprise-communications", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Communications <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your communication here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload Communication File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Communication Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Communications...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}a.previous i{top:0}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}::ng-deep .file-upload-support-details .p-fileupload .p-fileupload-content{padding:1rem}::ng-deep .file-upload-support-details .p-fileupload-content .p-fileupload-files .p-fileupload-row>:first-child{display:flex}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i14.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i14.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "component", type: i15.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i17.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
422
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseCommunicationsComponent, deps: [{ token: i1.GroupService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
423
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseCommunicationsComponent, isStandalone: false, selector: "pw-enterprise-communications", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Communications <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your communication here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload Communication File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Communication Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Communications...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}a.previous i{top:0}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}::ng-deep .file-upload-support-details .p-fileupload .p-fileupload-content{padding:1rem}::ng-deep .file-upload-support-details .p-fileupload-content .p-fileupload-files .p-fileupload-row>:first-child{display:flex}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i13.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i13.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i14.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i15.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i17.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
425
424
  }
426
425
  __decorate([
427
426
  ValidateForm('form'),
@@ -429,9 +428,9 @@ __decorate([
429
428
  __metadata("design:paramtypes", []),
430
429
  __metadata("design:returntype", void 0)
431
430
  ], EnterpriseCommunicationsComponent.prototype, "onSave", null);
432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseCommunicationsComponent, decorators: [{
431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseCommunicationsComponent, decorators: [{
433
432
  type: Component,
434
- args: [{ selector: 'pw-enterprise-communications', template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Communications <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your communication here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload Communication File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Communication Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Communications...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}a.previous i{top:0}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}::ng-deep .file-upload-support-details .p-fileupload .p-fileupload-content{padding:1rem}::ng-deep .file-upload-support-details .p-fileupload-content .p-fileupload-files .p-fileupload-row>:first-child{display:flex}\n"] }]
433
+ args: [{ selector: 'pw-enterprise-communications', standalone: false, template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Communications <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your communication here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload Communication File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Communication Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Communications...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}a.previous i{top:0}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}::ng-deep .file-upload-support-details .p-fileupload .p-fileupload-content{padding:1rem}::ng-deep .file-upload-support-details .p-fileupload-content .p-fileupload-files .p-fileupload-row>:first-child{display:flex}\n"] }]
435
434
  }], ctorParameters: () => [{ type: i1.GroupService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { onSave: [] } });
436
435
 
437
436
  class EnterpriseInsightsComponent extends AppBaseComponent {
@@ -460,7 +459,7 @@ class EnterpriseInsightsComponent extends AppBaseComponent {
460
459
  : '')
461
460
  .subscribe(response => {
462
461
  // API now returns { items: [], totals: {} } instead of array
463
- this.graph = response?.items || response;
462
+ this.graph = response?.items ?? response;
464
463
  })
465
464
  .add(() => {
466
465
  this.isLoaded = true;
@@ -473,12 +472,12 @@ class EnterpriseInsightsComponent extends AppBaseComponent {
473
472
  ngOnDestroy() {
474
473
  super.ngOnDestroy();
475
474
  }
476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseInsightsComponent, deps: [{ token: i1.SubscriptionService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
477
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseInsightsComponent, selector: "pw-enterprise-insights", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n <p *ngIf=\"hasAccess\">Please find below some insight for your Enterprise subscription.</p>\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n <div class=\"col-12\"\n *ngIf=\"hasAccess\">\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n </ng-template>\n </div>\n\n <div *ngIf=\"!hasAccess && isLoaded\"\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "component", type: i14.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i14.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }] }); }
475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseInsightsComponent, deps: [{ token: i1.SubscriptionService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
476
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseInsightsComponent, isStandalone: false, selector: "pw-enterprise-insights", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n <p *ngIf=\"hasAccess\">Please find below some insight for your Enterprise subscription.</p>\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n <div class=\"col-12\"\n *ngIf=\"hasAccess\">\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n </ng-template>\n </div>\n\n <div *ngIf=\"!hasAccess && isLoaded\"\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "component", type: i13.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i13.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }] }); }
478
477
  }
479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseInsightsComponent, decorators: [{
478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseInsightsComponent, decorators: [{
480
479
  type: Component,
481
- args: [{ selector: 'pw-enterprise-insights', template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n <p *ngIf=\"hasAccess\">Please find below some insight for your Enterprise subscription.</p>\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n <div class=\"col-12\"\n *ngIf=\"hasAccess\">\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n </ng-template>\n </div>\n\n <div *ngIf=\"!hasAccess && isLoaded\"\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n</div>\n" }]
480
+ args: [{ selector: 'pw-enterprise-insights', standalone: false, template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n <p *ngIf=\"hasAccess\">Please find below some insight for your Enterprise subscription.</p>\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n <div class=\"col-12\"\n *ngIf=\"hasAccess\">\n <ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n </ng-template>\n </div>\n\n <div *ngIf=\"!hasAccess && isLoaded\"\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n</div>\n" }]
482
481
  }], ctorParameters: () => [{ type: i1.SubscriptionService }, { type: i0.Injector }] });
483
482
 
484
483
  class EnterpriseMembersComponent extends AppBaseComponent {
@@ -745,8 +744,8 @@ class EnterpriseMembersComponent extends AppBaseComponent {
745
744
  }
746
745
  onDelete(user) {
747
746
  swal.fire({
748
- title: 'Remove member',
749
- text: `Are you sure you want to remove ${user.first_name} from your subscription?`,
747
+ title: 'Remove user from subscription',
748
+ text: `Are you sure you want to remove ${user.first_name} from this subscription?`,
750
749
  showCancelButton: true,
751
750
  reverseButtons: true,
752
751
  icon: 'warning'
@@ -763,7 +762,7 @@ class EnterpriseMembersComponent extends AppBaseComponent {
763
762
  });
764
763
  }
765
764
  else {
766
- this.toast.success(response.error.message);
765
+ this.toast.error(response.error.message);
767
766
  }
768
767
  });
769
768
  }
@@ -799,8 +798,8 @@ class EnterpriseMembersComponent extends AppBaseComponent {
799
798
  ngOnDestroy() {
800
799
  super.ngOnDestroy();
801
800
  }
802
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseMembersComponent, deps: [{ token: i0.Injector }, { token: i1$1.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.AuthService }, { token: i3$1.AdminService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
803
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseMembersComponent, selector: "pw-enterprise-members", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n 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>Enterprise Members for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add members to your subscriptions</p>\n </div>\n </div>\n</section>\n<section id=\"enrolled\"\n *ngIf=\"!isAddEnabled\">\n <div class=\"row\">\n <div class=\"col-12 text-end\"\n *ngIf=\"hasAccess\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n <span class=\"ms-2\"\n *ngIf=\"!users?.has_password\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.enable_two_factor_authenticator\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.blocked\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n <span class=\"badge bg-dark mx-1\" *ngIf=\"users.id === subscriptionOwner\"> Owner </span>\n <span class=\"badge bg-success mx-1 admin-badge\" *ngIf=\"subscriptionMembers.admins.includes(users.id)\"> Admin </span>\n <span class=\"badge bg-info mx-1\" *ngIf=\"users.id === user.id\"> You </span>\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n <span *ngFor=\"let groups of users.user_groups\"><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n </td>\n <td data-head=\"Last seen\">\n <span *ngIf=\"users?.current_sign_in_at; else lastSignin\">\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.current_sign_in_at\">&nbsp;({{ users.current_sign_in_at | sinceAgo }})</span>\n </span>\n <ng-template #lastSignin>\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.last_sign_in_at\">&nbsp;({{ users.last_sign_in_at | sinceAgo }})</span>\n </span>\n </ng-template>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline d-inline-block me-2 list-action\">\n <ng-container *ngIf=\"hasAccess && allRoles.length\">\n <li class=\"enterprise-member-table mx-2 mb-2 mb-sm-0\" *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </li>\n </ng-container>\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n <ng-template [ngIf]=\"hasAccess && users.id !== subscriptionOwner\"\n [ngIfElse]=\"empty\">\n <!-- Make Admin -->\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"!this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li></li>\n <!-- Remove Admin -->\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-template>\n <ng-template #empty>\n <li class=\"mx-3\"></li>\n </ng-template>\n <ng-container *ngIf=\"hasAccess\">\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Delete\"\n *ngIf=\"users.id !== subscriptionOwner\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"subscriptionMembers?.members.length !== 0\">{{ 'Label.Total' | transloco }}: {{ subscriptionMembers?.members.length || 0 }}</span>\n </div>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n <div class=\"upload-item\"\n *ngFor=\"let f of files; let i = index\">\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n <span *ngIf=\"f.progress?.data?.percentage !== 100\">Uploading...</span>\n <span *ngIf=\"f.progress?.data?.percentage === 100\">Done</span>\n </span>\n <span class=\"speed-and-eta-text\"\n *ngIf=\"\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n \">\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px;max-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}td{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i8.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i12$1.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i14$1.NgFileDropDirective, selector: "[ngFileDrop]", inputs: ["options", "uploadInput"], outputs: ["uploadOutput"] }, { kind: "directive", type: i14$1.NgFileSelectDirective, selector: "[ngFileSelect]", inputs: ["options", "uploadInput"], outputs: ["uploadOutput"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i17.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i17.SinceAgoPipe, name: "sinceAgo" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
801
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseMembersComponent, deps: [{ token: i0.Injector }, { token: i1$1.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.AuthService }, { token: i3$1.AdminService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
802
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseMembersComponent, isStandalone: false, selector: "pw-enterprise-members", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n 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>Enterprise Members for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add members to your subscriptions</p>\n </div>\n </div>\n</section>\n<section id=\"enrolled\"\n *ngIf=\"!isAddEnabled\">\n <div class=\"row\">\n <div class=\"col-12 text-end\"\n *ngIf=\"hasAccess\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n <span class=\"ms-2\"\n *ngIf=\"!users?.has_password\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.enable_two_factor_authenticator\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.blocked\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n <span class=\"badge bg-dark mx-1\" *ngIf=\"users.id === subscriptionOwner\"> Owner </span>\n <span class=\"badge bg-success mx-1 admin-badge\" *ngIf=\"subscriptionMembers.admins.includes(users.id)\"> Admin </span>\n <span class=\"badge bg-info mx-1\" *ngIf=\"users.id === user.id\"> You </span>\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n <span *ngFor=\"let groups of users.user_groups\"><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n </td>\n <td data-head=\"Last seen\">\n <span *ngIf=\"users?.current_sign_in_at; else lastSignin\">\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.current_sign_in_at\">&nbsp;({{ users.current_sign_in_at | sinceAgo }})</span>\n </span>\n <ng-template #lastSignin>\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.last_sign_in_at\">&nbsp;({{ users.last_sign_in_at | sinceAgo }})</span>\n </span>\n </ng-template>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline d-inline-block me-2 list-action\">\n <ng-container *ngIf=\"hasAccess && allRoles.length\">\n <li class=\"enterprise-member-table mx-2 mb-2 mb-sm-0\" *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </li>\n </ng-container>\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n <ng-template [ngIf]=\"hasAccess && users.id !== subscriptionOwner\"\n [ngIfElse]=\"empty\">\n <!-- Make Admin -->\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"!this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li></li>\n <!-- Remove Admin -->\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-template>\n <ng-template #empty>\n <li class=\"mx-3\"></li>\n </ng-template>\n <ng-container *ngIf=\"hasAccess\">\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Remove user from subscription\"\n *ngIf=\"users.id !== subscriptionOwner\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"subscriptionMembers?.members.length !== 0\">{{ 'Label.Total' | transloco }}: {{ subscriptionMembers?.members.length || 0 }}</span>\n </div>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n <div class=\"upload-item\"\n *ngFor=\"let f of files; let i = index\">\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n <span *ngIf=\"f.progress?.data?.percentage !== 100\">Uploading...</span>\n <span *ngIf=\"f.progress?.data?.percentage === 100\">Done</span>\n </span>\n <span class=\"speed-and-eta-text\"\n *ngIf=\"\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n \">\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px;max-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}td{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i8.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i10.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i14.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i13$1.NgFileDropDirective, selector: "[ngFileDrop]", inputs: ["options", "uploadInput"], outputs: ["uploadOutput"] }, { kind: "directive", type: i13$1.NgFileSelectDirective, selector: "[ngFileSelect]", inputs: ["options", "uploadInput"], outputs: ["uploadOutput"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i17.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i17.SinceAgoPipe, name: "sinceAgo" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
804
803
  }
805
804
  __decorate([
806
805
  ValidateForm('form'),
@@ -808,9 +807,9 @@ __decorate([
808
807
  __metadata("design:paramtypes", []),
809
808
  __metadata("design:returntype", void 0)
810
809
  ], EnterpriseMembersComponent.prototype, "onSignUpMember", null);
811
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseMembersComponent, decorators: [{
810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseMembersComponent, decorators: [{
812
811
  type: Component,
813
- args: [{ selector: 'pw-enterprise-members', template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n 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>Enterprise Members for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add members to your subscriptions</p>\n </div>\n </div>\n</section>\n<section id=\"enrolled\"\n *ngIf=\"!isAddEnabled\">\n <div class=\"row\">\n <div class=\"col-12 text-end\"\n *ngIf=\"hasAccess\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n <span class=\"ms-2\"\n *ngIf=\"!users?.has_password\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.enable_two_factor_authenticator\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.blocked\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n <span class=\"badge bg-dark mx-1\" *ngIf=\"users.id === subscriptionOwner\"> Owner </span>\n <span class=\"badge bg-success mx-1 admin-badge\" *ngIf=\"subscriptionMembers.admins.includes(users.id)\"> Admin </span>\n <span class=\"badge bg-info mx-1\" *ngIf=\"users.id === user.id\"> You </span>\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n <span *ngFor=\"let groups of users.user_groups\"><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n </td>\n <td data-head=\"Last seen\">\n <span *ngIf=\"users?.current_sign_in_at; else lastSignin\">\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.current_sign_in_at\">&nbsp;({{ users.current_sign_in_at | sinceAgo }})</span>\n </span>\n <ng-template #lastSignin>\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.last_sign_in_at\">&nbsp;({{ users.last_sign_in_at | sinceAgo }})</span>\n </span>\n </ng-template>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline d-inline-block me-2 list-action\">\n <ng-container *ngIf=\"hasAccess && allRoles.length\">\n <li class=\"enterprise-member-table mx-2 mb-2 mb-sm-0\" *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </li>\n </ng-container>\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n <ng-template [ngIf]=\"hasAccess && users.id !== subscriptionOwner\"\n [ngIfElse]=\"empty\">\n <!-- Make Admin -->\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"!this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li></li>\n <!-- Remove Admin -->\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-template>\n <ng-template #empty>\n <li class=\"mx-3\"></li>\n </ng-template>\n <ng-container *ngIf=\"hasAccess\">\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Delete\"\n *ngIf=\"users.id !== subscriptionOwner\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"subscriptionMembers?.members.length !== 0\">{{ 'Label.Total' | transloco }}: {{ subscriptionMembers?.members.length || 0 }}</span>\n </div>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n <div class=\"upload-item\"\n *ngFor=\"let f of files; let i = index\">\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n <span *ngIf=\"f.progress?.data?.percentage !== 100\">Uploading...</span>\n <span *ngIf=\"f.progress?.data?.percentage === 100\">Done</span>\n </span>\n <span class=\"speed-and-eta-text\"\n *ngIf=\"\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n \">\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px;max-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}td{vertical-align:middle}\n"] }]
812
+ args: [{ selector: 'pw-enterprise-members', standalone: false, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n 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>Enterprise Members for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add members to your subscriptions</p>\n </div>\n </div>\n</section>\n<section id=\"enrolled\"\n *ngIf=\"!isAddEnabled\">\n <div class=\"row\">\n <div class=\"col-12 text-end\"\n *ngIf=\"hasAccess\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n <span class=\"ms-2\"\n *ngIf=\"!users?.has_password\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.enable_two_factor_authenticator\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"users?.blocked\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n <span class=\"badge bg-dark mx-1\" *ngIf=\"users.id === subscriptionOwner\"> Owner </span>\n <span class=\"badge bg-success mx-1 admin-badge\" *ngIf=\"subscriptionMembers.admins.includes(users.id)\"> Admin </span>\n <span class=\"badge bg-info mx-1\" *ngIf=\"users.id === user.id\"> You </span>\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n <span *ngFor=\"let groups of users.user_groups\"><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n </td>\n <td data-head=\"Last seen\">\n <span *ngIf=\"users?.current_sign_in_at; else lastSignin\">\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.current_sign_in_at\">&nbsp;({{ users.current_sign_in_at | sinceAgo }})</span>\n </span>\n <ng-template #lastSignin>\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n <span *ngIf=\"users.last_sign_in_at\">&nbsp;({{ users.last_sign_in_at | sinceAgo }})</span>\n </span>\n </ng-template>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline d-inline-block me-2 list-action\">\n <ng-container *ngIf=\"hasAccess && allRoles.length\">\n <li class=\"enterprise-member-table mx-2 mb-2 mb-sm-0\" *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </li>\n </ng-container>\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n <ng-template [ngIf]=\"hasAccess && users.id !== subscriptionOwner\"\n [ngIfElse]=\"empty\">\n <!-- Make Admin -->\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"!this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li></li>\n <!-- Remove Admin -->\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n *ngIf=\"this.subscriptionMembers.admins.includes(users.id)\">\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-template>\n <ng-template #empty>\n <li class=\"mx-3\"></li>\n </ng-template>\n <ng-container *ngIf=\"hasAccess\">\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Remove user from subscription\"\n *ngIf=\"users.id !== subscriptionOwner\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\" *ngIf=\"subscriptionMembers?.members.length !== 0\">{{ 'Label.Total' | transloco }}: {{ subscriptionMembers?.members.length || 0 }}</span>\n </div>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n <div class=\"upload-item\"\n *ngFor=\"let f of files; let i = index\">\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n <span *ngIf=\"f.progress?.data?.percentage !== 100\">Uploading...</span>\n <span *ngIf=\"f.progress?.data?.percentage === 100\">Done</span>\n </span>\n <span class=\"speed-and-eta-text\"\n *ngIf=\"\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n \">\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px;max-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}td{vertical-align:middle}\n"] }]
814
813
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$1.UntypedFormBuilder }, { type: i1.SubscriptionService }, { type: i1.AuthService }, { type: i3$1.AdminService }, { type: i0.ChangeDetectorRef }], propDecorators: { onSignUpMember: [] } });
815
814
 
816
815
  class EnterprisePartnersComponent extends AppBaseComponent {
@@ -1068,12 +1067,12 @@ class EnterprisePartnersComponent extends AppBaseComponent {
1068
1067
  }
1069
1068
  return [];
1070
1069
  }
1071
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterprisePartnersComponent, deps: [{ token: i0.Injector }, { token: i1$1.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.AuthService }, { token: i3$1.AdminService }, { token: i1.ProductService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1072
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterprisePartnersComponent, selector: "pw-enterprise-partners", viewQueries: [{ propertyName: "refProduct", first: true, predicate: ["refProduct"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add partners to your subscriptions</p>\n </div>\n </div>\n</section>\n<section *ngIf=\"!isAddEnabled\">\n\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n </div>\n </div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search partner...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n\n<pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n</div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}.col-product{width:61%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i11$1.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i14.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i14.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }] }); }
1070
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterprisePartnersComponent, deps: [{ token: i0.Injector }, { token: i1$1.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.AuthService }, { token: i3$1.AdminService }, { token: i1.ProductService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1071
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterprisePartnersComponent, isStandalone: false, selector: "pw-enterprise-partners", viewQueries: [{ propertyName: "refProduct", first: true, predicate: ["refProduct"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add partners to your subscriptions</p>\n </div>\n </div>\n</section>\n<section *ngIf=\"!isAddEnabled\">\n\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n </div>\n </div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search partner...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n\n<pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n</div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}.col-product{width:61%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i11.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i13.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i13.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }] }); }
1073
1072
  }
1074
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterprisePartnersComponent, decorators: [{
1073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterprisePartnersComponent, decorators: [{
1075
1074
  type: Component,
1076
- args: [{ selector: 'pw-enterprise-partners', template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add partners to your subscriptions</p>\n </div>\n </div>\n</section>\n<section *ngIf=\"!isAddEnabled\">\n\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n </div>\n </div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search partner...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n\n<pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n</div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}.col-product{width:61%}\n"] }]
1075
+ args: [{ selector: 'pw-enterprise-partners', standalone: false, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n <a *ngIf=\"isAddEnabled\"\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n <p *ngIf=\"!isAddEnabled\">\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n <p *ngIf=\"isAddEnabled\">Here you can add partners to your subscriptions</p>\n </div>\n </div>\n</section>\n<section *ngIf=\"!isAddEnabled\">\n\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n *ngIf=\"!isAddEnabled\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n </div>\n </div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n\n<div class=\"row faqlist primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search partner...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n\n<pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n</section>\n\n<section id=\"manage-members\"\n *ngIf=\"isAddEnabled\">\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div formArrayName=\"emailsFormArray\"\n *ngFor=\"\n let item of form.get('emailsFormArray')['controls'];\n let i = index;\n let last = last\n \">\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" for=\"Email\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" />\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n *ngIf=\"last && emailsFormArray?.controls?.length < availableUnits\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n</div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}a.previous i{top:0}.pw-tab .card{min-height:auto}.enterprise-member-table{vertical-align:middle;min-width:200px}.delete-user{margin-left:15px}.title{display:flex}.table-row{vertical-align:top}.admin-badge{background-color:var(--first)}.col-product{width:61%}\n"] }]
1077
1076
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$1.UntypedFormBuilder }, { type: i1.SubscriptionService }, { type: i1.AuthService }, { type: i3$1.AdminService }, { type: i1.ProductService }, { type: i0.ChangeDetectorRef }], propDecorators: { refProduct: [{
1078
1077
  type: ViewChild,
1079
1078
  args: ['refProduct']
@@ -1135,12 +1134,12 @@ class EnterpriseSubscriptionsComponent extends AppBaseComponent {
1135
1134
  ngOnDestroy() {
1136
1135
  super.ngOnDestroy();
1137
1136
  }
1138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseSubscriptionsComponent, deps: [{ token: i0.Injector }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
1139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseSubscriptionsComponent, selector: "pw-enterprise-subscriptions", usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n *ngFor=\"let item of subscriptions\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n *ngIf=\"subscriptions.length === 0\">\n </pw-no-data>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i14.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }] }); }
1137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseSubscriptionsComponent, deps: [{ token: i0.Injector }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component }); }
1138
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseSubscriptionsComponent, isStandalone: false, selector: "pw-enterprise-subscriptions", usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n *ngFor=\"let item of subscriptions\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n *ngIf=\"subscriptions.length === 0\">\n </pw-no-data>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i13.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i14.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
1140
1139
  }
1141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseSubscriptionsComponent, decorators: [{
1140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseSubscriptionsComponent, decorators: [{
1142
1141
  type: Component,
1143
- args: [{ selector: 'pw-enterprise-subscriptions', template: "<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n *ngFor=\"let item of subscriptions\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n *ngIf=\"subscriptions.length === 0\">\n </pw-no-data>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </div>\n</div>\n" }]
1142
+ args: [{ selector: 'pw-enterprise-subscriptions', standalone: false, template: "<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n *ngFor=\"let item of subscriptions\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n *ngIf=\"subscriptions.length === 0\">\n </pw-no-data>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </div>\n</div>\n" }]
1144
1143
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.DataService }] });
1145
1144
 
1146
1145
  class EnterpriseTabsComponent extends AppBaseComponent {
@@ -1190,12 +1189,12 @@ class EnterpriseTabsComponent extends AppBaseComponent {
1190
1189
  }
1191
1190
  ];
1192
1191
  }
1193
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseTabsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1194
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseTabsComponent, selector: "pw-enterprise-tabs", usesInheritance: true, ngImport: i0, template: "<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n", dependencies: [{ kind: "component", type: i14.PwTabsComponent, selector: "pw-tabs", inputs: ["items", "withSubscription"] }] }); }
1192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseTabsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseTabsComponent, isStandalone: false, selector: "pw-enterprise-tabs", usesInheritance: true, ngImport: i0, template: "<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n", dependencies: [{ kind: "component", type: i13.PwTabsComponent, selector: "pw-tabs", inputs: ["items", "withSubscription"] }] }); }
1195
1194
  }
1196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseTabsComponent, decorators: [{
1195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseTabsComponent, decorators: [{
1197
1196
  type: Component,
1198
- args: [{ selector: 'pw-enterprise-tabs', template: "<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n" }]
1197
+ args: [{ selector: 'pw-enterprise-tabs', standalone: false, template: "<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n" }]
1199
1198
  }], ctorParameters: () => [{ type: i0.Injector }] });
1200
1199
 
1201
1200
  class EnterpriseWikiComponent extends AppBaseComponent {
@@ -1483,8 +1482,8 @@ class EnterpriseWikiComponent extends AppBaseComponent {
1483
1482
  ngOnDestroy() {
1484
1483
  super.ngOnDestroy();
1485
1484
  }
1486
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseWikiComponent, deps: [{ token: i1.GroupService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1487
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseWikiComponent, selector: "pw-enterprise-wiki", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Documentation <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Select Team'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your documentation page here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Documentation Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Documentation...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}a.previous i{top:0}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i14.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i14.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "component", type: i15.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i17.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
1485
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseWikiComponent, deps: [{ token: i1.GroupService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1486
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseWikiComponent, isStandalone: false, selector: "pw-enterprise-wiki", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Documentation <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Select Team'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your documentation page here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Documentation Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Documentation...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}a.previous i{top:0}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i9$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i13.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i13.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i14.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i15.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i16.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i17.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
1488
1487
  }
1489
1488
  __decorate([
1490
1489
  ValidateForm('form'),
@@ -1492,9 +1491,9 @@ __decorate([
1492
1491
  __metadata("design:paramtypes", []),
1493
1492
  __metadata("design:returntype", void 0)
1494
1493
  ], EnterpriseWikiComponent.prototype, "onSave", null);
1495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseWikiComponent, decorators: [{
1494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseWikiComponent, decorators: [{
1496
1495
  type: Component,
1497
- args: [{ selector: 'pw-enterprise-wiki', template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Documentation <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Select Team'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your documentation page here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Documentation Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Documentation...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}a.previous i{top:0}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}\n"] }]
1496
+ args: [{ selector: 'pw-enterprise-wiki', standalone: false, template: "<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n <a *ngIf=\"isEdit\"\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 *ngIf=\"isEdit\" class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n <h2 *ngIf=\"!isEdit\" [ngClass]=\"{ 'mt-2': isEdit }\">Documentation <span *ngIf=\"groupId\">for {{ groupName }}</span></h2>\n </div>\n <p *ngIf=\"!isEdit\">\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n </div>\n </div>\n</section>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded && isEdit\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-container *ngIf=\"isEdit && isLoaded\">\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\">\n <p-dropdown\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Select Team'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\">\n <ui-switch class=\"d-block\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"published\">\n <ui-switch class=\"d-block\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add files to your documentation page here</h4>\n <div class=\"mb-3\">\n <label for=\"file\">Upload File</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <div *ngIf=\"filesData?.length\"\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n <div class=\"communication-files\"\n *ngFor=\"let files of filesData; let i = index\">\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!isEdit\">\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-dropdown\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n placeholder=\"Select Documentation Team\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-dropdown>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Documentation...\"\n class=\"mw-90\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n <span *ngFor=\"let files of item.group_communication_files\">\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n <span *ngIf=\"item.visible_globally\"\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span><span *ngIf=\"item.published\"\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span><span *ngIf=\"item.pushed\"\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n <div *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.table-row{vertical-align:top}.communication-files{display:flex!important}.search-contact{display:flex;justify-content:space-between}@media (min-width: 320px) and (max-width: 720px){.search-contact{display:block}}a.previous i{top:0}.eye-icon{color:var(--first);font-size:18px;padding-left:3px;padding-right:3px}.title{display:flex}.drag-drop-text{padding:20px;border:2px dashed #ccc;text-align:center;color:#aaa;margin-top:10px}\n"] }]
1498
1497
  }], ctorParameters: () => [{ type: i1.GroupService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { onSave: [] } });
1499
1498
 
1500
1499
  class EnterpriseWikiDetailsComponent extends AppBaseComponent {
@@ -1538,12 +1537,12 @@ class EnterpriseWikiDetailsComponent extends AppBaseComponent {
1538
1537
  ngOnDestroy() {
1539
1538
  super.ngOnDestroy();
1540
1539
  }
1541
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseWikiDetailsComponent, deps: [{ token: i0.Injector }, { token: i1.GroupService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1542
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EnterpriseWikiDetailsComponent, selector: "pw-enterprise-wiki-details", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.ql-container{resize:none!important}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
1540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseWikiDetailsComponent, deps: [{ token: i0.Injector }, { token: i1.GroupService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EnterpriseWikiDetailsComponent, isStandalone: false, selector: "pw-enterprise-wiki-details", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.ql-container{resize:none!important}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "component", type: i12.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i14.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: i17.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
1543
1542
  }
1544
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseWikiDetailsComponent, decorators: [{
1543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseWikiDetailsComponent, decorators: [{
1545
1544
  type: Component,
1546
- args: [{ selector: 'pw-enterprise-wiki-details', template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.ql-container{resize:none!important}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"] }]
1545
+ args: [{ selector: 'pw-enterprise-wiki-details', standalone: false, template: "<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div *ngIf=\"isLoaded\">\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\" *ngIf=\"communicationDetails\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n <span *ngIf=\"communicationDetails?.pushed_at\" class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-YYYY') + ')' }}</span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n <p *ngFor=\"\n let files of communicationDetails?.group_communication_files;\n trackBy: trackByFileId\n \">\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n\n", styles: [".badge-success,.badge-danger{padding:.5rem 1rem;border:1px solid black;font-size:1rem;display:inline-block;text-align:center}.badge-success{background-color:green;color:#fff}.badge-danger{background-color:red;color:#fff}.message-icon{display:flex}.ql-container{resize:none!important}.date-span{padding:.5rem 1rem;font-size:1rem;border:1px solid black;display:inline-block;text-align:center}.light-gray{background-color:#d3d3d3;color:#fff}.gray{background-color:gray;color:#fff}.card-body{padding:1.5rem}h4,h5{font-weight:700;margin-bottom:.5rem}p{margin-bottom:1rem}.d-flex{display:flex;align-items:center}.me-3{margin-right:1rem}.container-fluid{padding:0}.mb-3{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.button-width{width:100px}\n"] }]
1547
1546
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.GroupService }, { type: i2.DomSanitizer }] });
1548
1547
 
1549
1548
  PlotlyViaCDNModule.setPlotlyVersion('1.55.2');
@@ -1640,8 +1639,8 @@ const routes = [
1640
1639
  }
1641
1640
  ];
1642
1641
  class EnterpriseModule {
1643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1644
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseModule, declarations: [EnterpriseSubscriptionsComponent,
1642
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1643
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseModule, declarations: [EnterpriseSubscriptionsComponent,
1645
1644
  EnterpriseMembersComponent,
1646
1645
  EnterprisePartnersComponent,
1647
1646
  EnterpriseTabsComponent,
@@ -1661,9 +1660,9 @@ class EnterpriseModule {
1661
1660
  ReactiveFormsModule,
1662
1661
  PipesModule,
1663
1662
  DirectivesModule,
1664
- SharedComponentsModule, i12.RouterModule, NgxUploaderModule,
1663
+ SharedComponentsModule, i14.RouterModule, NgxUploaderModule,
1665
1664
  MultiSelectModule, i15.QuillModule] }); }
1666
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseModule, imports: [CommonModule,
1665
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseModule, imports: [CommonModule,
1667
1666
  InputTextModule,
1668
1667
  CoreTranslocoModule,
1669
1668
  PlotlyViaCDNModule,
@@ -1684,7 +1683,7 @@ class EnterpriseModule {
1684
1683
  // LazyLoadModules
1685
1684
  ] }); }
1686
1685
  }
1687
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EnterpriseModule, decorators: [{
1686
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EnterpriseModule, decorators: [{
1688
1687
  type: NgModule,
1689
1688
  args: [{
1690
1689
  declarations: [