@posiwise/shared-components 0.0.110 → 0.0.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/esm2022/index.mjs +3 -2
  2. package/esm2022/lib/authenticator/authenticator.component.mjs +39 -0
  3. package/esm2022/lib/clearbit-icon/clearbit-icon.component.mjs +9 -9
  4. package/esm2022/lib/custom-uploader/custom-uploader.component.mjs +3 -3
  5. package/esm2022/lib/input-container/input-container.component.mjs +7 -4
  6. package/esm2022/lib/label-management/group-definition/group-definition.component.mjs +3 -3
  7. package/esm2022/lib/label-management/groups/groups.component.mjs +3 -3
  8. package/esm2022/lib/number-picker/number-picker.component.mjs +7 -8
  9. package/esm2022/lib/range-date-picker/date-range-picker.component.mjs +48 -0
  10. package/esm2022/lib/shared/shared-component.interface.mjs +1 -1
  11. package/esm2022/lib/shared-components.module.mjs +18 -10
  12. package/fesm2022/posiwise-shared-components.mjs +115 -63
  13. package/fesm2022/posiwise-shared-components.mjs.map +1 -1
  14. package/index.d.ts +2 -1
  15. package/lib/clearbit-icon/clearbit-icon.component.d.ts +4 -4
  16. package/lib/input-container/input-container.component.d.ts +2 -1
  17. package/lib/label-management/group-definition/group-definition.component.d.ts +1 -1
  18. package/lib/number-picker/number-picker.component.d.ts +2 -2
  19. package/lib/range-date-picker/date-range-picker.component.d.ts +26 -0
  20. package/lib/shared/shared-component.interface.d.ts +1 -1
  21. package/lib/shared-components.module.d.ts +37 -35
  22. package/package.json +1 -1
  23. package/esm2022/lib/autheticator/authenticator.component.mjs +0 -39
  24. /package/lib/{autheticator → authenticator}/authenticator.component.d.ts +0 -0
@@ -1,10 +1,10 @@
1
1
  import * as i3 from '@angular/common';
2
2
  import { DOCUMENT, CommonModule, NgIf } from '@angular/common';
3
- import * as i2 from '@angular/forms';
3
+ import * as i1$1 from '@angular/forms';
4
4
  import { NG_VALUE_ACCESSOR, UntypedFormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import * as i2$1 from 'ngx-image-cropper';
5
+ import * as i2 from 'ngx-image-cropper';
6
6
  import { ImageCropperModule } from 'ngx-image-cropper';
7
- import * as i1$2 from 'primeng/tabmenu';
7
+ import * as i1$3 from 'primeng/tabmenu';
8
8
  import { TabMenuModule } from 'primeng/tabmenu';
9
9
  import { MultiSelectModule } from 'primeng/multiselect';
10
10
  import * as i3$1 from 'primeng/progressspinner';
@@ -15,13 +15,15 @@ import * as i9 from 'primeng/autocomplete';
15
15
  import { AutoCompleteModule } from 'primeng/autocomplete';
16
16
  import * as i6 from 'ngx-ui-switch';
17
17
  import { UiSwitchModule } from 'ngx-ui-switch';
18
- import * as i2$2 from 'primeng/button';
18
+ import * as i2$1 from 'primeng/button';
19
19
  import { ButtonModule } from 'primeng/button';
20
+ import * as i2$5 from 'ngx-daterangepicker-material';
21
+ import { DaterangepickerDirective, NgxDaterangepickerMd } from 'ngx-daterangepicker-material';
20
22
  import * as i0 from '@angular/core';
21
23
  import { Component, Input, EventEmitter, ViewChild, Output, Inject, Optional, Host, SkipSelf, ContentChild, NgModule } from '@angular/core';
22
24
  import * as i5 from '@ng-bootstrap/ng-bootstrap';
23
25
  import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
24
- import * as i1$1 from '@posiwise/directives';
26
+ import * as i1$2 from '@posiwise/directives';
25
27
  import { DirectivesModule } from '@posiwise/directives';
26
28
  import { CoreTranslocoModule } from '@posiwise/core-transloco';
27
29
  import { PipesModule } from '@posiwise/pipes';
@@ -32,14 +34,14 @@ import { StatusCodes } from 'http-status-codes';
32
34
  import { AppBaseComponent } from '@posiwise/app-base-component';
33
35
  import * as i4 from '@jsverse/transloco';
34
36
  import { HelperService } from '@posiwise/helper-service';
35
- import * as i2$3 from '@angular/router';
37
+ import * as i2$2 from '@angular/router';
36
38
  import { NavigationEnd } from '@angular/router';
37
39
  import map from 'lodash/map';
38
- import * as i2$4 from 'primeng/tooltip';
39
- import * as i1$3 from '@posiwise/admin-module-utils';
40
- import * as i2$5 from '@angular/platform-browser';
41
- import * as i1$4 from '@posiwise/app-config-service';
42
- import * as i1$5 from '@posiwise/app-loader';
40
+ import * as i2$3 from 'primeng/tooltip';
41
+ import * as i1$4 from '@posiwise/admin-module-utils';
42
+ import * as i2$4 from '@angular/platform-browser';
43
+ import * as i1$5 from '@posiwise/app-config-service';
44
+ import * as i1$6 from '@posiwise/app-loader';
43
45
  import { AppLoaderModule } from '@posiwise/app-loader';
44
46
  import * as i4$1 from 'primeng/api';
45
47
  import { __decorate, __metadata } from 'tslib';
@@ -141,7 +143,7 @@ class PasswordValidationComponent extends AppBaseComponent {
141
143
  }
142
144
  }
143
145
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PasswordValidationComponent, deps: [{ token: i0.Injector }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PasswordValidationComponent, selector: "pw-password-validation", outputs: { successEvent: "successEvent" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ 'User.Account.Message.EnterPassword' | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
146
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PasswordValidationComponent, selector: "pw-password-validation", outputs: { successEvent: "successEvent" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ 'User.Account.Message.EnterPassword' | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
145
147
  }
146
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PasswordValidationComponent, decorators: [{
147
149
  type: Component,
@@ -223,7 +225,7 @@ class ProfileImageCropperComponent {
223
225
  this.closeEvent.emit();
224
226
  }
225
227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: { aspectRatio: "aspectRatio" }, outputs: { imageSelectionEvent: "imageSelectionEvent", closeEvent: "closeEvent", fileChangeEvent: "fileChangeEvent" }, ngImport: i0, template: "<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label for=\"custom-input\">\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n (keydown.enter)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n (keydown.enter)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n (keydown.enter)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n (keydown.enter)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div *ngIf=\"croppedImage\" class=\"col-4 mt-2\">\n <img [src]=\"croppedImage\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\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)}.image-cropper label{background:var(--first);border-radius:5px;color:#fff;display:table;font-size:13px;font-weight:500;padding:7px}.image-cropper input[type=file]{display:none}.card-footer{background-color:transparent;left:0}\n"], dependencies: [{ kind: "directive", type: i1$1.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i1$1.LazyImgDirective, selector: "img" }, { kind: "component", type: i2$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "cropperFrameAriaLabel", "output", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: { aspectRatio: "aspectRatio" }, outputs: { imageSelectionEvent: "imageSelectionEvent", closeEvent: "closeEvent", fileChangeEvent: "fileChangeEvent" }, ngImport: i0, template: "<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label for=\"custom-input\">\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n (keydown.enter)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n (keydown.enter)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n (keydown.enter)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n (keydown.enter)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div *ngIf=\"croppedImage\" class=\"col-4 mt-2\">\n <img [src]=\"croppedImage\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\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)}.image-cropper label{background:var(--first);border-radius:5px;color:#fff;display:table;font-size:13px;font-weight:500;padding:7px}.image-cropper input[type=file]{display:none}.card-footer{background-color:transparent;left:0}\n"], dependencies: [{ kind: "directive", type: i1$2.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i1$2.LazyImgDirective, selector: "img" }, { kind: "component", type: i2.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "cropperFrameAriaLabel", "output", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
227
229
  }
228
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperComponent, decorators: [{
229
231
  type: Component,
@@ -313,11 +315,11 @@ class CustomUploaderComponent extends AppBaseComponent {
313
315
  });
314
316
  }
315
317
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, deps: [{ token: i0.Injector }, { token: i5.NgbModal }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
316
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\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)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "directive", type: i2$2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i1$1.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
318
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\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)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "directive", type: i2$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i1$2.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
317
319
  }
318
320
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, decorators: [{
319
321
  type: Component,
320
- args: [{ selector: 'pw-custom-uploader', template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\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)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"] }]
322
+ args: [{ selector: 'pw-custom-uploader', template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\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)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"] }]
321
323
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i5.NgbModal }, { type: Document, decorators: [{
322
324
  type: Inject,
323
325
  args: [DOCUMENT]
@@ -361,7 +363,7 @@ class PwTabsComponent extends AppBaseComponent {
361
363
  this.routeEventSubscription.unsubscribe();
362
364
  }
363
365
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PwTabsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
364
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PwTabsComponent, selector: "pw-tabs", inputs: { items: "items", withSubscription: "withSubscription" }, viewQueries: [{ propertyName: "tabInstance", first: true, predicate: ["tabMenu"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu [model]=\"items\"\n #tabMenu></p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1$2.TabMenu, selector: "p-tabMenu", inputs: ["model", "activeItem", "scrollable", "popup", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["activeItemChange"] }, { kind: "directive", type: i2$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
366
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PwTabsComponent, selector: "pw-tabs", inputs: { items: "items", withSubscription: "withSubscription" }, viewQueries: [{ propertyName: "tabInstance", first: true, predicate: ["tabMenu"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu [model]=\"items\"\n #tabMenu></p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1$3.TabMenu, selector: "p-tabMenu", inputs: ["model", "activeItem", "scrollable", "popup", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["activeItemChange"] }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
365
367
  }
366
368
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PwTabsComponent, decorators: [{
367
369
  type: Component,
@@ -503,6 +505,7 @@ class InputContainerComponent {
503
505
  this.errorMsg = 'An error occurred';
504
506
  this.isReadOnly = false;
505
507
  this.showTriangle = false;
508
+ this.isLeftTooltip = false;
506
509
  }
507
510
  ngOnInit() {
508
511
  if (this.controlContainer) {
@@ -523,15 +526,15 @@ class InputContainerComponent {
523
526
  window.console.warn("Can't find parent FormGroup directive");
524
527
  }
525
528
  }
526
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InputContainerComponent, deps: [{ token: i2.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
527
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: InputContainerComponent, selector: "pw-input-container", inputs: { name: "name", label: "label", labelClass: "labelClass", tooltipPosition: "tooltipPosition", required: "required", errorMsg: "errorMsg", isReadOnly: "isReadOnly", showTooltip: "showTooltip", tooltipText: "tooltipText", showTriangle: "showTriangle", afterLabel: "afterLabel", showAfterLabel: "showAfterLabel", showTriangleText: "showTriangleText" }, providers: [
529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InputContainerComponent, deps: [{ token: i1$1.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
530
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: InputContainerComponent, selector: "pw-input-container", inputs: { name: "name", label: "label", labelClass: "labelClass", tooltipPosition: "tooltipPosition", required: "required", errorMsg: "errorMsg", isReadOnly: "isReadOnly", showTooltip: "showTooltip", tooltipText: "tooltipText", showTriangle: "showTriangle", afterLabel: "afterLabel", showAfterLabel: "showAfterLabel", showTriangleText: "showTriangleText", isLeftTooltip: "isLeftTooltip" }, providers: [
528
531
  {
529
532
  provide: NG_VALUE_ACCESSOR,
530
533
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
531
534
  useExisting: InputContainerComponent,
532
535
  multi: true
533
536
  }
534
- ], ngImport: i0, template: "<label class=\"mb-2\" for=\"Label\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTooltip && tooltipText\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTriangle\"\n [pTooltip]=\"'Last month this value was set to ' + showTriangleText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <!-- after label -->\n <span *ngIf=\"afterLabel && showAfterLabel\"\n [innerHTML]=\"afterLabel\"></span>\n <!-- after label end -->\n</label>\n\n<div class=\"mb-3\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"control?.errors\">\n <pw-field-error-display [displayError]=\"control?.invalid && control?.touched\"\n [errorMsg]=\"errorMsg | transloco\">\n </pw-field-error-display>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"], dependencies: [{ kind: "directive", type: i2$4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: ["errorMsg", "displayError"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
537
+ ], ngImport: i0, template: "<label class=\"mb-2\" for=\"Label\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n <span [ngClass]=\"{ 'left-info-circle': isLeftTooltip }\" class=\"info-circle tooltip-wrap ms-1\" *ngIf=\"showTooltip && tooltipText\">\n <span class=\"tooltiptext gradient-custom-branding\" [ngClass]=\"{ 'left-field-tooltip': isLeftTooltip }\">\n {{ tooltipText }}\n </span>\n </span>\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTriangle\"\n [pTooltip]=\"'Last month this value was set to ' + showTriangleText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <!-- after label -->\n <span *ngIf=\"afterLabel && showAfterLabel\"\n [innerHTML]=\"afterLabel\"></span>\n <!-- after label end -->\n</label>\n\n<div class=\"mb-3\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"control?.errors\">\n <pw-field-error-display [displayError]=\"control?.invalid && control?.touched\"\n [errorMsg]=\"errorMsg | transloco\">\n </pw-field-error-display>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"], dependencies: [{ kind: "directive", type: i2$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: ["errorMsg", "displayError"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
535
538
  }
536
539
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InputContainerComponent, decorators: [{
537
540
  type: Component,
@@ -542,8 +545,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
542
545
  useExisting: InputContainerComponent,
543
546
  multi: true
544
547
  }
545
- ], template: "<label class=\"mb-2\" for=\"Label\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTooltip && tooltipText\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTriangle\"\n [pTooltip]=\"'Last month this value was set to ' + showTriangleText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <!-- after label -->\n <span *ngIf=\"afterLabel && showAfterLabel\"\n [innerHTML]=\"afterLabel\"></span>\n <!-- after label end -->\n</label>\n\n<div class=\"mb-3\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"control?.errors\">\n <pw-field-error-display [displayError]=\"control?.invalid && control?.touched\"\n [errorMsg]=\"errorMsg | transloco\">\n </pw-field-error-display>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"] }]
546
- }], ctorParameters: () => [{ type: i2.ControlContainer, decorators: [{
548
+ ], template: "<label class=\"mb-2\" for=\"Label\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n <span [ngClass]=\"{ 'left-info-circle': isLeftTooltip }\" class=\"info-circle tooltip-wrap ms-1\" *ngIf=\"showTooltip && tooltipText\">\n <span class=\"tooltiptext gradient-custom-branding\" [ngClass]=\"{ 'left-field-tooltip': isLeftTooltip }\">\n {{ tooltipText }}\n </span>\n </span>\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTriangle\"\n [pTooltip]=\"'Last month this value was set to ' + showTriangleText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n <!-- after label -->\n <span *ngIf=\"afterLabel && showAfterLabel\"\n [innerHTML]=\"afterLabel\"></span>\n <!-- after label end -->\n</label>\n\n<div class=\"mb-3\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"control?.errors\">\n <pw-field-error-display [displayError]=\"control?.invalid && control?.touched\"\n [errorMsg]=\"errorMsg | transloco\">\n </pw-field-error-display>\n </ng-container>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"] }]
549
+ }], ctorParameters: () => [{ type: i1$1.ControlContainer, decorators: [{
547
550
  type: Optional
548
551
  }, {
549
552
  type: Host
@@ -575,6 +578,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
575
578
  type: Input
576
579
  }], showTriangleText: [{
577
580
  type: Input
581
+ }], isLeftTooltip: [{
582
+ type: Input
578
583
  }] } });
579
584
 
580
585
  class HeaderComponent extends AppBaseComponent {
@@ -594,7 +599,7 @@ class HeaderComponent extends AppBaseComponent {
594
599
  window.location.href = '/login';
595
600
  }
596
601
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Injector }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
597
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: HeaderComponent, selector: "pw-header", inputs: { landing: "landing" }, usesInheritance: true, ngImport: i0, template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item contact-button\">\n <a href=\"/\"\n class=\"\">{{ 'Button.Home' | transloco }}</a>\n </li>\n <li *ngIf=\"!loggedIn\" class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.navbar-blue{background-color:var(--first);box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top-nav{display:block!important;height:60px}.navbar-toggle{display:none}.navbar-toggle .icon-bar{color:#fff}.nav-outer{text-align:right}.nav-outer nav{background:none!important;display:inline-block;float:none;width:auto}.nav-outer li a{color:#fff;font-size:18px;margin:0 0 0 30px;text-transform:capitalize}.nav-outer li a:hover{color:#fff;text-decoration:none}.nav-outer li a:focus{color:#fff}.navbar-nav li{display:inline-block}@media screen and (max-width: 1199px){.nav-outer li a{margin:0 10px}}@media screen and (max-width: 991px){.icon-bar{background-color:#fff;border-radius:1px;display:block;height:2px;margin-top:4px;width:22px}.navbar-toggle{background-color:#ffb92b!important;background-image:none;border:1px solid rgb(255,255,255);border-radius:4px;display:block!important;float:right;margin-top:4px;padding:9px 10px;position:relative}.collapse{display:none!important}.collapse.show{display:block!important}.nav-outer nav{background:#ffb92b!important;display:inline-block;float:left;padding:20px;width:100%}.nav-outer li a{margin:0;padding:0}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:normal;-webkit-box-orient:horizontal;flex-direction:column}li.nav-item{float:left;margin-bottom:12px;text-align:left;width:100%}.navbar-expand-sm{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-box-pack:start;flex-flow:column nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.nav-outer li a:hover{color:#0a56d3}.contact-button a,.login-button a,.nav-item{background:none;color:#fff!important;font-weight:600}.contact-button a:hover,.login-button a:hover,.nav-item a:hover{color:#0a56d3!important}}@media screen and (max-width: 767px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 575px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 375px){.navbar .container{padding:0!important}}@media (min-width: 641px) and (max-width: 991px){.navbar-toggle{margin-top:6px}}.header-logo{height:45px;width:205px}.login-button a{background-color:var(--second);color:#fff}.login-button a:hover{background-color:#fff;color:var(--second)!important}.contact-button a{background-color:var(--third);color:#fff}.contact-button a:hover{background-color:#fff;color:var(--third)!important}.fixed-top{position:fixed!important}\n"], dependencies: [{ kind: "directive", type: i1$1.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
602
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: HeaderComponent, selector: "pw-header", inputs: { landing: "landing" }, usesInheritance: true, ngImport: i0, template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item contact-button\">\n <a href=\"/\"\n class=\"\">{{ 'Button.Home' | transloco }}</a>\n </li>\n <li *ngIf=\"!loggedIn\" class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.navbar-blue{background-color:var(--first);box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top-nav{display:block!important;height:60px}.navbar-toggle{display:none}.navbar-toggle .icon-bar{color:#fff}.nav-outer{text-align:right}.nav-outer nav{background:none!important;display:inline-block;float:none;width:auto}.nav-outer li a{color:#fff;font-size:18px;margin:0 0 0 30px;text-transform:capitalize}.nav-outer li a:hover{color:#fff;text-decoration:none}.nav-outer li a:focus{color:#fff}.navbar-nav li{display:inline-block}@media screen and (max-width: 1199px){.nav-outer li a{margin:0 10px}}@media screen and (max-width: 991px){.icon-bar{background-color:#fff;border-radius:1px;display:block;height:2px;margin-top:4px;width:22px}.navbar-toggle{background-color:#ffb92b!important;background-image:none;border:1px solid rgb(255,255,255);border-radius:4px;display:block!important;float:right;margin-top:4px;padding:9px 10px;position:relative}.collapse{display:none!important}.collapse.show{display:block!important}.nav-outer nav{background:#ffb92b!important;display:inline-block;float:left;padding:20px;width:100%}.nav-outer li a{margin:0;padding:0}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:normal;-webkit-box-orient:horizontal;flex-direction:column}li.nav-item{float:left;margin-bottom:12px;text-align:left;width:100%}.navbar-expand-sm{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-box-pack:start;flex-flow:column nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.nav-outer li a:hover{color:#0a56d3}.contact-button a,.login-button a,.nav-item{background:none;color:#fff!important;font-weight:600}.contact-button a:hover,.login-button a:hover,.nav-item a:hover{color:#0a56d3!important}}@media screen and (max-width: 767px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 575px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 375px){.navbar .container{padding:0!important}}@media (min-width: 641px) and (max-width: 991px){.navbar-toggle{margin-top:6px}}.header-logo{height:45px;width:205px}.login-button a{background-color:var(--second);color:#fff}.login-button a:hover{background-color:#fff;color:var(--second)!important}.contact-button a{background-color:var(--third);color:#fff}.contact-button a:hover{background-color:#fff;color:var(--third)!important}.fixed-top{position:fixed!important}\n"], dependencies: [{ kind: "directive", type: i1$2.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
598
603
  }
599
604
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, decorators: [{
600
605
  type: Component,
@@ -696,16 +701,16 @@ class PrivacyAndTosComponent extends AppBaseComponent {
696
701
  this.isLoaded = true;
697
702
  });
698
703
  }
699
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1$3.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i2$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
704
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1$4.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i2$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
700
705
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyAndTosComponent, selector: "pw-privacy-and-tos", inputs: { productId: "productId" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.privacy\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'terms-of-service'\">\n <a ngbNavLink>Terms of Services</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Terms of Services</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.tos\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n <div class=\"w-100 text-center p-2 mt-5\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n <div [ngbNavOutlet]=\"nav\" *ngIf=\"isLoaded\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep .terms-of-service ul{list-style:disc!important;padding-left:40px!important}.ql-container{max-width:1000px;margin:0 auto;resize:none!important}\n"], dependencies: [{ kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i5.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i5.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i5.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i5.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i5.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i5.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
701
706
  }
702
707
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, decorators: [{
703
708
  type: Component,
704
709
  args: [{ selector: 'pw-privacy-and-tos', template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.privacy\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'terms-of-service'\">\n <a ngbNavLink>Terms of Services</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Terms of Services</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.tos\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n <div class=\"w-100 text-center p-2 mt-5\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n <div [ngbNavOutlet]=\"nav\" *ngIf=\"isLoaded\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep .terms-of-service ul{list-style:disc!important;padding-left:40px!important}.ql-container{max-width:1000px;margin:0 auto;resize:none!important}\n"] }]
705
- }], ctorParameters: () => [{ type: i1$3.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
710
+ }], ctorParameters: () => [{ type: i1$4.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
706
711
  type: Inject,
707
712
  args: [DOCUMENT]
708
- }] }, { type: i2$5.DomSanitizer }], propDecorators: { productId: [{
713
+ }] }, { type: i2$4.DomSanitizer }], propDecorators: { productId: [{
709
714
  type: Input
710
715
  }] } });
711
716
 
@@ -741,7 +746,7 @@ class LandingPageFooterBComponent {
741
746
  });
742
747
  }
743
748
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LandingPageFooterBComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b", ngImport: i0, template: "<a href=\"javascript:\"\n aria-label=\"Up\"\n id=\"return-to-top\">\n <i class=\"ft-arrow-up\" aria-hidden=\"true\"></i>\n</a>\n<footer class=\"footer-block\">\n <div class=\"container\">\n <h6>Building SaaS Made Easy</h6>\n </div>\n <div *ngIf=\"isBrowserAccess\">\n <span class=\"me-3\">\n <a class=\"white\"\n routerLink=\"/privacy-policy\"> Privacy Policy</a>\n </span>\n <span class=\"ms-3\">\n <a class=\"white\"\n routerLink=\"/terms-conditions\"> Terms &amp; Conditions </a>\n </span>\n </div>\n <div class=\"my-2\">\n <span>\n <a class=\"white\"\n href=\"https://www.linkedin.com/company/posiwise\"\n target=\"blank\">\n Linkedin |</a>\n <a class=\"white\"\n href=\"https://www.facebook.com/posiwise\"\n target=\"blank\"> Facebook |</a>\n <a class=\"white\"\n href=\"https://twitter.com/posiwise\"\n target=\"blank\"> Twitter</a>\n </span>\n </div>\n <p class=\"text-center text-white mb-0 mt-2\">\n Copyright &copy; {{ currentDate | date: 'yyyy' }} PosiWise. All rights reserved.\n </p>\n</footer>\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)}.footer-block{background:#ecf5fc url(/assets/img/landing-page/footer-bg.png) center top no-repeat;background-size:cover;float:left;padding:183px 0 81px;text-align:center;width:100%}.footer-block h6{color:#f0f8fe!important;font-size:72px;font-weight:900}@media screen and (max-width: 991px){.footer-block h6{font-size:45px}}@media screen and (max-width: 575px){.footer-block{padding:96px 0 30px}.footer-block h6{font-size:30px}}\n"], dependencies: [{ kind: "directive", type: i2$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b", ngImport: i0, template: "<a href=\"javascript:\"\n aria-label=\"Up\"\n id=\"return-to-top\">\n <i class=\"ft-arrow-up\" aria-hidden=\"true\"></i>\n</a>\n<footer class=\"footer-block\">\n <div class=\"container\">\n <h6>Building SaaS Made Easy</h6>\n </div>\n <div *ngIf=\"isBrowserAccess\">\n <span class=\"me-3\">\n <a class=\"white\"\n routerLink=\"/privacy-policy\"> Privacy Policy</a>\n </span>\n <span class=\"ms-3\">\n <a class=\"white\"\n routerLink=\"/terms-conditions\"> Terms &amp; Conditions </a>\n </span>\n </div>\n <div class=\"my-2\">\n <span>\n <a class=\"white\"\n href=\"https://www.linkedin.com/company/posiwise\"\n target=\"blank\">\n Linkedin |</a>\n <a class=\"white\"\n href=\"https://www.facebook.com/posiwise\"\n target=\"blank\"> Facebook |</a>\n <a class=\"white\"\n href=\"https://twitter.com/posiwise\"\n target=\"blank\"> Twitter</a>\n </span>\n </div>\n <p class=\"text-center text-white mb-0 mt-2\">\n Copyright &copy; {{ currentDate | date: 'yyyy' }} PosiWise. All rights reserved.\n </p>\n</footer>\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)}.footer-block{background:#ecf5fc url(/assets/img/landing-page/footer-bg.png) center top no-repeat;background-size:cover;float:left;padding:183px 0 81px;text-align:center;width:100%}.footer-block h6{color:#f0f8fe!important;font-size:72px;font-weight:900}@media screen and (max-width: 991px){.footer-block h6{font-size:45px}}@media screen and (max-width: 575px){.footer-block{padding:96px 0 30px}.footer-block h6{font-size:30px}}\n"], dependencies: [{ kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
745
750
  }
746
751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LandingPageFooterBComponent, decorators: [{
747
752
  type: Component,
@@ -764,19 +769,19 @@ class TermsConditionsComponent {
764
769
  this.company_city_code = config?.['company'].city_code;
765
770
  });
766
771
  }
767
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TermsConditionsComponent, deps: [{ token: i1$4.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
772
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TermsConditionsComponent, deps: [{ token: i1$5.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
768
773
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TermsConditionsComponent, selector: "pw-terms-conditions", inputs: { isPublic: "isPublic" }, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n</ng-container>\n\n<div class=\"container pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h1>POSIWISE TERMS AND CONDITIONS</h1>\n <p>Last updated 26/10/2019</p>\n <h2>AGREEMENT TO TERMS</h2>\n <div class=\"clearfix\"></div>\n <p>\n These Terms of Use constitute a legally binding agreement made between\n you, whether personally or on behalf of an entity (\u201Cyou\u201D) and\n {{ company_name }}, {{ company_street }}, {{ company_city_code }}\n {{ company_city }}\n - {{ company_state }}, {{ company_number }} (\u201Cwe,\u201D \u201Cus\u201D or \u201Cour\u201D),\n concerning your access to and use of the {{ company_state }} website as\n well as any other media form, media channel, mobile website or mobile\n application related, linked, or otherwise connected thereto\n (collectively, the \u201CSite\u201D).\n </p>\n <p>\n You agree that by accessing the Site, you have read, understood, and\n agree to be bound by all of these Terms of Use. If you do not agree with\n all of these Terms of Use, then you are expressly prohibited from using\n the Site and you must discontinue use immediately.\n </p>\n <p>\n Supplemental terms and conditions or documents that may be posted on the\n Site from time to time are hereby expressly incorporated herein by\n reference. We reserve the right, in our sole discretion, to make changes\n or modifications to these Terms of Use at any time and for any reason.\n </p>\n <p>\n We will alert you about any changes by updating the \u201CLast updated\u201D date\n of these Terms of Use, and you waive any right to receive specific\n notice of each such change.\n </p>\n <p>\n It is your responsibility to periodically review these Terms of Use to\n stay informed of updates. You will be subject to, and will be deemed to\n have been made aware of and to have accepted, the changes in any revised\n Terms of Use by your continued use of the Site after the date such\n revised Terms of Use are posted.\n </p>\n <p>\n The information provided on the Site is not intended for distribution to\n or use by any person or entity in any jurisdiction or country where such\n distribution or use would be contrary to law or regulation or which\n would subject us to any registration requirement within such\n jurisdiction or country.\n </p>\n <p>\n Accordingly, those persons who choose to access the Site from other\n locations do so on their own initiative and are solely responsible for\n compliance with local laws, if and to the extent local laws are\n applicable.\n </p>\n <p>\n The Site is intended for users who are at least 13 years of age. All\n users who are minors in the jurisdiction in which they reside (generally\n under the age of 18) must have the permission of, and be directly\n supervised by, their parent or guardian to use the Site. If you are a\n minor, you must have your parent or guardian read and agree to these\n Terms of Use prior to you using the Site.\n </p>\n <h2>INTELLECTUAL PROPERTY RIGHTS</h2>\n <p>\n Unless otherwise indicated, the Site is our proprietary property and all\n source code, databases, functionality, software, website designs, audio,\n video, text, photographs, and graphics on the Site (collectively, the\n \u201CContent\u201D) and the trademarks, service marks, and logos contained\n therein (the \u201CMarks\u201D) are owned or controlled by us or licensed to us,\n and are protected by copyright and trademark laws and various other\n intellectual property rights and unfair competition laws of the United\n States, foreign jurisdictions, and international conventions.\n </p>\n <p>\n The Content and the Marks are provided on the Site \u201CAS IS\u201D for your\n information and personal use only. Except as expressly provided in these\n Terms of Use, no part of the Site and no Content or Marks may be copied,\n reproduced, aggregated, republished, uploaded, posted, publicly\n displayed, encoded, translated, transmitted, distributed, sold,\n licensed, or otherwise exploited for any commercial purpose whatsoever,\n without our express prior written permission.\n </p>\n <p>\n Provided that you are eligible to use the Site, you are granted a\n limited license to access and use the Site and to download or print a\n copy of any portion of the Content to which you have properly gained\n access solely for your personal, non-commercial use. We reserve all\n rights not expressly granted to you in and to the Site, the Content and\n the Marks.\n </p>\n <h1>USER REPRESENTATIONS</h1>\n <p>By using the Site, you represent and warrant that:</p>\n <ol>\n <li>\n <p class=\"m-0\">\n all registration information you submit will be true, accurate,\n current, and complete.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you will maintain the accuracy of such information and promptly\n update such registration information as necessary.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you have the legal capacity and you agree to comply with these\n Terms of Use.\n </p>\n </li>\n <li>\n <p class=\"m-0\">you are not under the age of 13.</p>\n </li>\n <li>\n <p class=\"m-0\">\n not a minor in the jurisdiction in which you reside, or if a\n minor, you have received parental permission to use the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you will not access the Site through automated or non-human\n means, whether through a bot, script, or otherwise.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you will not use the Site for any illegal or unauthorized\n purpose.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your use of the Site will not violate any applicable law or\n regulation.\n </p>\n </li>\n </ol>\n <p>\n If you provide any information that is untrue, inaccurate, not current,\n or incomplete, we have the right to suspend or terminate your account\n and refuse any and all current or future use of the Site (or any portion\n thereof).\n </p>\n <h2>USER REGISTRATION</h2>\n <p>\n You may be required to register with the Site. You agree to keep your\n password confidential and will be responsible for all use of your\n account and password. We reserve the right to remove, reclaim, or change\n a username you select if we determine, in our sole discretion, that such\n username is inappropriate, obscene, or otherwise objectionable.\n </p>\n <h2>PROHIBITED ACTIVITIES</h2>\n <p>\n You may not access or use the Site for any purpose other than that for\n which we make the Site available. The Site may not be used in connection\n with any commercial endeavors except those that are specifically\n endorsed or approved by us.\n </p>\n <p>As a user of the Site, you agree not to:</p>\n\n <ol>\n <li>\n <p class=\"m-0\">\n systematically retrieve data or other content from the Site to\n create or compile, directly or indirectly, a collection,\n compilation, database, or directory without written permission\n from us.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n make any unauthorized use of the Site, including collecting\n usernames and/or email addresses of users by electronic or other\n means for the purpose of sending unsolicited email, or creating\n user accounts by automated means or under false pretenses.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use a buying agent or purchasing agent to make purchases on the\n Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use the Site to advertise or offer to sell goods and services.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n circumvent, disable, or otherwise interfere with\n security-related features of the Site, including features that\n prevent or restrict the use or copying of any Content or enforce\n limitations on the use of the Site and/or the Content contained\n therein.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n engage in unauthorized framing of or linking to the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n trick, defraud, or mislead us and other users, especially in any\n attempt to learn sensitive account information such as user\n passwords\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n make improper use of our support services or submit false\n reports of abuse or misconduct.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n engage in any automated use of the system, such as using scripts\n to send comments or messages, or using any data mining, robots,\n or similar data gathering and extraction tools.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n interfere with, disrupt, or create an undue burden on the Site\n or the networks or services connected to the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n attempt to impersonate another user or person or use the\n username of another user.\n </p>\n </li>\n <li>\n <p class=\"m-0\">sell or otherwise transfer your profile.</p>\n </li>\n <li>\n <p class=\"m-0\">\n use any information obtained from the Site in order to harass,\n abuse, or harm another person.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use the Site as part of any effort to compete with us or\n otherwise use the Site and/or the Content for any\n revenue-generating endeavor or commercial enterprise.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n decipher, decompile, disassemble, or reverse engineer any of the\n software comprising or in any way making up a part of the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n attempt to bypass any measures of the Site designed to prevent\n or restrict access to the Site, or any portion of the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n harass, annoy, intimidate, or threaten any of our employees or\n agents engaged in providing any portion of the Site to you.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n delete the copyright or other proprietary rights notice from any\n Content.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n copy or adapt the Site\u2019s software, including but not limited to\n Flash, PHP, HTML, JavaScript, or other code.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n upload or transmit (or attempt to upload or to transmit)\n viruses, Trojan horses, or other material, including excessive\n use of capital letters and spamming (continuous posting of\n repetitive text), that interferes with any party\u2019s uninterrupted\n use and enjoyment of the Site or modifies, impairs, disrupts,\n alters, or interferes with the use, features, functions,\n operation, or maintenance of the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n upload or transmit (or attempt to upload or to transmit) any\n material that acts as a passive or active information collection\n or transmission mechanism, including without limitation, clear\n graphics interchange formats (\u201Cgifs\u201D), 1\u00D71 pixels, web bugs,\n cookies, or other similar devices (sometimes referred to as\n \u201Cspyware\u201D or \u201Cpassive collection mechanisms\u201D or \u201Cpcms\u201D).\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n except as may be the result of standard search engine or\n Internet browser usage, use, launch, develop, or distribute any\n automated system, including without limitation, any spider,\n robot, cheat utility, scraper, or offline reader that accesses\n the Site, or using or launching any unauthorized script or other\n software.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n disparage, tarnish, or otherwise harm, in our opinion, us and/or\n the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use the Site in a manner inconsistent with any applicable laws\n or regulations.\n </p>\n </li>\n </ol>\n\n <h2>USER GENERATED CONTRIBUTIONS</h2>\n\n <p>\n The Site may invite you to chat, contribute to, or participate in blogs,\n message boards, online forums, and other functionality, and may provide\n you with the opportunity to create, submit, post, display, transmit,\n perform, publish, distribute, or broadcast content and materials to us\n or on the Site, including but not limited to text, writings, video,\n audio, photographs, graphics, comments, suggestions, or personal\n information or other material (collectively, \"Contributions\").\n </p>\n <p>\n Contributions may be viewable by other users of the Site and through\n third-party websites. As such, any Contributions you transmit may be\n treated as non-confidential and non-proprietary. When you create or make\n available any Contributions, you thereby represent and warrant that:\n </p>\n\n <ol>\n <li>\n <p class=\"m-0\">\n the creation, distribution, transmission, public display, or\n performance, and the accessing, downloading, or copying of your\n Contributions do not and will not infringe the proprietary\n rights, including but not limited to the copyright, patent,\n trademark, trade secret, or moral rights of any third party.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you are the creator and owner of or have the necessary licenses,\n rights, consents, releases, and permissions to use and to\n authorize us, the Site, and other users of the Site to use your\n Contributions in any manner contemplated by the Site and these\n Terms of Use.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you have the written consent, release, and/or permission of each\n and every identifiable individual person in your Contributions\n to use the name or likeness of each and every such identifiable\n individual person to enable inclusion and use of your\n Contributions in any manner contemplated by the Site and these\n Terms of Use.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions are not false, inaccurate, or misleading.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions are not unsolicited or unauthorized\n advertising, promotional materials, pyramid schemes, chain\n letters, spam, mass mailings, or other forms of solicitation.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions are not obscene, lewd, lascivious, filthy,\n violent, harassing, libelous, slanderous, or otherwise\n objectionable (as determined by us).\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not ridicule, mock, disparage, intimidate,\n or abuse anyone.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not advocate the violent overthrow of any\n government or incite, encourage, or threaten physical harm\n against another.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not violate any applicable law,\n regulation, or rule.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not violate the privacy or publicity\n rights of any third party.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not contain any material that solicits\n personal information from anyone under the age of 18 or exploits\n people under the age of 18 in a sexual or violent manner.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not violate any federal or state law\n concerning child pornography, or otherwise intended to protect\n the health or well-being of minors.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not include any offensive comments that\n are connected to race, national origin, gender, sexual\n preference, or physical handicap.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not otherwise violate, or link to material\n that violates, any provision of these Terms of Use, or any\n applicable law or regulation.\n </p>\n </li>\n </ol>\n <p>\n Any use of the Site in violation of the foregoing violates these Terms\n of Use and may result in, among other things, termination or suspension\n of your rights to use the Site.\n </p>\n\n <h2>CONTRIBUTION LICENSE</h2>\n\n <p>\n By posting your Contributions to any part of the Site, or making\n Contributions accessible to the Site by linking your account from the\n Site to any of your social networking accounts, you automatically grant,\n and you represent and warrant that you have the right to grant, to us an\n unrestricted, unlimited, irrevocable, perpetual, non-exclusive,\n transferable, royalty-free, fully-paid, worldwide right, and license to\n host, use, copy, reproduce, disclose, sell, resell, publish, broadcast,\n re title, archive, store, cache, publicly perform, publicly display,\n reformat, translate, transmit, excerpt (in whole or in part), and\n distribute such Contributions (including, without limitation, your image\n and voice) for any purpose, commercial, advertising, or otherwise, and\n to prepare derivative works of, or incorporate into other works, such\n Contributions, and grant and authorize sublicense of the foregoing. The\n use and distribution may occur in any media formats and through any\n media channels.\n </p>\n <p>\n This license will apply to any form, media, or technology now known or\n hereafter developed, and includes our use of your name, company name,\n and franchise name, as applicable, and any of the trademarks, service\n marks, trade names, logos, and personal and commercial images you\n provide. You waive all moral rights in your Contributions, and you\n warrant that moral rights have not otherwise been asserted in your\n Contributions.\n </p>\n <p>\n We do not assert any ownership over your Contributions. You retain full\n ownership of all of your Contributions and any intellectual property\n rights or other proprietary rights associated with your Contributions.\n We are not liable for any statements or representations in your\n Contributions provided by you in any area on the Site.\n </p>\n <p>\n You are solely responsible for your Contributions to the Site and you\n expressly agree to exonerate us from any and all responsibility and to\n refrain from any legal action against us regarding your Contributions.\n </p>\n <p>\n We have the right, in our sole and absolute discretion, (1) to edit,\n redact, or otherwise change any Contributions; (2) to re-categorize any\n Contributions to place them in more appropriate locations on the Site;\n and (3) to pre-screen or delete any Contributions at any time and for\n any reason, without notice. We have no obligation to monitor your\n Contributions.\n </p>\n <h2>GUIDELINES FOR REVIEWS</h2>\n <ol>\n <li>\n <p class=\"m-0\">\n We may provide you areas on the Site to leave reviews or\n ratings. When posting a review, you must comply with the\n following criteria:\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you should have firsthand experience with the person/entity\n being reviewed.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your reviews should not contain offensive profanity, or abusive,\n racist, offensive, or hate language.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your reviews should not contain discriminatory references based\n on religion, race, gender, national origin, age, marital status,\n sexual orientation, or disability.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your reviews should not contain references to illegal activity.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you should not be affiliated with competitors if posting\n negative reviews.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you should not make any conclusions as to the legality of\n conduct.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you may not post any false or misleading statements.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you may not organize a campaign encouraging others to post\n reviews, whether positive or negative.\n </p>\n </li>\n </ol>\n <p>\n We may accept, reject, or remove reviews in our sole discretion. We have\n absolutely no obligation to screen reviews or to delete reviews, even if\n anyone considers reviews objectionable or inaccurate. Reviews are not\n endorsed by us, and do not necessarily represent our opinions or the\n views of any of our affiliates or partners.\n </p>\n <p>\n We do not assume liability for any review or for any claims,\n liabilities, or losses resulting from any review. By posting a review,\n you hereby grant to us a perpetual, non-exclusive, worldwide,\n royalty-free, fully-paid, assignable, and sub-licensable right and\n license to reproduce, modify, translate, transmit by any means, display,\n perform, and/or distribute all content relating to reviews.\n </p>\n <h2>MOBILE APPLICATION LICENSE</h2>\n <h3>Use License</h3>\n\n <p>\n If you access the Site via a mobile application, then we grant you a\n revocable, non-exclusive, non-transferable, limited right to install and\n use the mobile application on wireless electronic devices owned or\n controlled by you, and to access and use the mobile application on such\n devices strictly in accordance with the terms and conditions of this\n mobile application license contained in these Terms of Use.\n </p>\n <p>Use License</p>\n <p>\n (1) decompile, reverse engineer, disassemble, attempt to derive the\n source code of, or decrypt the application.\n </p>\n <p>\n (2) make any modification, adaptation, improvement, enhancement,\n translation, or derivative work from the application.\n </p>\n <p>\n (3) violate any applicable laws, rules, or regulations in connection\n with your access or use of the application.\n </p>\n <p>\n (4) remove, alter, or obscure any proprietary notice (including any\n notice of copyright or trademark) posted by us or the licensors of the\n application.\n </p>\n <p>\n (5) use the application for any revenue generating endeavor, commercial\n enterprise, or other purpose for which it is not designed or intended.\n </p>\n <p>\n (6) make the application available over a network or other environment\n permitting access or use by multiple devices or users at the same .\n </p>\n <p>\n (7) use the application for creating a product, service, or software\n that is, directly or indirectly, competitive with or in any way a\n substitute for the application.\n </p>\n <p>\n (8) use the application to send automated queries to any website or to\n send any unsolicited commercial e-mail.\n </p>\n <p>\n (9) use any proprietary information or any of our interfaces or our\n other intellectual property in the design, development, manufacture,\n licensing, or distribution of any applications, accessories, or devices\n for use with the application.\n </p>\n <h3>Apple and Android Devices</h3>\n <p>\n The following terms apply when you use a mobile application obtained\n from either the Apple Store or Google Play (each an \u201CApp Distributor\u201D)\n to access the Site:\n </p>\n <p>\n (1) the license granted to you for our mobile application is limited to\n a non-transferable license to use the application on a device that\n utilizes the Apple iOS or Android operating systems, as applicable, and\n in accordance with the usage rules set forth in the applicable\n Distributor\u2019s terms of service\n </p>\n <p>\n (2) we are responsible for providing any maintenance and support\n services with respect to the mobile application as specified in the\n terms and conditions of this mobile application contained in these Terms\n of Use or as otherwise required under applicable law, and you\n acknowledge that each App Distributor has no obligation whatsoever to\n furnish any maintenance and support services with respect to the mobile\n application.\n </p>\n <p>\n (3) in the event of any failure of the mobile application to conform to\n any applicable warranty, you may notify the applicable App Distributor,\n and the App Distributor, in accordance with its terms and policies, may\n refund the purchase price, if any, paid for the mobile application, and\n to the maximum extent permitted by applicable law, the App Distributor\n will have no other warranty obligation whatsoever with respect to the\n mobile application.\n </p>\n <p>\n (4) you represent and warrant that (i) you are not located in a country\n that is subject to a U.S. government embargo, or that has been\n designated by the U.S. government as a \u201Cterrorist supporting\u201D country\n and (ii) you are not listed on any U.S. government list of prohibited or\n restricted parties.\n </p>\n <p>\n (5) you must comply with applicable third-party terms of agreement when\n using the mobile application, e.g., if you have a VoIP application, then\n you must not be in violation of their wireless data service agreement\n when using the mobile application.\n </p>\n <p>\n (6) you acknowledge and agree that the App Distributors are third-party\n beneficiaries of the terms and conditions in this mobile application\n license contained in these Terms of Use, and that each App Distributor\n will have the right (and will be deemed to have accepted the right) to\n enforce the terms and conditions in this mobile application license\n contained in these Terms of Use against you as a third-party beneficiary\n thereof.\n </p>\n <h2>SOCIAL MEDIA</h2>\n <p>\n As part of the functionality of the Site, you may link your account with\n online accounts you have with third-party service providers (each such\n account, a \u201CThird-Party Account\u201D) by either:\n </p>\n\n <ol>\n <li>\n <p class=\"m-0\">\n providing your Third-Party Account login information through the\n Site; or\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n allowing us to access your Third-Party Account, as is permitted\n under the applicable terms and conditions that govern your use\n of each Third-Party Account.\n </p>\n </li>\n </ol>\n\n <p>\n You represent and warrant that you are entitled to disclose your\n Third-Party Account login information to us and/or grant us access to\n your Third-Party Account, without breach by you of any of the terms and\n conditions that govern your use of the applicable Third-Party Account,\n and without obligating us to pay any fees or making us subject to any\n usage limitations imposed by the third-party service provider of the\n Third-Party Account.\n </p>\n <p>\n By granting us access to any Third-Party Accounts, you understand that\n (1) we may access, make available, and store (if applicable) any content\n that you have provided to and stored in your Third-Party Account (the\n \u201CSocial Network Content\u201D) so that it is available on and through the\n Site via your account, including without limitation any friend lists and\n (2) we may submit to and receive from your Third-Party Account\n additional information to the extent you are notified when you link your\n account with the Third-Party Account.\n </p>\n <p>\n Depending on the Third-Party Accounts you choose and subject to the\n privacy settings that you have set in such Third-Party Accounts,\n personally identifiable information that you post to your Third-Party\n Accounts may be available on and through your account on the Site.\n </p>\n <p>\n Please note that if a Third-Party Account or associated service becomes\n unavailable or our access to such Third-Party Account is terminated by\n the third-party service provider, then Social Network Content may no\n longer be available on and through the Site. You will have the ability\n to disable the connection between your account on the Site and your\n Third-Party Accounts at any time.\n </p>\n\n <p>\n PLEASE NOTE THAT YOUR RELATIONSHIP WITH THE THIRD-PARTY SERVICE\n PROVIDERS ASSOCIATED WITH YOUR THIRD-PARTY ACCOUNTS IS GOVERNED SOLELY\n BY YOUR AGREEMENT(S) WITH SUCH THIRD-PARTY SERVICE PROVIDERS.\n </p>\n <p>\n We make no effort to review any Social Network Content for any purpose,\n including but not limited to, for accuracy, legality, or\n non-infringement, and we are not responsible for any Social Network\n Content.\n </p>\n <p>\n You acknowledge and agree that we may access your email address book\n associated with a Third-Party Account and your contacts list stored on\n your mobile device or tablet computer solely for purposes of identifying\n and informing you of those contacts who have also registered to use the\n Site.\n </p>\n <p>\n You acknowledge and agree that we may access your email address book\n associated with a Third-Party Account and your contacts list stored on\n your mobile device or tablet computer solely for purposes of identifying\n and informing you of those contacts who have also registered to use the\n Site.\n </p>\n <h2>SUBMISSIONS</h2>\n <p>\n You acknowledge and agree that any questions, comments, suggestions,\n ideas, feedback, or other information regarding the Site (\"Submissions\")\n provided by you to us are non-confidential and shall become our sole\n property. We shall own exclusive rights, including all intellectual\n property rights, and shall be entitled to the unrestricted use and\n dissemination of these Submissions for any lawful purpose, commercial or\n otherwise, without acknowledgment or compensation to you.\n </p>\n <p>\n You hereby waive all moral rights to any such Submissions, and you\n hereby warrant that any such Submissions are original with you or that\n you have the right to submit such Submissions. You agree there shall be\n no recourse against us for any alleged or actual infringement or\n misappropriation of any proprietary right in your Submissions.\n </p>\n <h2>THIRD-PARTY WEBSITES AND CONTENT</h2>\n <p>\n The Site may contain (or you may be sent via the Site) links to other\n websites (\"Third-Party Websites\") as well as articles, text, graphics,\n pictures, designs, music, sound, video, information, applications,\n software, and other content or items belonging to or originating from\n third parties (\"Third-Party Content\").\n </p>\n <p>\n Such Third-Party Websites and Third-Party Content are not investigated,\n monitored, or checked for accuracy, appropriateness, or completeness by\n us, and we are not responsible for any Third-Party Websites accessed\n through the Site or any Third-Party Content posted on, available\n through, or installed from the Site, including the content, accuracy,\n offensiveness, opinions, reliability, privacy practices, or other\n policies of or contained in the Third-Party Websites or the Third-Party\n Content.\n </p>\n <p>\n Inclusion of, linking to, or permitting the use or installation of any\n Third-Party Websites or any Third-Party Content does not imply approval\n or endorsement thereof by us. If you decide to leave the Site and access\n the Third-Party Websites or to use or install any Third-Party Content,\n you do so at your own risk, and you should be aware these Terms of Use\n no longer govern.\n </p>\n <p>\n You should review the applicable terms and policies, including privacy\n and data gathering practices, of any website to which you navigate from\n the Site or relating to any applications you use or install from the\n Site. Any purchases you make through Third-Party Websites will be\n through other websites and from other companies, and we take no\n responsibility whatsoever in relation to such purchases which are\n exclusively between you and the applicable third party.\n </p>\n <p>\n You agree and acknowledge that we do not endorse the products or\n services offered on Third-Party Websites and you shall hold us harmless\n from any harm caused by your purchase of such products or services.\n Additionally, you shall hold us harmless from any losses sustained by\n you or harm caused to you relating to or resulting in any way from any\n Third-Party Content or any contact with Third-Party Websites.\n </p>\n <h2>ADVERTISERS</h2>\n <p>\n We allow advertisers to display their advertisements and other\n information in certain areas of the Site, such as sidebar advertisements\n or banner advertisements. If you are an advertiser, you shall take full\n responsibility for any advertisements you place on the Site and any\n services provided on the Site or products sold through those\n advertisements.\n </p>\n <p>\n Further, as an advertiser, you warrant and represent that you possess\n all rights and authority to place advertisements on the Site, including,\n but not limited to, intellectual property rights, publicity rights, and\n contractual rights.\n </p>\n <p>\n As an advertiser, you agree that such advertisements are subject to our\n Digital Millennium Copyright Act (\u201CDMCA\u201D) Notice and Policy provisions\n as described below, and you understand and agree there will be no refund\n or other compensation for DMCA take down-related issues. We simply\n provide the space to place such advertisements, and we have no other\n relationship with advertisers.\n </p>\n <h2>SITE MANAGEMENT</h2>\n <p>We reserve the right, but not the obligation, to:</p>\n <p>(1) monitor the Site for violations of these Terms of Use.</p>\n <p>\n (2) take appropriate legal action against anyone who, in our sole\n discretion, violates the law or these Terms of Use, including without\n limitation, reporting such user to law enforcement authorities.\n </p>\n <p>\n (3) in our sole discretion and without limitation, refuse, restrict\n access to, limit the availability of, or disable (to the extent\n technologically feasible) any of your Contributions or any portion\n thereof\n </p>\n <p>\n (4) in\u00A0our sole discretion and without limitation, notice, or liability,\n to remove from the Site or otherwise disable all files and content that\n are excessive in size or are in any way burdensome to our systems.\n </p>\n <p>\n (5) otherwise manage the Site in a manner designed to protect our rights\n and property and to facilitate the proper functioning of the Site.\n </p>\n <h2>PRIVACY POLICY</h2>\n <p>\n We care about data privacy and security. Please review our Privacy\n Policy: <a href=\"/privacy-policy\">click here</a>. By using the Site, you\n agree to be bound by our Privacy Policy, which is incorporated into\n these Terms of Use. Please be advised the Site is hosted in the United\n States.\n </p>\n <p>\n If you access the Site from the European Union, Asia, or any other\n region of the world with laws or other requirements governing personal\n data collection, use, or disclosure that differ from applicable laws in\n the United States, then through your continued use of the Site, you are\n transferring your data to the United States, and you expressly consent\n to have your data transferred to and processed in the United States.\n </p>\n <p>\n Further, we do not knowingly accept, request, or solicit information\n from children or knowingly market to children. Therefore, in accordance\n with the U.S. Children\u2019s Online Privacy Protection Act, if we receive\n actual knowledge that anyone under the age of 13 has provided personal\n information to us without the requisite and verifiable parental consent,\n we will delete that information from the Site as quickly as is\n reasonably practical.\n </p>\n <h2>DIGITAL MILLENNIUM COPYRIGHT ACT (DMCA) NOTICE AND POLICY</h2>\n <h3>Notifications</h3>\n <p>\n We respect the intellectual property rights of others. If you believe\n that any material available on or through the Site infringes upon any\n copyright you own or control, please immediately notify our Designated\n Copyright Agent using the contact information provided below (a\n \u201CNotification\u201D).\n </p>\n <p>\n A copy of your Notification will be sent to the person who posted or\n stored the material addressed in the Notification. Please be advised\n that pursuant to federal law you may be held liable for damages if you\n make material misrepresentations in a Notification. Thus, if you are not\n sure that material located on or linked to by the Site infringes your\n copyright, you should consider first contacting an attorney.\n </p>\n <p>\n All Notifications should meet the requirements of DMCA 17 U.S.C. \u00A7\n 512(c)(3) and include the following information:\n </p>\n <p>\n (1) A physical or electronic signature of a person authorized to act on\n behalf of the owner of an exclusive right that is allegedly infringed.\n </p>\n <p>\n (2) identification of the copyrighted work claimed to have been\n infringed, or, if multiple copyrighted works on the Site are covered by\n the Notification, a representative list of such works on the Site\n </p>\n <p>\n (3) information reasonably sufficient to permit us to contact the\n complaining party, such as an address, telephone number, and, if\n available, an email address at which the complaining party may be\n contacted.\n </p>\n <p>\n (4) a statement that the complaining party has a good faith belief that\n use of the material in the manner complained of is not authorized by the\n copyright owner, its agent, or the law.\n </p>\n <p>\n (5) a statement that the information in the notification is accurate,\n and under penalty of perjury, that the complaining party is authorized\n to act on behalf of the owner of an exclusive right that is allegedly\n infringed upon.\n </p>\n <h3>Counter Notification</h3>\n <p>\n If you believe your own copyrighted material has been removed from the\n Site as a result of a mistake or mis identification, you may submit a\n written counter notification to us using the contact information\n provided below (a \u201CCounter Notification\u201D).\n </p>\n <p>\n To be an effective Counter Notification under the DMCA, your Counter\n Notification must include substantially the following:\n </p>\n <p>\n (1) identification of the material that has been removed or disabled and\n the location at which the material appeared before it was removed or\n disabled.\n </p>\n <p>\n (2) a statement that you consent to the jurisdiction of the Federal\n District Court in which your address is located, or if your address is\n outside the United States, for any judicial district in which we are\n located.\n </p>\n <p>\n (3) a statement that you will accept service of process from the party\n that filed the Notification or the party's agent.\n </p>\n <p>(4) your name, address, and telephone number.</p>\n <p>\n (5) a statement under penalty of perjury that you have a good faith\n belief that the material in question was removed or disabled as a result\n of a mistake or mis identification of the material to be removed or\n disabled\n </p>\n <p>(6) your physical or electronic signature.</p>\n <p>\n If you send us a valid, written Counter Notification meeting the\n requirements described above, we will restore your removed or disabled\n material, unless we first receive notice from the party filing the\n Notification informing us that such party has filed a court action to\n restrain you from engaging in infringing activity related to the\n material in question.\n </p>\n <p>\n Please note that if you materially misrepresent that the disabled or\n removed content was removed by mistake or mis-identification, you may be\n liable for damages, including costs and attorney's fees. Filing a false\n Counter Notification constitutes perjury.\n </p>\n <p>\n Designated Copyright Agent\n <br />\n {{ company_name }}\n <br />\n Attn: Copyright Agent\n <br />\n {{ company_email }}\n </p>\n <h2>COPYRIGHT INFRINGEMENTS</h2>\n <p>\n We respect the intellectual property rights of others. If you believe\n that any material available on or through the Site infringes upon any\n copyright you own or control, please immediately notify us using the\n contact information provided below (a \u201CNotification\u201D). A copy of your\n Notification will be sent to the person who posted or stored the\n material addressed in the Notification.\n </p>\n <p>\n Please be advised that pursuant to federal law you may be held liable\n for damages if you make material misrepresentations in a Notification.\n Thus, if you are not sure that material located on or linked to by the\n Site infringes your copyright, you should consider first contacting an\n attorney.\n </p>\n <h2>TERM AND TERMINATION</h2>\n <p>\n These Terms of Use shall remain in full force and effect while you use\n the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE\n RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR\n LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING\n CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON,\n INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY,\n OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR\n REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR\n DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT\n ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.\n </p>\n <p>\n If we terminate or suspend your account for any reason, you are\n prohibited from registering and creating a new account under your name,\n a fake or borrowed name, or the name of any third party, even if you may\n be acting on behalf of the third party.\n </p>\n <p>\n In addition to terminating or suspending your account, we reserve the\n right to take appropriate legal action, including without limitation\n pursuing civil, criminal, and injunctive redress.\n </p>\n <h2>MODIFICATIONS AND INTERRUPTIONS</h2>\n <p>\n We reserve the right to change, modify, or remove the contents of the\n Site at any time or for any reason at our sole discretion without\n notice. However, we have no obligation to update any information on our\n Site. We also reserve the right to modify or discontinue all or part of\n the Site without notice at any time.\n </p>\n <p>\n We will not be liable to you or any third party for any modification,\n price change, suspension, or discontinuance of the Site.\n </p>\n <p>\n We cannot guarantee the Site will be available at all times. We may\n experience hardware, software, or other problems or need to perform\n maintenance related to the Site, resulting in interruptions, delays, or\n errors.\n </p>\n <p>\n We reserve the right to change, revise, update, suspend, discontinue, or\n otherwise modify the Site at any time or for any reason without notice\n to you. You agree that we have no liability whatsoever for any loss,\n damage, or inconvenience caused by your inability to access or use the\n Site during any downtime or discontinuance of the Site.\n </p>\n <p>\n Nothing in these Terms of Use will be construed to obligate us to\n maintain and support the Site or to supply any corrections, updates, or\n releases in connection therewith.\n </p>\n <h2>GOVERNING LAW</h2>\n <p>\n For any dispute relating to the entering into effect, validity,\n interpretation, execution, suspension, termination and forcible\n execution of this Contract, the Courts of the judicial district of\n Brussels have jurisdiction. Belgian law governs this Contract, excluding\n provisions of private international law pertinent to the applicable law,\n and the Vienna Convention on contracts for the international sale of\n real property (Vienna, April 11, 1980).\n </p>\n <h2>DISPUTE RESOLUTION</h2>\n <p>\n The parties shall endeavour to settle any dispute arising out of or\n relating to this agreement, including with regard to its existence,\n validity or termination, by mediation before having recourse to\n arbitration or litigation.\n </p>\n <p>\n Any legal action of whatever nature brought by either you or us\n (collectively, the \u201CParties\u201D and individually, a \u201CParty\u201D) shall be\n commenced or prosecuted in the state and federal courts located in\n Brussels, Belgium, and the Parties hereby consent to, and waive all\n defenses of lack of personal jurisdiction and forum non convenient with\n respect to venue and jurisdiction in such state and federal courts.\n </p>\n <p>\n Application of the United Nations Convention on Contracts for the\n International Sale of Goods and the Uniform Computer Information\n Transaction Act (UCITA) are excluded from these Terms of Use. In no\n event shall any claim, action, or proceeding brought by either Party\n related in any way to the Site be commenced more than 2 years after the\n cause of action arose.\n </p>\n <h2>CORRECTIONS</h2>\n <p>\n There may be information on the Site that contains typographical errors,\n inaccuracies, or omissions that may relate to the Site, including\n descriptions, pricing, availability, and various other information. We\n reserve the right to correct any errors, inaccuracies, or omissions and\n to change or update the information on the Site at any time, without\n prior notice.\n </p>\n <h2>DISCLAIMER</h2>\n <p>\n THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT\n YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE\n FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR\n IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING,\n WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS\n FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR\n REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE\u2019S CONTENT\n OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO\n LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR\n INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY\n DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE\n OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS\n AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION\n STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR\n FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH\n MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6)\n ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR\n DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT\n POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT\n WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR\n SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY\n HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN\n ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY\n WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY\n THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES.\n </p>\n <p>\n AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN\n ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION\n WHERE APPROPRIATE.\n </p>\n <h2>LIMITATIONS OF LIABILITY</h2>\n <p>\n IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO\n YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,\n EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST\n PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR\n USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH\n DAMAGES.\n </p>\n <p>\n NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY\n TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE\n ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID,\n IF ANY, BY YOU TO US DURING THE 6 (SIX) MONTH PERIOD PRIOR TO ANY CAUSE\n OF ACTION ARISING OR $10.000 (TEN THOUSAND DOLLARS). CERTAIN STATE LAWS\n DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR\n LIMITATION OF CERTAIN DAMAGES.\n </p>\n <p>\n IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR\n LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.\n </p>\n <h2>INDEMNIFICATION</h2>\n <p>\n You agree to defend, indemnify, and hold us harmless, including our\n subsidiaries, affiliates, and all of our respective officers, agents,\n partners, and employees, from and against any loss, damage, liability,\n claim, or demand, including reasonable attorneys\u2019 fees and expenses,\n made by any third party due to or arising out of: (1) your\n Contributions; (2) use of the Site; (3) breach of these Terms of Use;\n (4) any breach of your representations and warranties set forth in these\n Terms of Use; (5) your violation of the rights of a third party,\n including but not limited to intellectual property rights; or (6) any\n overt harmful act toward any other user of the Site with whom you\n connected via the Site.\n </p>\n <p>\n Notwithstanding the foregoing, we reserve the right, at your expense, to\n assume the exclusive defense and control of any matter for which you are\n required to indemnify us, and you agree to cooperate, at your expense,\n with our defense of such claims. We will use reasonable efforts to\n notify you of any such claim, action, or proceeding which is subject to\n this indemnification upon becoming aware of it.\n </p>\n <h2>USER DATA</h2>\n <p>\n We will maintain certain data that you transmit to the Site for the\n purpose of managing the Site, as well as data relating to your use of\n the Site. Although we perform regular routine backups of data, you are\n solely responsible for all data that you transmit or that relates to any\n activity you have undertaken using the Site.\n </p>\n <p>\n You agree that we shall have no liability to you for any loss or\n corruption of any such data, and you hereby waive any right of action\n against us arising from any such loss or corruption of such data.\n </p>\n <h2>ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES</h2>\n <p>\n Visiting the Site, sending us emails, and completing online forms\n constitute electronic communications. You consent to receive electronic\n communications, and you agree that all agreements, notices, disclosures,\n and other communications we provide to you electronically, via email and\n on the Site, satisfy any legal requirement that such communication be in\n writing.\n </p>\n <p>\n YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS,\n AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND\n RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE.\n </p>\n <p>\n You hereby waive any rights or requirements under any statutes,\n regulations, rules, ordinances, or other laws in any jurisdiction which\n require an original signature or delivery or retention of non-electronic\n records, or to payments or the granting of credits by any means other\n than electronic means.\n </p>\n\n <h2>MISCELLANEOUS</h2>\n <p>\n These Terms of Use and any policies or operating rules posted by us on\n the Site constitute the entire agreement and understanding between you\n and us. Our failure to exercise or enforce any right or provision of\n these Terms of Use shall not operate as a waiver of such right or\n provision.\n </p>\n <p>\n These Terms of Use operate to the fullest extent permissible by law. We\n may assign any or all of our rights and obligations to others at any\n time. We shall not be responsible or liable for any loss, damage, delay,\n or failure to act caused by any cause beyond our reasonable control.\n </p>\n <p>\n If any provision or part of a provision of these Terms of Use is\n determined to be unlawful, void, or unenforceable, that provision or\n part of the provision is deemed severable from these Terms of Use and\n does not affect the validity and enforceability of any remaining\n provisions.\n </p>\n <p>\n There is no joint venture, partnership, employment or agency\n relationship created between you and us as a result of these Terms of\n Use or use of the Site. You agree that these Terms of Use will not be\n construed against us by virtue of having drafted them.\n </p>\n <p>\n You hereby waive any and all defenses you may have based on the\n electronic form of these Terms of Use and the lack of signing by the\n parties hereto to execute these Terms of Use.\n </p>\n <h2>CONTACT US</h2>\n <p>\n In order to resolve a complaint regarding the Site or to receive further\n information regarding use of the Site, please contact us at:\n <br />{{ company_name }}, {{ company_street }}, {{ company_city_code }}\n {{ company_city }} - {{ company_state }}\n </p>\n <h3>Questions and Comments</h3>\n <p>\n If you have any questions about this Agreement, please\n <a href=\"mailto:{{ company_email }}\">let us know</a>.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<pw-landing-page-footer-b></pw-landing-page-footer-b>\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)}h1,h2,h3,h4,h5,h6{font-weight:600}h1{font-size:36px}.card{padding:10px 15px!important}.card ol li{padding-left:30px!important;position:relative;color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding-top:5px;padding-bottom:5px;padding-right:0}.card ol li ol.list-bullet li,.card ol li ul.list-bullet li{padding-left:0!important}.card ol li:before{font:400 16px/1.3 Roboto,sans-serif;left:0;position:absolute;top:4px}.card ol li h3{font:400 20px/1.3 Roboto,sans-serif;margin-bottom:15px}.card p{color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding:5px 0}.card p strong{font-family:Roboto,sans-serif}.banner{background:url(/assets/img/landing-page/header-bg.jpg) no-repeat center;background-size:cover;padding:0 0 130px}.terms-of-service h3{padding:5px 0 0!important}.terms-of-service ol{counter-reset:section;padding:0 5px 0 0!important}.terms-of-service ol li:before{content:counters(section,\".\") \". \";counter-increment:section;float:left;font-weight:600;padding:0 10px 0 0}.terms-of-service ol li ol li ol li:before,.terms-of-service ol li ol li ul li:before{content:\"\";counter-increment:none}li{padding:10px 0}.parent-ol>li:before{font-size:26px;margin-top:16px}ul.list-bullet,ol.list-bullet{list-style-type:disc;margin-left:20px}ul.list-bullet>li,ol.list-bullet>li{padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b" }] }); }
769
774
  }
770
775
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TermsConditionsComponent, decorators: [{
771
776
  type: Component,
772
777
  args: [{ selector: 'pw-terms-conditions', template: "<ng-container *ngIf=\"isPublic\">\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n</ng-container>\n\n<div class=\"container pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h1>POSIWISE TERMS AND CONDITIONS</h1>\n <p>Last updated 26/10/2019</p>\n <h2>AGREEMENT TO TERMS</h2>\n <div class=\"clearfix\"></div>\n <p>\n These Terms of Use constitute a legally binding agreement made between\n you, whether personally or on behalf of an entity (\u201Cyou\u201D) and\n {{ company_name }}, {{ company_street }}, {{ company_city_code }}\n {{ company_city }}\n - {{ company_state }}, {{ company_number }} (\u201Cwe,\u201D \u201Cus\u201D or \u201Cour\u201D),\n concerning your access to and use of the {{ company_state }} website as\n well as any other media form, media channel, mobile website or mobile\n application related, linked, or otherwise connected thereto\n (collectively, the \u201CSite\u201D).\n </p>\n <p>\n You agree that by accessing the Site, you have read, understood, and\n agree to be bound by all of these Terms of Use. If you do not agree with\n all of these Terms of Use, then you are expressly prohibited from using\n the Site and you must discontinue use immediately.\n </p>\n <p>\n Supplemental terms and conditions or documents that may be posted on the\n Site from time to time are hereby expressly incorporated herein by\n reference. We reserve the right, in our sole discretion, to make changes\n or modifications to these Terms of Use at any time and for any reason.\n </p>\n <p>\n We will alert you about any changes by updating the \u201CLast updated\u201D date\n of these Terms of Use, and you waive any right to receive specific\n notice of each such change.\n </p>\n <p>\n It is your responsibility to periodically review these Terms of Use to\n stay informed of updates. You will be subject to, and will be deemed to\n have been made aware of and to have accepted, the changes in any revised\n Terms of Use by your continued use of the Site after the date such\n revised Terms of Use are posted.\n </p>\n <p>\n The information provided on the Site is not intended for distribution to\n or use by any person or entity in any jurisdiction or country where such\n distribution or use would be contrary to law or regulation or which\n would subject us to any registration requirement within such\n jurisdiction or country.\n </p>\n <p>\n Accordingly, those persons who choose to access the Site from other\n locations do so on their own initiative and are solely responsible for\n compliance with local laws, if and to the extent local laws are\n applicable.\n </p>\n <p>\n The Site is intended for users who are at least 13 years of age. All\n users who are minors in the jurisdiction in which they reside (generally\n under the age of 18) must have the permission of, and be directly\n supervised by, their parent or guardian to use the Site. If you are a\n minor, you must have your parent or guardian read and agree to these\n Terms of Use prior to you using the Site.\n </p>\n <h2>INTELLECTUAL PROPERTY RIGHTS</h2>\n <p>\n Unless otherwise indicated, the Site is our proprietary property and all\n source code, databases, functionality, software, website designs, audio,\n video, text, photographs, and graphics on the Site (collectively, the\n \u201CContent\u201D) and the trademarks, service marks, and logos contained\n therein (the \u201CMarks\u201D) are owned or controlled by us or licensed to us,\n and are protected by copyright and trademark laws and various other\n intellectual property rights and unfair competition laws of the United\n States, foreign jurisdictions, and international conventions.\n </p>\n <p>\n The Content and the Marks are provided on the Site \u201CAS IS\u201D for your\n information and personal use only. Except as expressly provided in these\n Terms of Use, no part of the Site and no Content or Marks may be copied,\n reproduced, aggregated, republished, uploaded, posted, publicly\n displayed, encoded, translated, transmitted, distributed, sold,\n licensed, or otherwise exploited for any commercial purpose whatsoever,\n without our express prior written permission.\n </p>\n <p>\n Provided that you are eligible to use the Site, you are granted a\n limited license to access and use the Site and to download or print a\n copy of any portion of the Content to which you have properly gained\n access solely for your personal, non-commercial use. We reserve all\n rights not expressly granted to you in and to the Site, the Content and\n the Marks.\n </p>\n <h1>USER REPRESENTATIONS</h1>\n <p>By using the Site, you represent and warrant that:</p>\n <ol>\n <li>\n <p class=\"m-0\">\n all registration information you submit will be true, accurate,\n current, and complete.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you will maintain the accuracy of such information and promptly\n update such registration information as necessary.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you have the legal capacity and you agree to comply with these\n Terms of Use.\n </p>\n </li>\n <li>\n <p class=\"m-0\">you are not under the age of 13.</p>\n </li>\n <li>\n <p class=\"m-0\">\n not a minor in the jurisdiction in which you reside, or if a\n minor, you have received parental permission to use the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you will not access the Site through automated or non-human\n means, whether through a bot, script, or otherwise.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you will not use the Site for any illegal or unauthorized\n purpose.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your use of the Site will not violate any applicable law or\n regulation.\n </p>\n </li>\n </ol>\n <p>\n If you provide any information that is untrue, inaccurate, not current,\n or incomplete, we have the right to suspend or terminate your account\n and refuse any and all current or future use of the Site (or any portion\n thereof).\n </p>\n <h2>USER REGISTRATION</h2>\n <p>\n You may be required to register with the Site. You agree to keep your\n password confidential and will be responsible for all use of your\n account and password. We reserve the right to remove, reclaim, or change\n a username you select if we determine, in our sole discretion, that such\n username is inappropriate, obscene, or otherwise objectionable.\n </p>\n <h2>PROHIBITED ACTIVITIES</h2>\n <p>\n You may not access or use the Site for any purpose other than that for\n which we make the Site available. The Site may not be used in connection\n with any commercial endeavors except those that are specifically\n endorsed or approved by us.\n </p>\n <p>As a user of the Site, you agree not to:</p>\n\n <ol>\n <li>\n <p class=\"m-0\">\n systematically retrieve data or other content from the Site to\n create or compile, directly or indirectly, a collection,\n compilation, database, or directory without written permission\n from us.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n make any unauthorized use of the Site, including collecting\n usernames and/or email addresses of users by electronic or other\n means for the purpose of sending unsolicited email, or creating\n user accounts by automated means or under false pretenses.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use a buying agent or purchasing agent to make purchases on the\n Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use the Site to advertise or offer to sell goods and services.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n circumvent, disable, or otherwise interfere with\n security-related features of the Site, including features that\n prevent or restrict the use or copying of any Content or enforce\n limitations on the use of the Site and/or the Content contained\n therein.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n engage in unauthorized framing of or linking to the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n trick, defraud, or mislead us and other users, especially in any\n attempt to learn sensitive account information such as user\n passwords\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n make improper use of our support services or submit false\n reports of abuse or misconduct.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n engage in any automated use of the system, such as using scripts\n to send comments or messages, or using any data mining, robots,\n or similar data gathering and extraction tools.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n interfere with, disrupt, or create an undue burden on the Site\n or the networks or services connected to the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n attempt to impersonate another user or person or use the\n username of another user.\n </p>\n </li>\n <li>\n <p class=\"m-0\">sell or otherwise transfer your profile.</p>\n </li>\n <li>\n <p class=\"m-0\">\n use any information obtained from the Site in order to harass,\n abuse, or harm another person.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use the Site as part of any effort to compete with us or\n otherwise use the Site and/or the Content for any\n revenue-generating endeavor or commercial enterprise.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n decipher, decompile, disassemble, or reverse engineer any of the\n software comprising or in any way making up a part of the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n attempt to bypass any measures of the Site designed to prevent\n or restrict access to the Site, or any portion of the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n harass, annoy, intimidate, or threaten any of our employees or\n agents engaged in providing any portion of the Site to you.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n delete the copyright or other proprietary rights notice from any\n Content.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n copy or adapt the Site\u2019s software, including but not limited to\n Flash, PHP, HTML, JavaScript, or other code.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n upload or transmit (or attempt to upload or to transmit)\n viruses, Trojan horses, or other material, including excessive\n use of capital letters and spamming (continuous posting of\n repetitive text), that interferes with any party\u2019s uninterrupted\n use and enjoyment of the Site or modifies, impairs, disrupts,\n alters, or interferes with the use, features, functions,\n operation, or maintenance of the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n upload or transmit (or attempt to upload or to transmit) any\n material that acts as a passive or active information collection\n or transmission mechanism, including without limitation, clear\n graphics interchange formats (\u201Cgifs\u201D), 1\u00D71 pixels, web bugs,\n cookies, or other similar devices (sometimes referred to as\n \u201Cspyware\u201D or \u201Cpassive collection mechanisms\u201D or \u201Cpcms\u201D).\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n except as may be the result of standard search engine or\n Internet browser usage, use, launch, develop, or distribute any\n automated system, including without limitation, any spider,\n robot, cheat utility, scraper, or offline reader that accesses\n the Site, or using or launching any unauthorized script or other\n software.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n disparage, tarnish, or otherwise harm, in our opinion, us and/or\n the Site.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n use the Site in a manner inconsistent with any applicable laws\n or regulations.\n </p>\n </li>\n </ol>\n\n <h2>USER GENERATED CONTRIBUTIONS</h2>\n\n <p>\n The Site may invite you to chat, contribute to, or participate in blogs,\n message boards, online forums, and other functionality, and may provide\n you with the opportunity to create, submit, post, display, transmit,\n perform, publish, distribute, or broadcast content and materials to us\n or on the Site, including but not limited to text, writings, video,\n audio, photographs, graphics, comments, suggestions, or personal\n information or other material (collectively, \"Contributions\").\n </p>\n <p>\n Contributions may be viewable by other users of the Site and through\n third-party websites. As such, any Contributions you transmit may be\n treated as non-confidential and non-proprietary. When you create or make\n available any Contributions, you thereby represent and warrant that:\n </p>\n\n <ol>\n <li>\n <p class=\"m-0\">\n the creation, distribution, transmission, public display, or\n performance, and the accessing, downloading, or copying of your\n Contributions do not and will not infringe the proprietary\n rights, including but not limited to the copyright, patent,\n trademark, trade secret, or moral rights of any third party.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you are the creator and owner of or have the necessary licenses,\n rights, consents, releases, and permissions to use and to\n authorize us, the Site, and other users of the Site to use your\n Contributions in any manner contemplated by the Site and these\n Terms of Use.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you have the written consent, release, and/or permission of each\n and every identifiable individual person in your Contributions\n to use the name or likeness of each and every such identifiable\n individual person to enable inclusion and use of your\n Contributions in any manner contemplated by the Site and these\n Terms of Use.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions are not false, inaccurate, or misleading.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions are not unsolicited or unauthorized\n advertising, promotional materials, pyramid schemes, chain\n letters, spam, mass mailings, or other forms of solicitation.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions are not obscene, lewd, lascivious, filthy,\n violent, harassing, libelous, slanderous, or otherwise\n objectionable (as determined by us).\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not ridicule, mock, disparage, intimidate,\n or abuse anyone.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not advocate the violent overthrow of any\n government or incite, encourage, or threaten physical harm\n against another.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not violate any applicable law,\n regulation, or rule.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not violate the privacy or publicity\n rights of any third party.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not contain any material that solicits\n personal information from anyone under the age of 18 or exploits\n people under the age of 18 in a sexual or violent manner.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not violate any federal or state law\n concerning child pornography, or otherwise intended to protect\n the health or well-being of minors.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not include any offensive comments that\n are connected to race, national origin, gender, sexual\n preference, or physical handicap.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your Contributions do not otherwise violate, or link to material\n that violates, any provision of these Terms of Use, or any\n applicable law or regulation.\n </p>\n </li>\n </ol>\n <p>\n Any use of the Site in violation of the foregoing violates these Terms\n of Use and may result in, among other things, termination or suspension\n of your rights to use the Site.\n </p>\n\n <h2>CONTRIBUTION LICENSE</h2>\n\n <p>\n By posting your Contributions to any part of the Site, or making\n Contributions accessible to the Site by linking your account from the\n Site to any of your social networking accounts, you automatically grant,\n and you represent and warrant that you have the right to grant, to us an\n unrestricted, unlimited, irrevocable, perpetual, non-exclusive,\n transferable, royalty-free, fully-paid, worldwide right, and license to\n host, use, copy, reproduce, disclose, sell, resell, publish, broadcast,\n re title, archive, store, cache, publicly perform, publicly display,\n reformat, translate, transmit, excerpt (in whole or in part), and\n distribute such Contributions (including, without limitation, your image\n and voice) for any purpose, commercial, advertising, or otherwise, and\n to prepare derivative works of, or incorporate into other works, such\n Contributions, and grant and authorize sublicense of the foregoing. The\n use and distribution may occur in any media formats and through any\n media channels.\n </p>\n <p>\n This license will apply to any form, media, or technology now known or\n hereafter developed, and includes our use of your name, company name,\n and franchise name, as applicable, and any of the trademarks, service\n marks, trade names, logos, and personal and commercial images you\n provide. You waive all moral rights in your Contributions, and you\n warrant that moral rights have not otherwise been asserted in your\n Contributions.\n </p>\n <p>\n We do not assert any ownership over your Contributions. You retain full\n ownership of all of your Contributions and any intellectual property\n rights or other proprietary rights associated with your Contributions.\n We are not liable for any statements or representations in your\n Contributions provided by you in any area on the Site.\n </p>\n <p>\n You are solely responsible for your Contributions to the Site and you\n expressly agree to exonerate us from any and all responsibility and to\n refrain from any legal action against us regarding your Contributions.\n </p>\n <p>\n We have the right, in our sole and absolute discretion, (1) to edit,\n redact, or otherwise change any Contributions; (2) to re-categorize any\n Contributions to place them in more appropriate locations on the Site;\n and (3) to pre-screen or delete any Contributions at any time and for\n any reason, without notice. We have no obligation to monitor your\n Contributions.\n </p>\n <h2>GUIDELINES FOR REVIEWS</h2>\n <ol>\n <li>\n <p class=\"m-0\">\n We may provide you areas on the Site to leave reviews or\n ratings. When posting a review, you must comply with the\n following criteria:\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you should have firsthand experience with the person/entity\n being reviewed.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your reviews should not contain offensive profanity, or abusive,\n racist, offensive, or hate language.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your reviews should not contain discriminatory references based\n on religion, race, gender, national origin, age, marital status,\n sexual orientation, or disability.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n your reviews should not contain references to illegal activity.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you should not be affiliated with competitors if posting\n negative reviews.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you should not make any conclusions as to the legality of\n conduct.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you may not post any false or misleading statements.\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n you may not organize a campaign encouraging others to post\n reviews, whether positive or negative.\n </p>\n </li>\n </ol>\n <p>\n We may accept, reject, or remove reviews in our sole discretion. We have\n absolutely no obligation to screen reviews or to delete reviews, even if\n anyone considers reviews objectionable or inaccurate. Reviews are not\n endorsed by us, and do not necessarily represent our opinions or the\n views of any of our affiliates or partners.\n </p>\n <p>\n We do not assume liability for any review or for any claims,\n liabilities, or losses resulting from any review. By posting a review,\n you hereby grant to us a perpetual, non-exclusive, worldwide,\n royalty-free, fully-paid, assignable, and sub-licensable right and\n license to reproduce, modify, translate, transmit by any means, display,\n perform, and/or distribute all content relating to reviews.\n </p>\n <h2>MOBILE APPLICATION LICENSE</h2>\n <h3>Use License</h3>\n\n <p>\n If you access the Site via a mobile application, then we grant you a\n revocable, non-exclusive, non-transferable, limited right to install and\n use the mobile application on wireless electronic devices owned or\n controlled by you, and to access and use the mobile application on such\n devices strictly in accordance with the terms and conditions of this\n mobile application license contained in these Terms of Use.\n </p>\n <p>Use License</p>\n <p>\n (1) decompile, reverse engineer, disassemble, attempt to derive the\n source code of, or decrypt the application.\n </p>\n <p>\n (2) make any modification, adaptation, improvement, enhancement,\n translation, or derivative work from the application.\n </p>\n <p>\n (3) violate any applicable laws, rules, or regulations in connection\n with your access or use of the application.\n </p>\n <p>\n (4) remove, alter, or obscure any proprietary notice (including any\n notice of copyright or trademark) posted by us or the licensors of the\n application.\n </p>\n <p>\n (5) use the application for any revenue generating endeavor, commercial\n enterprise, or other purpose for which it is not designed or intended.\n </p>\n <p>\n (6) make the application available over a network or other environment\n permitting access or use by multiple devices or users at the same .\n </p>\n <p>\n (7) use the application for creating a product, service, or software\n that is, directly or indirectly, competitive with or in any way a\n substitute for the application.\n </p>\n <p>\n (8) use the application to send automated queries to any website or to\n send any unsolicited commercial e-mail.\n </p>\n <p>\n (9) use any proprietary information or any of our interfaces or our\n other intellectual property in the design, development, manufacture,\n licensing, or distribution of any applications, accessories, or devices\n for use with the application.\n </p>\n <h3>Apple and Android Devices</h3>\n <p>\n The following terms apply when you use a mobile application obtained\n from either the Apple Store or Google Play (each an \u201CApp Distributor\u201D)\n to access the Site:\n </p>\n <p>\n (1) the license granted to you for our mobile application is limited to\n a non-transferable license to use the application on a device that\n utilizes the Apple iOS or Android operating systems, as applicable, and\n in accordance with the usage rules set forth in the applicable\n Distributor\u2019s terms of service\n </p>\n <p>\n (2) we are responsible for providing any maintenance and support\n services with respect to the mobile application as specified in the\n terms and conditions of this mobile application contained in these Terms\n of Use or as otherwise required under applicable law, and you\n acknowledge that each App Distributor has no obligation whatsoever to\n furnish any maintenance and support services with respect to the mobile\n application.\n </p>\n <p>\n (3) in the event of any failure of the mobile application to conform to\n any applicable warranty, you may notify the applicable App Distributor,\n and the App Distributor, in accordance with its terms and policies, may\n refund the purchase price, if any, paid for the mobile application, and\n to the maximum extent permitted by applicable law, the App Distributor\n will have no other warranty obligation whatsoever with respect to the\n mobile application.\n </p>\n <p>\n (4) you represent and warrant that (i) you are not located in a country\n that is subject to a U.S. government embargo, or that has been\n designated by the U.S. government as a \u201Cterrorist supporting\u201D country\n and (ii) you are not listed on any U.S. government list of prohibited or\n restricted parties.\n </p>\n <p>\n (5) you must comply with applicable third-party terms of agreement when\n using the mobile application, e.g., if you have a VoIP application, then\n you must not be in violation of their wireless data service agreement\n when using the mobile application.\n </p>\n <p>\n (6) you acknowledge and agree that the App Distributors are third-party\n beneficiaries of the terms and conditions in this mobile application\n license contained in these Terms of Use, and that each App Distributor\n will have the right (and will be deemed to have accepted the right) to\n enforce the terms and conditions in this mobile application license\n contained in these Terms of Use against you as a third-party beneficiary\n thereof.\n </p>\n <h2>SOCIAL MEDIA</h2>\n <p>\n As part of the functionality of the Site, you may link your account with\n online accounts you have with third-party service providers (each such\n account, a \u201CThird-Party Account\u201D) by either:\n </p>\n\n <ol>\n <li>\n <p class=\"m-0\">\n providing your Third-Party Account login information through the\n Site; or\n </p>\n </li>\n <li>\n <p class=\"m-0\">\n allowing us to access your Third-Party Account, as is permitted\n under the applicable terms and conditions that govern your use\n of each Third-Party Account.\n </p>\n </li>\n </ol>\n\n <p>\n You represent and warrant that you are entitled to disclose your\n Third-Party Account login information to us and/or grant us access to\n your Third-Party Account, without breach by you of any of the terms and\n conditions that govern your use of the applicable Third-Party Account,\n and without obligating us to pay any fees or making us subject to any\n usage limitations imposed by the third-party service provider of the\n Third-Party Account.\n </p>\n <p>\n By granting us access to any Third-Party Accounts, you understand that\n (1) we may access, make available, and store (if applicable) any content\n that you have provided to and stored in your Third-Party Account (the\n \u201CSocial Network Content\u201D) so that it is available on and through the\n Site via your account, including without limitation any friend lists and\n (2) we may submit to and receive from your Third-Party Account\n additional information to the extent you are notified when you link your\n account with the Third-Party Account.\n </p>\n <p>\n Depending on the Third-Party Accounts you choose and subject to the\n privacy settings that you have set in such Third-Party Accounts,\n personally identifiable information that you post to your Third-Party\n Accounts may be available on and through your account on the Site.\n </p>\n <p>\n Please note that if a Third-Party Account or associated service becomes\n unavailable or our access to such Third-Party Account is terminated by\n the third-party service provider, then Social Network Content may no\n longer be available on and through the Site. You will have the ability\n to disable the connection between your account on the Site and your\n Third-Party Accounts at any time.\n </p>\n\n <p>\n PLEASE NOTE THAT YOUR RELATIONSHIP WITH THE THIRD-PARTY SERVICE\n PROVIDERS ASSOCIATED WITH YOUR THIRD-PARTY ACCOUNTS IS GOVERNED SOLELY\n BY YOUR AGREEMENT(S) WITH SUCH THIRD-PARTY SERVICE PROVIDERS.\n </p>\n <p>\n We make no effort to review any Social Network Content for any purpose,\n including but not limited to, for accuracy, legality, or\n non-infringement, and we are not responsible for any Social Network\n Content.\n </p>\n <p>\n You acknowledge and agree that we may access your email address book\n associated with a Third-Party Account and your contacts list stored on\n your mobile device or tablet computer solely for purposes of identifying\n and informing you of those contacts who have also registered to use the\n Site.\n </p>\n <p>\n You acknowledge and agree that we may access your email address book\n associated with a Third-Party Account and your contacts list stored on\n your mobile device or tablet computer solely for purposes of identifying\n and informing you of those contacts who have also registered to use the\n Site.\n </p>\n <h2>SUBMISSIONS</h2>\n <p>\n You acknowledge and agree that any questions, comments, suggestions,\n ideas, feedback, or other information regarding the Site (\"Submissions\")\n provided by you to us are non-confidential and shall become our sole\n property. We shall own exclusive rights, including all intellectual\n property rights, and shall be entitled to the unrestricted use and\n dissemination of these Submissions for any lawful purpose, commercial or\n otherwise, without acknowledgment or compensation to you.\n </p>\n <p>\n You hereby waive all moral rights to any such Submissions, and you\n hereby warrant that any such Submissions are original with you or that\n you have the right to submit such Submissions. You agree there shall be\n no recourse against us for any alleged or actual infringement or\n misappropriation of any proprietary right in your Submissions.\n </p>\n <h2>THIRD-PARTY WEBSITES AND CONTENT</h2>\n <p>\n The Site may contain (or you may be sent via the Site) links to other\n websites (\"Third-Party Websites\") as well as articles, text, graphics,\n pictures, designs, music, sound, video, information, applications,\n software, and other content or items belonging to or originating from\n third parties (\"Third-Party Content\").\n </p>\n <p>\n Such Third-Party Websites and Third-Party Content are not investigated,\n monitored, or checked for accuracy, appropriateness, or completeness by\n us, and we are not responsible for any Third-Party Websites accessed\n through the Site or any Third-Party Content posted on, available\n through, or installed from the Site, including the content, accuracy,\n offensiveness, opinions, reliability, privacy practices, or other\n policies of or contained in the Third-Party Websites or the Third-Party\n Content.\n </p>\n <p>\n Inclusion of, linking to, or permitting the use or installation of any\n Third-Party Websites or any Third-Party Content does not imply approval\n or endorsement thereof by us. If you decide to leave the Site and access\n the Third-Party Websites or to use or install any Third-Party Content,\n you do so at your own risk, and you should be aware these Terms of Use\n no longer govern.\n </p>\n <p>\n You should review the applicable terms and policies, including privacy\n and data gathering practices, of any website to which you navigate from\n the Site or relating to any applications you use or install from the\n Site. Any purchases you make through Third-Party Websites will be\n through other websites and from other companies, and we take no\n responsibility whatsoever in relation to such purchases which are\n exclusively between you and the applicable third party.\n </p>\n <p>\n You agree and acknowledge that we do not endorse the products or\n services offered on Third-Party Websites and you shall hold us harmless\n from any harm caused by your purchase of such products or services.\n Additionally, you shall hold us harmless from any losses sustained by\n you or harm caused to you relating to or resulting in any way from any\n Third-Party Content or any contact with Third-Party Websites.\n </p>\n <h2>ADVERTISERS</h2>\n <p>\n We allow advertisers to display their advertisements and other\n information in certain areas of the Site, such as sidebar advertisements\n or banner advertisements. If you are an advertiser, you shall take full\n responsibility for any advertisements you place on the Site and any\n services provided on the Site or products sold through those\n advertisements.\n </p>\n <p>\n Further, as an advertiser, you warrant and represent that you possess\n all rights and authority to place advertisements on the Site, including,\n but not limited to, intellectual property rights, publicity rights, and\n contractual rights.\n </p>\n <p>\n As an advertiser, you agree that such advertisements are subject to our\n Digital Millennium Copyright Act (\u201CDMCA\u201D) Notice and Policy provisions\n as described below, and you understand and agree there will be no refund\n or other compensation for DMCA take down-related issues. We simply\n provide the space to place such advertisements, and we have no other\n relationship with advertisers.\n </p>\n <h2>SITE MANAGEMENT</h2>\n <p>We reserve the right, but not the obligation, to:</p>\n <p>(1) monitor the Site for violations of these Terms of Use.</p>\n <p>\n (2) take appropriate legal action against anyone who, in our sole\n discretion, violates the law or these Terms of Use, including without\n limitation, reporting such user to law enforcement authorities.\n </p>\n <p>\n (3) in our sole discretion and without limitation, refuse, restrict\n access to, limit the availability of, or disable (to the extent\n technologically feasible) any of your Contributions or any portion\n thereof\n </p>\n <p>\n (4) in\u00A0our sole discretion and without limitation, notice, or liability,\n to remove from the Site or otherwise disable all files and content that\n are excessive in size or are in any way burdensome to our systems.\n </p>\n <p>\n (5) otherwise manage the Site in a manner designed to protect our rights\n and property and to facilitate the proper functioning of the Site.\n </p>\n <h2>PRIVACY POLICY</h2>\n <p>\n We care about data privacy and security. Please review our Privacy\n Policy: <a href=\"/privacy-policy\">click here</a>. By using the Site, you\n agree to be bound by our Privacy Policy, which is incorporated into\n these Terms of Use. Please be advised the Site is hosted in the United\n States.\n </p>\n <p>\n If you access the Site from the European Union, Asia, or any other\n region of the world with laws or other requirements governing personal\n data collection, use, or disclosure that differ from applicable laws in\n the United States, then through your continued use of the Site, you are\n transferring your data to the United States, and you expressly consent\n to have your data transferred to and processed in the United States.\n </p>\n <p>\n Further, we do not knowingly accept, request, or solicit information\n from children or knowingly market to children. Therefore, in accordance\n with the U.S. Children\u2019s Online Privacy Protection Act, if we receive\n actual knowledge that anyone under the age of 13 has provided personal\n information to us without the requisite and verifiable parental consent,\n we will delete that information from the Site as quickly as is\n reasonably practical.\n </p>\n <h2>DIGITAL MILLENNIUM COPYRIGHT ACT (DMCA) NOTICE AND POLICY</h2>\n <h3>Notifications</h3>\n <p>\n We respect the intellectual property rights of others. If you believe\n that any material available on or through the Site infringes upon any\n copyright you own or control, please immediately notify our Designated\n Copyright Agent using the contact information provided below (a\n \u201CNotification\u201D).\n </p>\n <p>\n A copy of your Notification will be sent to the person who posted or\n stored the material addressed in the Notification. Please be advised\n that pursuant to federal law you may be held liable for damages if you\n make material misrepresentations in a Notification. Thus, if you are not\n sure that material located on or linked to by the Site infringes your\n copyright, you should consider first contacting an attorney.\n </p>\n <p>\n All Notifications should meet the requirements of DMCA 17 U.S.C. \u00A7\n 512(c)(3) and include the following information:\n </p>\n <p>\n (1) A physical or electronic signature of a person authorized to act on\n behalf of the owner of an exclusive right that is allegedly infringed.\n </p>\n <p>\n (2) identification of the copyrighted work claimed to have been\n infringed, or, if multiple copyrighted works on the Site are covered by\n the Notification, a representative list of such works on the Site\n </p>\n <p>\n (3) information reasonably sufficient to permit us to contact the\n complaining party, such as an address, telephone number, and, if\n available, an email address at which the complaining party may be\n contacted.\n </p>\n <p>\n (4) a statement that the complaining party has a good faith belief that\n use of the material in the manner complained of is not authorized by the\n copyright owner, its agent, or the law.\n </p>\n <p>\n (5) a statement that the information in the notification is accurate,\n and under penalty of perjury, that the complaining party is authorized\n to act on behalf of the owner of an exclusive right that is allegedly\n infringed upon.\n </p>\n <h3>Counter Notification</h3>\n <p>\n If you believe your own copyrighted material has been removed from the\n Site as a result of a mistake or mis identification, you may submit a\n written counter notification to us using the contact information\n provided below (a \u201CCounter Notification\u201D).\n </p>\n <p>\n To be an effective Counter Notification under the DMCA, your Counter\n Notification must include substantially the following:\n </p>\n <p>\n (1) identification of the material that has been removed or disabled and\n the location at which the material appeared before it was removed or\n disabled.\n </p>\n <p>\n (2) a statement that you consent to the jurisdiction of the Federal\n District Court in which your address is located, or if your address is\n outside the United States, for any judicial district in which we are\n located.\n </p>\n <p>\n (3) a statement that you will accept service of process from the party\n that filed the Notification or the party's agent.\n </p>\n <p>(4) your name, address, and telephone number.</p>\n <p>\n (5) a statement under penalty of perjury that you have a good faith\n belief that the material in question was removed or disabled as a result\n of a mistake or mis identification of the material to be removed or\n disabled\n </p>\n <p>(6) your physical or electronic signature.</p>\n <p>\n If you send us a valid, written Counter Notification meeting the\n requirements described above, we will restore your removed or disabled\n material, unless we first receive notice from the party filing the\n Notification informing us that such party has filed a court action to\n restrain you from engaging in infringing activity related to the\n material in question.\n </p>\n <p>\n Please note that if you materially misrepresent that the disabled or\n removed content was removed by mistake or mis-identification, you may be\n liable for damages, including costs and attorney's fees. Filing a false\n Counter Notification constitutes perjury.\n </p>\n <p>\n Designated Copyright Agent\n <br />\n {{ company_name }}\n <br />\n Attn: Copyright Agent\n <br />\n {{ company_email }}\n </p>\n <h2>COPYRIGHT INFRINGEMENTS</h2>\n <p>\n We respect the intellectual property rights of others. If you believe\n that any material available on or through the Site infringes upon any\n copyright you own or control, please immediately notify us using the\n contact information provided below (a \u201CNotification\u201D). A copy of your\n Notification will be sent to the person who posted or stored the\n material addressed in the Notification.\n </p>\n <p>\n Please be advised that pursuant to federal law you may be held liable\n for damages if you make material misrepresentations in a Notification.\n Thus, if you are not sure that material located on or linked to by the\n Site infringes your copyright, you should consider first contacting an\n attorney.\n </p>\n <h2>TERM AND TERMINATION</h2>\n <p>\n These Terms of Use shall remain in full force and effect while you use\n the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE\n RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR\n LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING\n CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON,\n INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY,\n OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR\n REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR\n DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT\n ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.\n </p>\n <p>\n If we terminate or suspend your account for any reason, you are\n prohibited from registering and creating a new account under your name,\n a fake or borrowed name, or the name of any third party, even if you may\n be acting on behalf of the third party.\n </p>\n <p>\n In addition to terminating or suspending your account, we reserve the\n right to take appropriate legal action, including without limitation\n pursuing civil, criminal, and injunctive redress.\n </p>\n <h2>MODIFICATIONS AND INTERRUPTIONS</h2>\n <p>\n We reserve the right to change, modify, or remove the contents of the\n Site at any time or for any reason at our sole discretion without\n notice. However, we have no obligation to update any information on our\n Site. We also reserve the right to modify or discontinue all or part of\n the Site without notice at any time.\n </p>\n <p>\n We will not be liable to you or any third party for any modification,\n price change, suspension, or discontinuance of the Site.\n </p>\n <p>\n We cannot guarantee the Site will be available at all times. We may\n experience hardware, software, or other problems or need to perform\n maintenance related to the Site, resulting in interruptions, delays, or\n errors.\n </p>\n <p>\n We reserve the right to change, revise, update, suspend, discontinue, or\n otherwise modify the Site at any time or for any reason without notice\n to you. You agree that we have no liability whatsoever for any loss,\n damage, or inconvenience caused by your inability to access or use the\n Site during any downtime or discontinuance of the Site.\n </p>\n <p>\n Nothing in these Terms of Use will be construed to obligate us to\n maintain and support the Site or to supply any corrections, updates, or\n releases in connection therewith.\n </p>\n <h2>GOVERNING LAW</h2>\n <p>\n For any dispute relating to the entering into effect, validity,\n interpretation, execution, suspension, termination and forcible\n execution of this Contract, the Courts of the judicial district of\n Brussels have jurisdiction. Belgian law governs this Contract, excluding\n provisions of private international law pertinent to the applicable law,\n and the Vienna Convention on contracts for the international sale of\n real property (Vienna, April 11, 1980).\n </p>\n <h2>DISPUTE RESOLUTION</h2>\n <p>\n The parties shall endeavour to settle any dispute arising out of or\n relating to this agreement, including with regard to its existence,\n validity or termination, by mediation before having recourse to\n arbitration or litigation.\n </p>\n <p>\n Any legal action of whatever nature brought by either you or us\n (collectively, the \u201CParties\u201D and individually, a \u201CParty\u201D) shall be\n commenced or prosecuted in the state and federal courts located in\n Brussels, Belgium, and the Parties hereby consent to, and waive all\n defenses of lack of personal jurisdiction and forum non convenient with\n respect to venue and jurisdiction in such state and federal courts.\n </p>\n <p>\n Application of the United Nations Convention on Contracts for the\n International Sale of Goods and the Uniform Computer Information\n Transaction Act (UCITA) are excluded from these Terms of Use. In no\n event shall any claim, action, or proceeding brought by either Party\n related in any way to the Site be commenced more than 2 years after the\n cause of action arose.\n </p>\n <h2>CORRECTIONS</h2>\n <p>\n There may be information on the Site that contains typographical errors,\n inaccuracies, or omissions that may relate to the Site, including\n descriptions, pricing, availability, and various other information. We\n reserve the right to correct any errors, inaccuracies, or omissions and\n to change or update the information on the Site at any time, without\n prior notice.\n </p>\n <h2>DISCLAIMER</h2>\n <p>\n THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT\n YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE\n FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR\n IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING,\n WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS\n FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR\n REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE\u2019S CONTENT\n OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO\n LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR\n INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY\n DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE\n OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS\n AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION\n STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR\n FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH\n MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6)\n ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR\n DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT\n POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT\n WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR\n SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY\n HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN\n ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY\n WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY\n THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES.\n </p>\n <p>\n AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN\n ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION\n WHERE APPROPRIATE.\n </p>\n <h2>LIMITATIONS OF LIABILITY</h2>\n <p>\n IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO\n YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,\n EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST\n PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR\n USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH\n DAMAGES.\n </p>\n <p>\n NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY\n TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE\n ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID,\n IF ANY, BY YOU TO US DURING THE 6 (SIX) MONTH PERIOD PRIOR TO ANY CAUSE\n OF ACTION ARISING OR $10.000 (TEN THOUSAND DOLLARS). CERTAIN STATE LAWS\n DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR\n LIMITATION OF CERTAIN DAMAGES.\n </p>\n <p>\n IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR\n LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.\n </p>\n <h2>INDEMNIFICATION</h2>\n <p>\n You agree to defend, indemnify, and hold us harmless, including our\n subsidiaries, affiliates, and all of our respective officers, agents,\n partners, and employees, from and against any loss, damage, liability,\n claim, or demand, including reasonable attorneys\u2019 fees and expenses,\n made by any third party due to or arising out of: (1) your\n Contributions; (2) use of the Site; (3) breach of these Terms of Use;\n (4) any breach of your representations and warranties set forth in these\n Terms of Use; (5) your violation of the rights of a third party,\n including but not limited to intellectual property rights; or (6) any\n overt harmful act toward any other user of the Site with whom you\n connected via the Site.\n </p>\n <p>\n Notwithstanding the foregoing, we reserve the right, at your expense, to\n assume the exclusive defense and control of any matter for which you are\n required to indemnify us, and you agree to cooperate, at your expense,\n with our defense of such claims. We will use reasonable efforts to\n notify you of any such claim, action, or proceeding which is subject to\n this indemnification upon becoming aware of it.\n </p>\n <h2>USER DATA</h2>\n <p>\n We will maintain certain data that you transmit to the Site for the\n purpose of managing the Site, as well as data relating to your use of\n the Site. Although we perform regular routine backups of data, you are\n solely responsible for all data that you transmit or that relates to any\n activity you have undertaken using the Site.\n </p>\n <p>\n You agree that we shall have no liability to you for any loss or\n corruption of any such data, and you hereby waive any right of action\n against us arising from any such loss or corruption of such data.\n </p>\n <h2>ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES</h2>\n <p>\n Visiting the Site, sending us emails, and completing online forms\n constitute electronic communications. You consent to receive electronic\n communications, and you agree that all agreements, notices, disclosures,\n and other communications we provide to you electronically, via email and\n on the Site, satisfy any legal requirement that such communication be in\n writing.\n </p>\n <p>\n YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS,\n AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND\n RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE.\n </p>\n <p>\n You hereby waive any rights or requirements under any statutes,\n regulations, rules, ordinances, or other laws in any jurisdiction which\n require an original signature or delivery or retention of non-electronic\n records, or to payments or the granting of credits by any means other\n than electronic means.\n </p>\n\n <h2>MISCELLANEOUS</h2>\n <p>\n These Terms of Use and any policies or operating rules posted by us on\n the Site constitute the entire agreement and understanding between you\n and us. Our failure to exercise or enforce any right or provision of\n these Terms of Use shall not operate as a waiver of such right or\n provision.\n </p>\n <p>\n These Terms of Use operate to the fullest extent permissible by law. We\n may assign any or all of our rights and obligations to others at any\n time. We shall not be responsible or liable for any loss, damage, delay,\n or failure to act caused by any cause beyond our reasonable control.\n </p>\n <p>\n If any provision or part of a provision of these Terms of Use is\n determined to be unlawful, void, or unenforceable, that provision or\n part of the provision is deemed severable from these Terms of Use and\n does not affect the validity and enforceability of any remaining\n provisions.\n </p>\n <p>\n There is no joint venture, partnership, employment or agency\n relationship created between you and us as a result of these Terms of\n Use or use of the Site. You agree that these Terms of Use will not be\n construed against us by virtue of having drafted them.\n </p>\n <p>\n You hereby waive any and all defenses you may have based on the\n electronic form of these Terms of Use and the lack of signing by the\n parties hereto to execute these Terms of Use.\n </p>\n <h2>CONTACT US</h2>\n <p>\n In order to resolve a complaint regarding the Site or to receive further\n information regarding use of the Site, please contact us at:\n <br />{{ company_name }}, {{ company_street }}, {{ company_city_code }}\n {{ company_city }} - {{ company_state }}\n </p>\n <h3>Questions and Comments</h3>\n <p>\n If you have any questions about this Agreement, please\n <a href=\"mailto:{{ company_email }}\">let us know</a>.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<pw-landing-page-footer-b></pw-landing-page-footer-b>\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)}h1,h2,h3,h4,h5,h6{font-weight:600}h1{font-size:36px}.card{padding:10px 15px!important}.card ol li{padding-left:30px!important;position:relative;color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding-top:5px;padding-bottom:5px;padding-right:0}.card ol li ol.list-bullet li,.card ol li ul.list-bullet li{padding-left:0!important}.card ol li:before{font:400 16px/1.3 Roboto,sans-serif;left:0;position:absolute;top:4px}.card ol li h3{font:400 20px/1.3 Roboto,sans-serif;margin-bottom:15px}.card p{color:#000;font:14px/1.4 Roboto,sans-serif;margin:5px 0;padding:5px 0}.card p strong{font-family:Roboto,sans-serif}.banner{background:url(/assets/img/landing-page/header-bg.jpg) no-repeat center;background-size:cover;padding:0 0 130px}.terms-of-service h3{padding:5px 0 0!important}.terms-of-service ol{counter-reset:section;padding:0 5px 0 0!important}.terms-of-service ol li:before{content:counters(section,\".\") \". \";counter-increment:section;float:left;font-weight:600;padding:0 10px 0 0}.terms-of-service ol li ol li ol li:before,.terms-of-service ol li ol li ul li:before{content:\"\";counter-increment:none}li{padding:10px 0}.parent-ol>li:before{font-size:26px;margin-top:16px}ul.list-bullet,ol.list-bullet{list-style-type:disc;margin-left:20px}ul.list-bullet>li,ol.list-bullet>li{padding:0}\n"] }]
773
- }], ctorParameters: () => [{ type: i1$4.AppConfigService }], propDecorators: { isPublic: [{
778
+ }], ctorParameters: () => [{ type: i1$5.AppConfigService }], propDecorators: { isPublic: [{
774
779
  type: Input
775
780
  }] } });
776
781
 
777
782
  class SplashComponent {
778
783
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
779
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SplashComponent, selector: "ng-component", ngImport: i0, template: "<pw-loader [isVisible]=\"true\"></pw-loader>\n", dependencies: [{ kind: "component", type: i1$5.AppLoaderComponent, selector: "pw-loader", inputs: ["isVisible", "closeOnOutsideClick", "autoCloseTimeOut"] }] }); }
784
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SplashComponent, selector: "ng-component", ngImport: i0, template: "<pw-loader [isVisible]=\"true\"></pw-loader>\n", dependencies: [{ kind: "component", type: i1$6.AppLoaderComponent, selector: "pw-loader", inputs: ["isVisible", "closeOnOutsideClick", "autoCloseTimeOut"] }] }); }
780
785
  }
781
786
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SplashComponent, decorators: [{
782
787
  type: Component,
@@ -837,28 +842,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
837
842
  args: [{ selector: 'pw-authenticator', template: "<!--Auth Page Starts-->\n<section>\n <div class=\"container-fluid\">\n <div class=\"row full-height-vh\">\n <div class=\"col-12 d-flex align-items-center justify-content-center\">\n <h2>Logging...</h2>\n </div>\n </div>\n </div>\n</section>\n<!--Auth Page Ends-->\n" }]
838
843
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i0.Injector }] });
839
844
 
840
- class ClearbitIconComponent {
845
+ class ClearBitIconComponent {
841
846
  constructor() {
842
847
  this.src = null;
843
848
  this.altText = 'Logo';
844
- this.clearbitSrc = null;
849
+ this.clearBitSrc = null;
845
850
  this.dummyPath = 'assets/img/icons/company.png';
846
851
  }
847
852
  ngOnChanges(simple) {
848
853
  if (simple['src']?.currentValue &&
849
854
  simple['src']?.currentValue !== simple['src']?.previousValue) {
850
- this.clearbitSrc = HelperService.getLogoByUrl(this.src);
855
+ this.clearBitSrc = HelperService.getLogoByUrl(this.src);
851
856
  }
852
857
  else {
853
- this.clearbitSrc = this.dummyPath;
858
+ this.clearBitSrc = this.dummyPath;
854
859
  }
855
860
  }
856
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ClearbitIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
857
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ClearbitIconComponent, selector: "pw-clearbit-icon", inputs: { src: "src", altText: "altText", dummyPath: "dummyPath" }, usesOnChanges: true, ngImport: i0, template: "<img [src]=\"clearbitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"], dependencies: [{ kind: "directive", type: i1$1.LazyImgDirective, selector: "img" }] }); }
861
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ClearBitIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
862
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ClearBitIconComponent, selector: "pw-clearbit-icon", inputs: { src: "src", altText: "altText", dummyPath: "dummyPath" }, usesOnChanges: true, ngImport: i0, template: "<img [src]=\"clearBitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"], dependencies: [{ kind: "directive", type: i1$2.LazyImgDirective, selector: "img" }] }); }
858
863
  }
859
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ClearbitIconComponent, decorators: [{
864
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ClearBitIconComponent, decorators: [{
860
865
  type: Component,
861
- args: [{ selector: 'pw-clearbit-icon', template: "<img [src]=\"clearbitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"] }]
866
+ args: [{ selector: 'pw-clearbit-icon', template: "<img [src]=\"clearBitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"] }]
862
867
  }], propDecorators: { src: [{
863
868
  type: Input
864
869
  }], altText: [{
@@ -925,7 +930,7 @@ class NoDataComponent {
925
930
  <span *ngIf="description" class="pb-4">{{ description }}</span>
926
931
  <ng-content></ng-content>
927
932
  </div>
928
- `, isInline: true, 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)}.no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;height:100%;border:1px dashed rgb(204,204,204);border-radius:4px;margin:20px 0;padding:10px;background:#fafafa!important;color:oklch(from var(--text) 40% c h)!important}.no-data .message{font-weight:600;font-size:15px;color:oklch(from var(--text) 40% c h)!important}.no-data.has-content{padding-top:10px;padding-bottom:20px}.no-data .nothing-found-image{margin-top:15px;height:auto;max-width:150px}\n"], dependencies: [{ kind: "directive", type: i1$1.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
933
+ `, isInline: true, 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)}.no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;height:100%;border:1px dashed rgb(204,204,204);border-radius:4px;margin:20px 0;padding:10px;background:#fafafa!important;color:oklch(from var(--text) 40% c h)!important}.no-data .message{font-weight:600;font-size:15px;color:oklch(from var(--text) 40% c h)!important}.no-data.has-content{padding-top:10px;padding-bottom:20px}.no-data .nothing-found-image{margin-top:15px;height:auto;max-width:150px}\n"], dependencies: [{ kind: "directive", type: i1$2.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
929
934
  }
930
935
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NoDataComponent, decorators: [{
931
936
  type: Component,
@@ -1086,7 +1091,7 @@ class EntityGroupComponent extends AppBaseComponent {
1086
1091
  super.ngOnDestroy();
1087
1092
  }
1088
1093
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, deps: [{ token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i5.NgbModal }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1089
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EntityGroupComponent, selector: "pw-entity-group", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\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 table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n (keydown.enter)=\"onDelete(member.id)\"\n (keydown.space)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$1.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i2$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i8.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: i9.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: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1094
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EntityGroupComponent, selector: "pw-entity-group", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\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 table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n (keydown.enter)=\"onDelete(member.id)\"\n (keydown.space)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$2.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i8.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: i9.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: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1090
1095
  }
1091
1096
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, decorators: [{
1092
1097
  type: Component,
@@ -1292,8 +1297,8 @@ class GroupsComponent extends AppBaseComponent {
1292
1297
  ngOnDestroy() {
1293
1298
  super.ngOnDestroy();
1294
1299
  }
1295
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GroupsComponent, deps: [{ token: i2.UntypedFormBuilder }, { token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1296
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: GroupsComponent, selector: "pw-groups", usesInheritance: true, ngImport: i0, template: "<div>\n <section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams</h2>\n\n <p>\n Here you can define the teams for your Enterprise members. For example\n \"Corporate Sales Team\", \"Frontend Dev Team\" etc.\n <br />\n Once the teams created, you'll be able to add members to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 d-flex justify-content-end align-items-center text-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"groupOperation()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Team\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-1\"\n [routerLink]=\"['/' + subscription?.slug + '/enterprise', 'groups', 'labels']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Manage Team Categories\n </button>\n </div>\n </div>\n\n <!-- Add Group Template -->\n <div *ngIf=\"isGroupOperations\"\n class=\"mb-4\">\n <h4 class=\"card-title d-inline\">{{ viewEdit ? 'Update the' : 'Create a new' }} team</h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroup()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n (click)=\"isGroupOperations = !isGroupOperations\"\n class=\"btn btn-outline-default me-2\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">Add</button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Edit Group Template -->\n <div class=\"mt-4\"\n *ngIf=\"isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</label>\n <input type=\"text\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-4 mt-2 filter\">\n <select (change)=\"filterDomainsList($event)\"\n class=\"form-select\">\n <option value=\"0\">All Team Categories</option>\n <option *ngFor=\"let option of groupDefinition\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\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=\"row group_list my-4\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of allGroups; trackBy: trackByGroup\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n <span><a class=\"badge bg-primary\">{{\n group?.group_definition_name\n }}</a></span>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"me-2 my-1\"\n *ngIf=\"hasAccess\"\n aria-label=\"Delete\"\n (click)=\"onDelete(group.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Group\"\n *ngIf=\"hasAccess\"\n (click)=\"editGroup(group.id)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Members\"\n [routerLink]=\"[group.id, 'members']\"><i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </a>\n <a class=\"communications me-2 my-1\"\n aria-label=\"Communications\"\n (click)=\"navigateToCommunications(group.id)\"><i class=\"fa fa-comments cta2-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"communications my-1\"\n aria-label=\"Documents\"\n (click)=\"navigateToDocumentations(group.id)\"><i class=\"fab fa-wikipedia-w cta1-icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && hasAccess && !isGroupOperations && isLoaded\"\n class=\"clearboth\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessage' | transloco\"> </pw-no-data>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && !hasAccess && !isGroupOperations && isLoaded\"\n class=\"clearboth\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessageIfUser' | transloco\"> </pw-no-data>\n</div>\n", styles: ["a.previous i{line-height:13px}.clearboth{clear:both}@media screen and (max-width: 480px){.filter{flex:none;max-width:100%!important}.communications{margin-top:2%}}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i2$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
1300
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GroupsComponent, deps: [{ token: i1$1.UntypedFormBuilder }, { token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: GroupsComponent, selector: "pw-groups", usesInheritance: true, ngImport: i0, template: "<div>\n <section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams</h2>\n\n <p>\n Here you can define the teams for your Enterprise members. For example\n \"Corporate Sales Team\", \"Frontend Dev Team\" etc.\n <br />\n Once the teams created, you'll be able to add members to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 d-flex justify-content-end align-items-center text-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"groupOperation()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Team\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-1\"\n [routerLink]=\"['/' + subscription?.slug + '/enterprise', 'groups', 'labels']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Manage Team Categories\n </button>\n </div>\n </div>\n\n <!-- Add Group Template -->\n <div *ngIf=\"isGroupOperations\"\n class=\"mb-4\">\n <h4 class=\"card-title d-inline\">{{ viewEdit ? 'Update the' : 'Create a new' }} team</h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroup()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n (click)=\"isGroupOperations = !isGroupOperations\"\n class=\"btn btn-outline-default me-2\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">Add</button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Edit Group Template -->\n <div class=\"mt-4\"\n *ngIf=\"isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</label>\n <input type=\"text\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-4 mt-2 filter\">\n <select (change)=\"filterDomainsList($event)\"\n class=\"form-select\">\n <option value=\"0\">All Team Categories</option>\n <option *ngFor=\"let option of groupDefinition\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\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=\"row group_list my-4\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of allGroups; trackBy: trackByGroup\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n <span><a class=\"badge bg-primary\">{{\n group?.group_definition_name\n }}</a></span>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"me-2 my-1\"\n *ngIf=\"hasAccess\"\n aria-label=\"Delete\"\n (click)=\"onDelete(group.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Group\"\n *ngIf=\"hasAccess\"\n (click)=\"editGroup(group.id)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Members\"\n [routerLink]=\"[group.id, 'members']\"><i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </a>\n <a class=\"communications me-2 my-1\"\n aria-label=\"Communications\"\n (click)=\"navigateToCommunications(group.id)\"><i class=\"fa fa-comments cta2-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"communications my-1\"\n aria-label=\"Documents\"\n (click)=\"navigateToDocumentations(group.id)\"><i class=\"fab fa-wikipedia-w cta1-icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && hasAccess && !isGroupOperations && isLoaded\"\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessage' | transloco\"> </pw-no-data>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && !hasAccess && !isGroupOperations && isLoaded\"\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessageIfUser' | transloco\"> </pw-no-data>\n</div>\n", styles: ["a.previous i{line-height:13px}.clear-both{clear:both}@media screen and (max-width: 480px){.filter{flex:none;max-width:100%!important}.communications{margin-top:2%}}\n"], dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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$2.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
1297
1302
  }
1298
1303
  __decorate([
1299
1304
  ValidateForm('form'),
@@ -1303,8 +1308,8 @@ __decorate([
1303
1308
  ], GroupsComponent.prototype, "saveGroup", null);
1304
1309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GroupsComponent, decorators: [{
1305
1310
  type: Component,
1306
- args: [{ selector: 'pw-groups', template: "<div>\n <section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams</h2>\n\n <p>\n Here you can define the teams for your Enterprise members. For example\n \"Corporate Sales Team\", \"Frontend Dev Team\" etc.\n <br />\n Once the teams created, you'll be able to add members to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 d-flex justify-content-end align-items-center text-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"groupOperation()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Team\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-1\"\n [routerLink]=\"['/' + subscription?.slug + '/enterprise', 'groups', 'labels']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Manage Team Categories\n </button>\n </div>\n </div>\n\n <!-- Add Group Template -->\n <div *ngIf=\"isGroupOperations\"\n class=\"mb-4\">\n <h4 class=\"card-title d-inline\">{{ viewEdit ? 'Update the' : 'Create a new' }} team</h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroup()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n (click)=\"isGroupOperations = !isGroupOperations\"\n class=\"btn btn-outline-default me-2\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">Add</button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Edit Group Template -->\n <div class=\"mt-4\"\n *ngIf=\"isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</label>\n <input type=\"text\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-4 mt-2 filter\">\n <select (change)=\"filterDomainsList($event)\"\n class=\"form-select\">\n <option value=\"0\">All Team Categories</option>\n <option *ngFor=\"let option of groupDefinition\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\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=\"row group_list my-4\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of allGroups; trackBy: trackByGroup\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n <span><a class=\"badge bg-primary\">{{\n group?.group_definition_name\n }}</a></span>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"me-2 my-1\"\n *ngIf=\"hasAccess\"\n aria-label=\"Delete\"\n (click)=\"onDelete(group.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Group\"\n *ngIf=\"hasAccess\"\n (click)=\"editGroup(group.id)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Members\"\n [routerLink]=\"[group.id, 'members']\"><i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </a>\n <a class=\"communications me-2 my-1\"\n aria-label=\"Communications\"\n (click)=\"navigateToCommunications(group.id)\"><i class=\"fa fa-comments cta2-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"communications my-1\"\n aria-label=\"Documents\"\n (click)=\"navigateToDocumentations(group.id)\"><i class=\"fab fa-wikipedia-w cta1-icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && hasAccess && !isGroupOperations && isLoaded\"\n class=\"clearboth\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessage' | transloco\"> </pw-no-data>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && !hasAccess && !isGroupOperations && isLoaded\"\n class=\"clearboth\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessageIfUser' | transloco\"> </pw-no-data>\n</div>\n", styles: ["a.previous i{line-height:13px}.clearboth{clear:both}@media screen and (max-width: 480px){.filter{flex:none;max-width:100%!important}.communications{margin-top:2%}}\n"] }]
1307
- }], ctorParameters: () => [{ type: i2.UntypedFormBuilder }, { type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }], propDecorators: { saveGroup: [] } });
1311
+ args: [{ selector: 'pw-groups', template: "<div>\n <section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams</h2>\n\n <p>\n Here you can define the teams for your Enterprise members. For example\n \"Corporate Sales Team\", \"Frontend Dev Team\" etc.\n <br />\n Once the teams created, you'll be able to add members to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 d-flex justify-content-end align-items-center text-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"groupOperation()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Team\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-1\"\n [routerLink]=\"['/' + subscription?.slug + '/enterprise', 'groups', 'labels']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Manage Team Categories\n </button>\n </div>\n </div>\n\n <!-- Add Group Template -->\n <div *ngIf=\"isGroupOperations\"\n class=\"mb-4\">\n <h4 class=\"card-title d-inline\">{{ viewEdit ? 'Update the' : 'Create a new' }} team</h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroup()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n (click)=\"isGroupOperations = !isGroupOperations\"\n class=\"btn btn-outline-default me-2\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">Add</button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Edit Group Template -->\n <div class=\"mt-4\"\n *ngIf=\"isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamName\">{{ 'Enterprise.Teams.TeamName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</label>\n <input type=\"text\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"teamCategory\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </label>\n <select class=\"form-select\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{\n 'is-invalid':\n submitted && form.controls['group_definition_id'].errors\n }\">\n <option *ngFor=\"let label of groupDefinition\"\n [value]=\"label.id\">\n {{ label.name }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-4 mt-2 filter\">\n <select (change)=\"filterDomainsList($event)\"\n class=\"form-select\">\n <option value=\"0\">All Team Categories</option>\n <option *ngFor=\"let option of groupDefinition\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\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=\"row group_list my-4\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of allGroups; trackBy: trackByGroup\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n <span><a class=\"badge bg-primary\">{{\n group?.group_definition_name\n }}</a></span>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"me-2 my-1\"\n *ngIf=\"hasAccess\"\n aria-label=\"Delete\"\n (click)=\"onDelete(group.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Group\"\n *ngIf=\"hasAccess\"\n (click)=\"editGroup(group.id)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"me-2 my-1\"\n aria-label=\"Members\"\n [routerLink]=\"[group.id, 'members']\"><i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </a>\n <a class=\"communications me-2 my-1\"\n aria-label=\"Communications\"\n (click)=\"navigateToCommunications(group.id)\"><i class=\"fa fa-comments cta2-icon\" aria-hidden=\"true\"></i></a>\n <a class=\"communications my-1\"\n aria-label=\"Documents\"\n (click)=\"navigateToDocumentations(group.id)\"><i class=\"fab fa-wikipedia-w cta1-icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && hasAccess && !isGroupOperations && isLoaded\"\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessage' | transloco\"> </pw-no-data>\n</div>\n<div *ngIf=\"allGroups?.length === 0 && !hasAccess && !isGroupOperations && isLoaded\"\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessageIfUser' | transloco\"> </pw-no-data>\n</div>\n", styles: ["a.previous i{line-height:13px}.clear-both{clear:both}@media screen and (max-width: 480px){.filter{flex:none;max-width:100%!important}.communications{margin-top:2%}}\n"] }]
1312
+ }], ctorParameters: () => [{ type: i1$1.UntypedFormBuilder }, { type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }], propDecorators: { saveGroup: [] } });
1308
1313
 
1309
1314
  class GroupDefinitionComponent extends AppBaseComponent {
1310
1315
  constructor(groupService, fb, subscriptionService, data, injector) {
@@ -1453,8 +1458,8 @@ class GroupDefinitionComponent extends AppBaseComponent {
1453
1458
  ngOnDestroy() {
1454
1459
  super.ngOnDestroy();
1455
1460
  }
1456
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GroupDefinitionComponent, deps: [{ token: i1.GroupService }, { token: i2.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1457
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: GroupDefinitionComponent, selector: "pw-groupdefinition", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams Categories</h2>\n\n <p>\n Here you can define the categories for your enterprise's groups. For example \"Sales\n Department\", \"Development Department\", etc.\n <br />\n Once the category created, you'll be able to add teams to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-6 d-flex align-items-center text-start mb-sm-3 mb-lg-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n </div>\n <div class=\"col-6\"\n *ngIf=\"hasAccess\">\n <button class=\"float-end btn btn-sm btn-outline-primary me-2\"\n (click)=\"viewDefinitions()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create new Team Category\n </button>\n </div>\n </div>\n\n <div *ngIf=\"viewDefinition\">\n <h4 class=\"card-title d-inline mb-5\">\n {{ viewEdit ? 'Update the' : 'Create a new' }} category\n </h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroupDefinition()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">Add Category</button>\n </div>\n </div>\n </form>\n </div>\n\n <div class=\"mt-4\"\n *ngIf=\"viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}: </label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}:</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <ng-container *ngIf=\"groupDefinition?.length !== 0\">\n <div class=\"row mb-last-3 group-definitions-wrapper\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of groupDefinition\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"btn btn-sm btn-outline-danger me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onDelete(group.id)\">{{ 'Button.Delete' | transloco }}</a>\n <a class=\"btn btn-sm btn-outline-primary me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onGroupDefinitionEdit(group.id)\">{{ 'Button.Edit' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"groupDefinition?.length === 0 && hasAccess && !viewDefinition && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsMessage' | transloco\"> </pw-no-data>\n </div>\n <div *ngIf=\"groupDefinition?.length === 0 && !hasAccess && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsUserMessage' | transloco\"> </pw-no-data>\n </div>\n</section>\n", styles: [".mb-last-3{margin-bottom:3rem}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
1461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GroupDefinitionComponent, deps: [{ token: i1.GroupService }, { token: i1$1.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1462
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: GroupDefinitionComponent, selector: "pw-group-definition", usesInheritance: true, ngImport: i0, template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams Categories</h2>\n\n <p>\n Here you can define the categories for your enterprise's groups. For example \"Sales\n Department\", \"Development Department\", etc.\n <br />\n Once the category created, you'll be able to add teams to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-6 d-flex align-items-center text-start mb-sm-3 mb-lg-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n </div>\n <div class=\"col-6\"\n *ngIf=\"hasAccess\">\n <button class=\"float-end btn btn-sm btn-outline-primary me-2\"\n (click)=\"viewDefinitions()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create new Team Category\n </button>\n </div>\n </div>\n\n <div *ngIf=\"viewDefinition\">\n <h4 class=\"card-title d-inline mb-5\">\n {{ viewEdit ? 'Update the' : 'Create a new' }} category\n </h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroupDefinition()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">Add Category</button>\n </div>\n </div>\n </form>\n </div>\n\n <div class=\"mt-4\"\n *ngIf=\"viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}: </label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}:</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <ng-container *ngIf=\"groupDefinition?.length !== 0\">\n <div class=\"row mb-last-3 group-definitions-wrapper\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of groupDefinition\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"btn btn-sm btn-outline-danger me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onDelete(group.id)\">{{ 'Button.Delete' | transloco }}</a>\n <a class=\"btn btn-sm btn-outline-primary me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onGroupDefinitionEdit(group.id)\">{{ 'Button.Edit' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"groupDefinition?.length === 0 && hasAccess && !viewDefinition && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsMessage' | transloco\"> </pw-no-data>\n </div>\n <div *ngIf=\"groupDefinition?.length === 0 && !hasAccess && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsUserMessage' | transloco\"> </pw-no-data>\n </div>\n</section>\n", styles: [".mb-last-3{margin-bottom:3rem}\n"], dependencies: [{ 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.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$2.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i3$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }] }); }
1458
1463
  }
1459
1464
  __decorate([
1460
1465
  ValidateForm('form'),
@@ -1464,8 +1469,8 @@ __decorate([
1464
1469
  ], GroupDefinitionComponent.prototype, "saveGroupDefinition", null);
1465
1470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GroupDefinitionComponent, decorators: [{
1466
1471
  type: Component,
1467
- args: [{ selector: 'pw-groupdefinition', template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams Categories</h2>\n\n <p>\n Here you can define the categories for your enterprise's groups. For example \"Sales\n Department\", \"Development Department\", etc.\n <br />\n Once the category created, you'll be able to add teams to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-6 d-flex align-items-center text-start mb-sm-3 mb-lg-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n </div>\n <div class=\"col-6\"\n *ngIf=\"hasAccess\">\n <button class=\"float-end btn btn-sm btn-outline-primary me-2\"\n (click)=\"viewDefinitions()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create new Team Category\n </button>\n </div>\n </div>\n\n <div *ngIf=\"viewDefinition\">\n <h4 class=\"card-title d-inline mb-5\">\n {{ viewEdit ? 'Update the' : 'Create a new' }} category\n </h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroupDefinition()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">Add Category</button>\n </div>\n </div>\n </form>\n </div>\n\n <div class=\"mt-4\"\n *ngIf=\"viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}: </label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}:</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <ng-container *ngIf=\"groupDefinition?.length !== 0\">\n <div class=\"row mb-last-3 group-definitions-wrapper\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of groupDefinition\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"btn btn-sm btn-outline-danger me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onDelete(group.id)\">{{ 'Button.Delete' | transloco }}</a>\n <a class=\"btn btn-sm btn-outline-primary me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onGroupDefinitionEdit(group.id)\">{{ 'Button.Edit' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"groupDefinition?.length === 0 && hasAccess && !viewDefinition && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsMessage' | transloco\"> </pw-no-data>\n </div>\n <div *ngIf=\"groupDefinition?.length === 0 && !hasAccess && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsUserMessage' | transloco\"> </pw-no-data>\n </div>\n</section>\n", styles: [".mb-last-3{margin-bottom:3rem}\n"] }]
1468
- }], ctorParameters: () => [{ type: i1.GroupService }, { type: i2.UntypedFormBuilder }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }], propDecorators: { saveGroupDefinition: [] } });
1472
+ args: [{ selector: 'pw-group-definition', template: "<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Teams Categories</h2>\n\n <p>\n Here you can define the categories for your enterprise's groups. For example \"Sales\n Department\", \"Development Department\", etc.\n <br />\n Once the category created, you'll be able to add teams to them and see useful\n insight based on the members activity in the corresponding team.\n </p>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-6 d-flex align-items-center text-start mb-sm-3 mb-lg-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n </div>\n <div class=\"col-6\"\n *ngIf=\"hasAccess\">\n <button class=\"float-end btn btn-sm btn-outline-primary me-2\"\n (click)=\"viewDefinitions()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create new Team Category\n </button>\n </div>\n </div>\n\n <div *ngIf=\"viewDefinition\">\n <h4 class=\"card-title d-inline mb-5\">\n {{ viewEdit ? 'Update the' : 'Create a new' }} category\n </h4>\n\n <div class=\"mt-4\"\n *ngIf=\"!viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"saveGroupDefinition()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">Add Category</button>\n </div>\n </div>\n </form>\n </div>\n\n <div class=\"mt-4\"\n *ngIf=\"viewEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"name\">{{ 'Label.Name' | transloco }}: </label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"description\">{{ 'Enterprise.Teams.Description' | transloco }}:</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"description\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <label for=\"is_private\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</label>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n checkedLabel=\"True\"\n uncheckedLabel=\"false\"\n formControlName=\"is_private\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\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]=\"categoryBusyButton\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <ng-container *ngIf=\"groupDefinition?.length !== 0\">\n <div class=\"row mb-last-3 group-definitions-wrapper\"\n *ngIf=\"!viewDefinition\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n *ngFor=\"let group of groupDefinition\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ group.name }}</h5>\n <p>{{ group.description | slice: 0:200 }}</p>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <a class=\"btn btn-sm btn-outline-danger me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onDelete(group.id)\">{{ 'Button.Delete' | transloco }}</a>\n <a class=\"btn btn-sm btn-outline-primary me-2\"\n *ngIf=\"hasAccess\"\n (click)=\"onGroupDefinitionEdit(group.id)\">{{ 'Button.Edit' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n <div *ngIf=\"groupDefinition?.length === 0 && hasAccess && !viewDefinition && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsMessage' | transloco\"> </pw-no-data>\n </div>\n <div *ngIf=\"groupDefinition?.length === 0 && !hasAccess && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsUserMessage' | transloco\"> </pw-no-data>\n </div>\n</section>\n", styles: [".mb-last-3{margin-bottom:3rem}\n"] }]
1473
+ }], ctorParameters: () => [{ type: i1.GroupService }, { type: i1$1.UntypedFormBuilder }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }], propDecorators: { saveGroupDefinition: [] } });
1469
1474
 
1470
1475
  class NumberPickerComponent {
1471
1476
  constructor(numberPickerService) {
@@ -1533,7 +1538,7 @@ class NumberPickerComponent {
1533
1538
  else {
1534
1539
  this.onDecrease(event);
1535
1540
  }
1536
- this.onpickStopped(wheelUp);
1541
+ this.onPickStopped(wheelUp);
1537
1542
  }
1538
1543
  onValueChange(_event) {
1539
1544
  if (this.value > this.max) {
@@ -1574,7 +1579,7 @@ class NumberPickerComponent {
1574
1579
  isArrowUpDown(key) {
1575
1580
  return key === 'ArrowUp' || key === 'ArrowDown';
1576
1581
  }
1577
- isArowUp(key) {
1582
+ isArrowUp(key) {
1578
1583
  return key === 'ArrowUp';
1579
1584
  }
1580
1585
  loopPick(increase, event) {
@@ -1597,7 +1602,7 @@ class NumberPickerComponent {
1597
1602
  if (this.isArrowUpDown(event.key)) {
1598
1603
  event.preventDefault();
1599
1604
  if (!this.eventHolder) {
1600
- this.loopPick(this.isArowUp(event.key), event);
1605
+ this.loopPick(this.isArrowUp(event.key), event);
1601
1606
  }
1602
1607
  }
1603
1608
  event.stopPropagation();
@@ -1605,7 +1610,7 @@ class NumberPickerComponent {
1605
1610
  onKeyUp(event) {
1606
1611
  if (this.isArrowUpDown(event.key)) {
1607
1612
  event.preventDefault();
1608
- this.afterPick(this.isArowUp(event.key));
1613
+ this.afterPick(this.isArrowUp(event.key));
1609
1614
  }
1610
1615
  event.stopPropagation();
1611
1616
  }
@@ -1622,7 +1627,7 @@ class NumberPickerComponent {
1622
1627
  event.stopPropagation();
1623
1628
  }
1624
1629
  afterPick(up) {
1625
- this.onpickStopped(up);
1630
+ this.onPickStopped(up);
1626
1631
  this.clearTimers();
1627
1632
  }
1628
1633
  clearTimers() {
@@ -1663,7 +1668,6 @@ class NumberPickerComponent {
1663
1668
  if (isIncrease) {
1664
1669
  // NOSONAR
1665
1670
  if (this.canIncrease()) {
1666
- console.log('In this');
1667
1671
  this.pickStarted.emit(true);
1668
1672
  this.pickUpStarted.emit(true);
1669
1673
  }
@@ -1673,7 +1677,7 @@ class NumberPickerComponent {
1673
1677
  this.pickDownStarted.emit(true);
1674
1678
  }
1675
1679
  }
1676
- onpickStopped(increase) {
1680
+ onPickStopped(increase) {
1677
1681
  const isIncrease = increase;
1678
1682
  if (isIncrease) {
1679
1683
  // NOSONAR
@@ -1703,7 +1707,7 @@ class NumberPickerComponent {
1703
1707
  this.placeholder = this.placeholder ?? '';
1704
1708
  }
1705
1709
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NumberPickerComponent, deps: [{ token: i1.NumberPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
1706
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: NumberPickerComponent, selector: "pw-number-picker", inputs: { min: "min", showTooltip: "showTooltip", tooltipText: "tooltipText", max: "max", step: "step", value: "value", pickStartAfter: "pickStartAfter", pickTimer: "pickTimer", prefix: "prefix", postfix: "postfix", placeholder: "placeholder", buttonsOrientation: "buttonsOrientation", size: "size", customClass: "customClass", mouseWheel: "mouseWheel", arrowKeys: "arrowKeys", inputReadOnly: "inputReadOnly", showUpButton: "showUpButton", showDownButton: "showDownButton" }, outputs: { valueChange: "valueChange", minReached: "minReached", maxReached: "maxReached", pickStarted: "pickStarted", pickStopped: "pickStopped", pickUpStarted: "pickUpStarted", pickUpStopped: "pickUpStopped", pickDownStarted: "pickDownStarted", pickDownStopped: "pickDownStopped" }, ngImport: i0, template: "<div class=\"input-group mb-3 input-{{ size }} {{ customClass.container }}\">\n <!-- Horizontal decrease button orientation -->\n <span *ngIf=\"isHorizontal() && showDownButton\"\n class=\"input-group-text decrease {{ customClass.down }}\"\n (click)=\"onDecrease($event)\"\n (keydown.enter)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n <!-- Input prefix -->\n <span *ngIf=\"prefix\"\n class=\"input-group-text {{ customClass.prefix }}\">{{ prefix }}\n </span>\n <input type=\"number\"\n class=\"form-control\"\n name=\"input-spin-val\"\n [(ngModel)]=\"value\"\n [readOnly]=\"inputReadOnly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (wheel)=\"mouseWheel && onMouseWheel($event)\"\n (keyup)=\"arrowKeys && onKeyUp($event)\"\n (keydown.enter)=\"arrowKeys && onKeyDown($event)\"\n (keydown.arrowup)=\"arrowKeys && onIncrease($event)\"\n (keydown.arrowdown)=\"arrowKeys && onDecrease($event)\"\n (change)=\"onValueChange($event)\"\n [placeholder]=\"placeholder\" />\n <!-- Input postfix -->\n\n <span *ngIf=\"postfix\"\n class=\"input-group-text {{ customClass.postfix }}\"\n [style.borderLeft]=\"'0'\">{{postfix}}\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTooltip && tooltipText\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </span>\n\n <!-- Horizontal increase button orientation -->\n <span *ngIf=\"isHorizontal() && showUpButton\"\n class=\"input-group-text increase {{ customClass.up }}\"\n [style.borderLeft]=\"!postfix ? '0' : ''\"\n (click)=\"onIncrease($event)\"\n (keydown.enter)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <!-- Vertical buttons orientation -->\n <span *ngIf=\"!isHorizontal()\"\n class=\"input-group-text vertical p-0\">\n <span *ngIf=\"showUpButton\"\n class=\"{{ customClass.up }}\"\n (click)=\"onIncrease($event)\"\n (keydown.enter)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <span *ngIf=\"showDownButton\"\n class=\"{{ customClass.down }}\"\n (keydown.enter)=\"onDecrease($event)\"\n (click)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n </span>\n</div>\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.increase:hover,.decrease:hover{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer;background-color:#d8d8d8}.increase{border-top-right-radius:3px!important;border-bottom-right-radius:3px!important}.vertical{display:flex;justify-content:center;flex-direction:column;text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer}.vertical span{line-height:15px}.input-md .vertical span,.input-sm .vertical span{padding:2px 10px}.input-lg .vertical span{padding:4px 10px}.input-xlg .vertical span{padding:7px 10px}.input-md,.input-medium{height:45px}.input-lg,.input-large{height:50px}.input-xlg,.input-xlarge{height:75px}.input-md input,.input-medium input,.input-md span,.input-medium span{font-size:22px}.input-lg input,.input-large input,.input-lg span,.input-large span{font-size:25px}.input-xlg input,.input-xlarge input,.input-xlg span,.input-xlarge span{font-size:38px}\n"], dependencies: [{ kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1710
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: NumberPickerComponent, selector: "pw-number-picker", inputs: { min: "min", showTooltip: "showTooltip", tooltipText: "tooltipText", max: "max", step: "step", value: "value", pickStartAfter: "pickStartAfter", pickTimer: "pickTimer", prefix: "prefix", postfix: "postfix", placeholder: "placeholder", buttonsOrientation: "buttonsOrientation", size: "size", customClass: "customClass", mouseWheel: "mouseWheel", arrowKeys: "arrowKeys", inputReadOnly: "inputReadOnly", showUpButton: "showUpButton", showDownButton: "showDownButton" }, outputs: { valueChange: "valueChange", minReached: "minReached", maxReached: "maxReached", pickStarted: "pickStarted", pickStopped: "pickStopped", pickUpStarted: "pickUpStarted", pickUpStopped: "pickUpStopped", pickDownStarted: "pickDownStarted", pickDownStopped: "pickDownStopped" }, ngImport: i0, template: "<div class=\"input-group mb-3 input-{{ size }} {{ customClass.container }}\">\n <!-- Horizontal decrease button orientation -->\n <span *ngIf=\"isHorizontal() && showDownButton\"\n class=\"input-group-text decrease {{ customClass.down }}\"\n (click)=\"onDecrease($event)\"\n (keydown.enter)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n <!-- Input prefix -->\n <span *ngIf=\"prefix\"\n class=\"input-group-text {{ customClass.prefix }}\">{{ prefix }}\n </span>\n <input type=\"number\"\n class=\"form-control\"\n name=\"input-spin-val\"\n [(ngModel)]=\"value\"\n [readOnly]=\"inputReadOnly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (wheel)=\"mouseWheel && onMouseWheel($event)\"\n (keyup)=\"arrowKeys && onKeyUp($event)\"\n (keydown.enter)=\"arrowKeys && onKeyDown($event)\"\n (keydown.arrowup)=\"arrowKeys && onIncrease($event)\"\n (keydown.arrowdown)=\"arrowKeys && onDecrease($event)\"\n (change)=\"onValueChange($event)\"\n [placeholder]=\"placeholder\" />\n <!-- Input postfix -->\n\n <span *ngIf=\"postfix\"\n class=\"input-group-text {{ customClass.postfix }}\"\n [style.borderLeft]=\"'0'\">{{postfix}}\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTooltip && tooltipText\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </span>\n\n <!-- Horizontal increase button orientation -->\n <span *ngIf=\"isHorizontal() && showUpButton\"\n class=\"input-group-text increase {{ customClass.up }}\"\n [style.borderLeft]=\"!postfix ? '0' : ''\"\n (click)=\"onIncrease($event)\"\n (keydown.enter)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <!-- Vertical buttons orientation -->\n <span *ngIf=\"!isHorizontal()\"\n class=\"input-group-text vertical p-0\">\n <span *ngIf=\"showUpButton\"\n class=\"{{ customClass.up }}\"\n (click)=\"onIncrease($event)\"\n (keydown.enter)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <span *ngIf=\"showDownButton\"\n class=\"{{ customClass.down }}\"\n (keydown.enter)=\"onDecrease($event)\"\n (click)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n </span>\n</div>\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.increase:hover,.decrease:hover{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer;background-color:#d8d8d8}.increase{border-top-right-radius:3px!important;border-bottom-right-radius:3px!important}.vertical{display:flex;justify-content:center;flex-direction:column;text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer}.vertical span{line-height:15px}.input-md .vertical span,.input-sm .vertical span{padding:2px 10px}.input-lg .vertical span{padding:4px 10px}.input-xlg .vertical span{padding:7px 10px}.input-md,.input-medium{height:45px}.input-lg,.input-large{height:50px}.input-xlg,.input-xlarge{height:75px}.input-md input,.input-medium input,.input-md span,.input-medium span{font-size:22px}.input-lg input,.input-large input,.input-lg span,.input-large span{font-size:25px}.input-xlg input,.input-xlarge input,.input-xlg span,.input-xlarge span{font-size:38px}\n"], dependencies: [{ 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1707
1711
  }
1708
1712
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NumberPickerComponent, decorators: [{
1709
1713
  type: Component,
@@ -1766,6 +1770,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1766
1770
  type: Output
1767
1771
  }] } });
1768
1772
 
1773
+ class DateRangePickerComponent {
1774
+ constructor() {
1775
+ this.initialized = false;
1776
+ this.dateRangeChange = new EventEmitter();
1777
+ }
1778
+ onDateRangeSelect(event) {
1779
+ if (event.startDate && event.endDate) {
1780
+ this.dateRangeChange.emit(event);
1781
+ }
1782
+ }
1783
+ ngAfterViewInit() {
1784
+ setTimeout(() => {
1785
+ this.initialized = true;
1786
+ });
1787
+ }
1788
+ onClearDate() {
1789
+ if (!this.initialized) {
1790
+ return;
1791
+ }
1792
+ this.dateRangeChange.emit({ startDate: null, endDate: null });
1793
+ }
1794
+ openDatepicker() {
1795
+ setTimeout(() => {
1796
+ this.pickerDirective.open();
1797
+ }, 50);
1798
+ }
1799
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1800
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DateRangePickerComponent, selector: "app-date-picker", inputs: { selectedDateRange: "selectedDateRange", dateRanges: "dateRanges" }, outputs: { dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "pickerDirective", first: true, predicate: DaterangepickerDirective, descendants: true }], ngImport: i0, template: "<div class=\"my-3\">\n <div class=\"row\">\n <!-- start date -->\n <div class=\"col-6 col-sm-3\">\n <div class=\"\">\n <input ngxDaterangepickerMd\n class=\"form-control\"\n [(ngModel)]=\"selectedDateRange\"\n [ranges]=\"dateRanges\"\n [alwaysShowCalendars]=\"true\"\n [locale]=\"{ format: 'DD-MMM-YYYY' }\"\n [showCustomRangeLabel]=\"true\"\n [linkedCalendars]=\"true\"\n [showClearButton]=\"true\"\n (clearClicked)=\"onClearDate()\"\n placeholder=\"Select a date range (optional)\"\n opens=\"center\"\n (ngModelChange)=\"onDateRangeSelect($event)\"\n />\n </div>\n </div>\n <div class=\"col-6 col-sm-3 pop\">\n\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary ngx-daterangepicker-action\"\n (click)=\"openDatepicker()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>", styles: ["::ng-deep .md-drppicker{top:auto!important;left:auto!important;margin-top:0!important}::ng-deep .md-drppicker .clear svg{margin-right:2px;margin-bottom:10px}.pop{margin-left:-22px}\n"], dependencies: [{ 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$5.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }] }); }
1801
+ }
1802
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DateRangePickerComponent, decorators: [{
1803
+ type: Component,
1804
+ args: [{ selector: 'app-date-picker', template: "<div class=\"my-3\">\n <div class=\"row\">\n <!-- start date -->\n <div class=\"col-6 col-sm-3\">\n <div class=\"\">\n <input ngxDaterangepickerMd\n class=\"form-control\"\n [(ngModel)]=\"selectedDateRange\"\n [ranges]=\"dateRanges\"\n [alwaysShowCalendars]=\"true\"\n [locale]=\"{ format: 'DD-MMM-YYYY' }\"\n [showCustomRangeLabel]=\"true\"\n [linkedCalendars]=\"true\"\n [showClearButton]=\"true\"\n (clearClicked)=\"onClearDate()\"\n placeholder=\"Select a date range (optional)\"\n opens=\"center\"\n (ngModelChange)=\"onDateRangeSelect($event)\"\n />\n </div>\n </div>\n <div class=\"col-6 col-sm-3 pop\">\n\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary ngx-daterangepicker-action\"\n (click)=\"openDatepicker()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>", styles: ["::ng-deep .md-drppicker{top:auto!important;left:auto!important;margin-top:0!important}::ng-deep .md-drppicker .clear svg{margin-right:2px;margin-bottom:10px}.pop{margin-left:-22px}\n"] }]
1805
+ }], propDecorators: { pickerDirective: [{
1806
+ type: ViewChild,
1807
+ args: [DaterangepickerDirective, { static: false }]
1808
+ }], selectedDateRange: [{
1809
+ type: Input
1810
+ }], dateRanges: [{
1811
+ type: Input
1812
+ }], dateRangeChange: [{
1813
+ type: Output
1814
+ }] } });
1815
+
1769
1816
  const primeNgModules = [
1770
1817
  MultiSelectModule,
1771
1818
  TabMenuModule,
@@ -1782,6 +1829,7 @@ class SharedComponentsModule {
1782
1829
  CustomUploaderComponent,
1783
1830
  ProfileImageCropperComponent,
1784
1831
  PwTabsComponent,
1832
+ DateRangePickerComponent,
1785
1833
  PermissionTreeComponent,
1786
1834
  InputContainerComponent,
1787
1835
  FieldErrorDisplayComponent,
@@ -1791,7 +1839,7 @@ class SharedComponentsModule {
1791
1839
  SplashComponent,
1792
1840
  GeoTemplateComponent,
1793
1841
  AuthenticatorComponent,
1794
- ClearbitIconComponent,
1842
+ ClearBitIconComponent,
1795
1843
  ComingSoonComponent,
1796
1844
  NoDataComponent,
1797
1845
  EntityGroupComponent,
@@ -1804,8 +1852,7 @@ class SharedComponentsModule {
1804
1852
  AppLoaderModule,
1805
1853
  ReactiveFormsModule,
1806
1854
  DirectivesModule,
1807
- CoreTranslocoModule,
1808
- ImageCropperModule, MultiSelectModule,
1855
+ CoreTranslocoModule, i2$5.NgxDaterangepickerMd, ImageCropperModule, MultiSelectModule,
1809
1856
  TabMenuModule,
1810
1857
  ProgressSpinnerModule,
1811
1858
  TableModule,
@@ -1820,7 +1867,8 @@ class SharedComponentsModule {
1820
1867
  CustomUploaderComponent,
1821
1868
  ProfileImageCropperComponent,
1822
1869
  ImageCropperModule,
1823
- PwTabsComponent, MultiSelectModule,
1870
+ PwTabsComponent,
1871
+ DateRangePickerComponent, MultiSelectModule,
1824
1872
  TabMenuModule,
1825
1873
  ProgressSpinnerModule,
1826
1874
  TableModule,
@@ -1834,7 +1882,7 @@ class SharedComponentsModule {
1834
1882
  SplashComponent,
1835
1883
  GeoTemplateComponent,
1836
1884
  AuthenticatorComponent,
1837
- ClearbitIconComponent,
1885
+ ClearBitIconComponent,
1838
1886
  ComingSoonComponent,
1839
1887
  NoDataComponent,
1840
1888
  EntityGroupComponent,
@@ -1849,6 +1897,7 @@ class SharedComponentsModule {
1849
1897
  ReactiveFormsModule,
1850
1898
  DirectivesModule,
1851
1899
  CoreTranslocoModule,
1900
+ NgxDaterangepickerMd.forRoot(),
1852
1901
  ImageCropperModule,
1853
1902
  primeNgModules,
1854
1903
  PipesModule,
@@ -1871,6 +1920,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1871
1920
  CustomUploaderComponent,
1872
1921
  ProfileImageCropperComponent,
1873
1922
  PwTabsComponent,
1923
+ DateRangePickerComponent,
1874
1924
  PermissionTreeComponent,
1875
1925
  InputContainerComponent,
1876
1926
  FieldErrorDisplayComponent,
@@ -1880,7 +1930,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1880
1930
  SplashComponent,
1881
1931
  GeoTemplateComponent,
1882
1932
  AuthenticatorComponent,
1883
- ClearbitIconComponent,
1933
+ ClearBitIconComponent,
1884
1934
  ComingSoonComponent,
1885
1935
  NoDataComponent,
1886
1936
  EntityGroupComponent,
@@ -1897,6 +1947,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1897
1947
  ReactiveFormsModule,
1898
1948
  DirectivesModule,
1899
1949
  CoreTranslocoModule,
1950
+ NgxDaterangepickerMd.forRoot(),
1900
1951
  ImageCropperModule,
1901
1952
  primeNgModules,
1902
1953
  PipesModule,
@@ -1913,6 +1964,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1913
1964
  ProfileImageCropperComponent,
1914
1965
  ImageCropperModule,
1915
1966
  PwTabsComponent,
1967
+ DateRangePickerComponent,
1916
1968
  primeNgModules,
1917
1969
  PermissionTreeComponent,
1918
1970
  InputContainerComponent,
@@ -1923,7 +1975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1923
1975
  SplashComponent,
1924
1976
  GeoTemplateComponent,
1925
1977
  AuthenticatorComponent,
1926
- ClearbitIconComponent,
1978
+ ClearBitIconComponent,
1927
1979
  ComingSoonComponent,
1928
1980
  NoDataComponent,
1929
1981
  EntityGroupComponent,
@@ -1940,5 +1992,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1940
1992
  * Generated bundle index. Do not edit.
1941
1993
  */
1942
1994
 
1943
- export { AbAlternativeComponent, AbTestContainerComponent, AuthenticatorComponent, ClearbitIconComponent, ComingSoonComponent, CustomUploaderComponent, EntityGroupComponent, FieldErrorDisplayComponent, GeoTemplateComponent, GroupDefinitionComponent, GroupsComponent, HeaderComponent, InputContainerComponent, LandingPageFooterBComponent, NoDataComponent, NumberPickerComponent, PasswordValidationComponent, PermissionTreeComponent, PrivacyAndTosComponent, PrivacyPolicyComponent, ProfileImageCropperComponent, PwTabsComponent, SharedComponentsModule, SplashComponent, TermsConditionsComponent };
1995
+ export { AbAlternativeComponent, AbTestContainerComponent, AuthenticatorComponent, ClearBitIconComponent, ComingSoonComponent, CustomUploaderComponent, DateRangePickerComponent, EntityGroupComponent, FieldErrorDisplayComponent, GeoTemplateComponent, GroupDefinitionComponent, GroupsComponent, HeaderComponent, InputContainerComponent, LandingPageFooterBComponent, NoDataComponent, NumberPickerComponent, PasswordValidationComponent, PermissionTreeComponent, PrivacyAndTosComponent, PrivacyPolicyComponent, ProfileImageCropperComponent, PwTabsComponent, SharedComponentsModule, SplashComponent, TermsConditionsComponent };
1944
1996
  //# sourceMappingURL=posiwise-shared-components.mjs.map