@posiwise/shared-components 0.0.138 → 0.0.140

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.
@@ -1,7 +1,7 @@
1
- import * as i3$2 from '@angular/common';
1
+ import * as i1$2 from '@angular/common';
2
2
  import { CommonModule, DOCUMENT, NgIf } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, ViewChild, NgModule, ContentChild, EventEmitter, Output, Inject, Optional, Host, SkipSelf, HostListener } from '@angular/core';
4
+ import { Component, Input, ViewChild, NgModule, ContentChild, EventEmitter, Output, Inject, Optional, Host, SkipSelf } from '@angular/core';
5
5
  import * as i2 from '@angular/forms';
6
6
  import { FormsModule, UntypedFormControl, Validators, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
7
7
  import * as i5 from '@angular/router';
@@ -39,7 +39,7 @@ import { PermissionService } from '@posiwise/common-services';
39
39
  import { HelperService } from '@posiwise/helper-service';
40
40
  import * as i6 from '@angular/cdk/drag-drop';
41
41
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
42
- import * as i1$2 from '@posiwise/admin-module-utils';
42
+ import * as i3$2 from '@posiwise/admin-module-utils';
43
43
  import { AdminModuleUtilsModule } from '@posiwise/admin-module-utils';
44
44
  import * as i1$1 from '@angular/platform-browser';
45
45
  import * as i4 from '@jsverse/transloco';
@@ -216,13 +216,13 @@ class DemoCardsComponent extends AppBaseComponent {
216
216
  canEditResources() {
217
217
  return this.canEditResourcesValue;
218
218
  }
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i3$1.NgbModal }, { token: i1$2.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", inputs: { user: "user", userLoggedIn: "userLoggedIn" }, viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\" *ngIf=\"link?.url && link?.title\">{{ link?.title }}</h5>\n <iframe *ngIf=\"link?.url\"\n [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"], dependencies: [{ kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i3$1.NgbModal }, { token: i3$2.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
220
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", inputs: { user: "user", userLoggedIn: "userLoggedIn" }, viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\" *ngIf=\"link?.url && link?.title\">{{ link?.title }}</h5>\n <iframe *ngIf=\"link?.url\"\n [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
221
221
  }
222
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, decorators: [{
223
223
  type: Component,
224
224
  args: [{ selector: 'pw-demo-card', template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\" *ngIf=\"link?.url && link?.title\">{{ link?.title }}</h5>\n <iframe *ngIf=\"link?.url\"\n [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"] }]
225
- }], ctorParameters: () => [{ type: i1$1.DomSanitizer }, { type: i3$1.NgbModal }, { type: i1$2.AdminService }, { type: i0.Injector }], propDecorators: { user: [{
225
+ }], ctorParameters: () => [{ type: i1$1.DomSanitizer }, { type: i3$1.NgbModal }, { type: i3$2.AdminService }, { type: i0.Injector }], propDecorators: { user: [{
226
226
  type: Input
227
227
  }], userLoggedIn: [{
228
228
  type: Input
@@ -267,7 +267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
267
267
 
268
268
  class FieldErrorDisplayComponent {
269
269
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
270
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: { errorMsg: "errorMsg", displayError: "displayError" }, ngImport: i0, template: "<div *ngIf=\"displayError\">\n <div class=\"text-danger\">\n {{ errorMsg }}\n </div>\n</div>\n\n", dependencies: [{ kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: { errorMsg: "errorMsg", displayError: "displayError" }, ngImport: i0, template: "<div *ngIf=\"displayError\">\n <div class=\"text-danger\">\n {{ errorMsg }}\n </div>\n</div>\n\n", dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
271
271
  }
272
272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayComponent, decorators: [{
273
273
  type: Component,
@@ -318,7 +318,7 @@ class HeaderComponent extends AppBaseComponent {
318
318
  this.isMenuCollapsed = !this.isMenuCollapsed;
319
319
  }
320
320
  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 }); }
321
- 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 (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"!isMenuCollapsed\">\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=\"navbar-collapse float-end\"\n [class.collapse]=\"isMenuCollapsed\"\n [class.show]=\"!isMenuCollapsed\"\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:auto!important;width:auto;max-height:40px;max-width:100%;object-fit:contain}.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: i3.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
321
+ 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 (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"!isMenuCollapsed\">\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=\"navbar-collapse float-end\"\n [class.collapse]=\"isMenuCollapsed\"\n [class.show]=\"!isMenuCollapsed\"\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:auto!important;width:auto;max-height:40px;max-width:100%;object-fit:contain}.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: i3.LazyImgDirective, selector: "img" }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
322
322
  }
323
323
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, decorators: [{
324
324
  type: Component,
@@ -360,7 +360,7 @@ class NoDataComponent {
360
360
  <span *ngIf="description" class="pb-4">{{ description }}</span>
361
361
  <ng-content></ng-content>
362
362
  </div>
363
- `, 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: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
363
+ `, 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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
364
364
  }
365
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NoDataComponent, decorators: [{
366
366
  type: Component,
@@ -523,7 +523,7 @@ class EntityGroupComponent extends AppBaseComponent {
523
523
  super.ngOnDestroy();
524
524
  }
525
525
  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: i3$1.NgbModal }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
526
- 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: i3.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$1.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: i6$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { 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$2.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" }] }); }
526
+ 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: i3.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$1.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: i6$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { 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: i1$2.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" }] }); }
527
527
  }
528
528
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, decorators: [{
529
529
  type: Component,
@@ -681,7 +681,7 @@ class GroupDefinitionComponent extends AppBaseComponent {
681
681
  super.ngOnDestroy();
682
682
  }
683
683
  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 }); }
684
- 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 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: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i5$1.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: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.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$2.SlicePipe, name: "slice" }] }); }
684
+ 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 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: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i5$1.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: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.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: i1$2.SlicePipe, name: "slice" }] }); }
685
685
  }
686
686
  __decorate([
687
687
  ValidateForm('form'),
@@ -900,7 +900,7 @@ class GroupsComponent extends AppBaseComponent {
900
900
  super.ngOnDestroy();
901
901
  }
902
902
  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 }); }
903
- 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 mb-3\">\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 <p-dropdown\n [options]=\"groupDefinition\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{'is-invalid': submitted && form.controls['group_definition_id'].errors}\"\n [placeholder]=\"'Select Team Category'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\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 <p-dropdown\n [options]=\"groupDefinition\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{'is-invalid': submitted && form.controls['group_definition_id'].errors}\"\n [placeholder]=\"'Select Team Category'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\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 <p-dropdown\n [options]=\"domainGroupDefinition\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [ngModel]=\"'0'\"\n (onChange)=\"filterDomainsList($event.value)\">\n </p-dropdown>\n\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: 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5$2.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.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$2.SlicePipe, name: "slice" }] }); }
903
+ 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 mb-3\">\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 <p-dropdown\n [options]=\"groupDefinition\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{'is-invalid': submitted && form.controls['group_definition_id'].errors}\"\n [placeholder]=\"'Select Team Category'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\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 <p-dropdown\n [options]=\"groupDefinition\"\n formControlName=\"group_definition_id\"\n [ngClass]=\"{'is-invalid': submitted && form.controls['group_definition_id'].errors}\"\n [placeholder]=\"'Select Team Category'\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-dropdown>\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 <p-dropdown\n [options]=\"domainGroupDefinition\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [ngModel]=\"'0'\"\n (onChange)=\"filterDomainsList($event.value)\">\n </p-dropdown>\n\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: 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5$2.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.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: i1$2.SlicePipe, name: "slice" }] }); }
904
904
  }
905
905
  __decorate([
906
906
  ValidateForm('form'),
@@ -926,7 +926,7 @@ class LandingPageFooterBComponent {
926
926
  });
927
927
  }
928
928
  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 }); }
929
- 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>Launched in Silence.</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: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.DatePipe, name: "date" }] }); }
929
+ 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>Launched in Silence.</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: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.DatePipe, name: "date" }] }); }
930
930
  }
931
931
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LandingPageFooterBComponent, decorators: [{
932
932
  type: Component,
@@ -1167,7 +1167,7 @@ class NumberPickerComponent {
1167
1167
  this.placeholder = this.placeholder ?? '';
1168
1168
  }
1169
1169
  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 }); }
1170
- 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: i3$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$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1170
+ 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: i3$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: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1171
1171
  }
1172
1172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NumberPickerComponent, decorators: [{
1173
1173
  type: Component,
@@ -1477,13 +1477,13 @@ class PrivacyAndTosComponent extends AppBaseComponent {
1477
1477
  this.isLoaded = true;
1478
1478
  });
1479
1479
  }
1480
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1$2.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1481
- 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: "directive", type: i3$1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i3$1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i3$1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i3$1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i3$1.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i3$1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i3$1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
1480
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i3$2.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1481
+ 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: "directive", type: i3$1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i3$1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i3$1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i3$1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i3$1.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i3$1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i3$1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
1482
1482
  }
1483
1483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, decorators: [{
1484
1484
  type: Component,
1485
1485
  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"] }]
1486
- }], ctorParameters: () => [{ type: i1$2.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
1486
+ }], ctorParameters: () => [{ type: i3$2.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
1487
1487
  type: Inject,
1488
1488
  args: [DOCUMENT]
1489
1489
  }] }, { type: i1$1.DomSanitizer }], propDecorators: { productId: [{
@@ -1500,7 +1500,7 @@ class PrivacyPolicyComponent extends AppBaseComponent {
1500
1500
  this.company_email = this.appConfig.company.email;
1501
1501
  }
1502
1502
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyPolicyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1503
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyPolicyComponent, selector: "pw-privacy-policy", inputs: { isPublic: "isPublic" }, usesInheritance: true, 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>Privacy policy</h1>\n <div class=\"clearfix\"></div>\n <h3>Your Content</h3>\n <p>\n If you operate a {{ company_name }} User Account, and/or comment on,\n post material to, post links on or otherwise make (or allow any third\n party to make) material available by means of the Website and or\n Applications (collectively called \u201CContent\u201D), you are entirely\n responsible for that Content and any harm resulting from that Content.\n That is regardless of whether the Content in question constitutes (but\n not limited to) text, graphics, an audio file or computer software. By\n making Content available, you represent and warrant that:\n </p>\n <ol>\n <li>\n the Content is not considered to be obscene, inappropriate,\n defamatory, disparaging, indecent, seditious, offensive,\n pornographic, threatening, abusive, liable to incite racial hatred,\n discriminatory, blasphemous, in breach of confidence or in breach of\n privacy;\n </li>\n <li>\n the downloading, copying and use of the Content will not infringe\n the proprietary rights, including but not limited to the copyright,\n patent, trademark or trade secret rights, of any third party;\n </li>\n <li>\n if your employer has rights to intellectual property you create, you\n have either (i) received permission from your employer to post or\n make available the Content, including but not limited to any\n software, or (ii) secured from your employer a waiver as to all\n rights in or to the Content;\n </li>\n <li>\n you have fully complied with any third-party licenses relating to\n the Content, and have done all things necessary to successfully pass\n through to end users any required terms;\n </li>\n <li>\n the Content does not contain or install any viruses, worms, malware,\n Trojan horses or other harmful or destructive content;\n </li>\n <li>\n the Content is not spam, is not machine or randomly generated and\n does not contain unethical or unwanted commercial content designed\n to drive traffic to third party sites or further unlawful acts;\n </li>\n <li>\n your User Account is not getting advertised via unwanted electronic\n messages such as spam links on newsgroups, email lists, other blogs\n and websites, and similar unsolicited promotional methods;\n </li>\n <li>\n your User Account is not named in a manner that misleads users into\n thinking that you are another person or company;\n </li>\n <li>\n the Content will not cause you or us to breach any law, regulation,\n rule, code or other legal obligation; and\n </li>\n <li>the Content will not bring us, or the Site into disrepute.</li>\n </ol>\n <p></p>\n <p>\n By submitting Content for inclusion in your User Account or to the Site,\n you grant us a worldwide, royalty free, and non-exclusive license to\n use that content in any way (including without limitation, reproducing,\n changing and communicating the Content) and permit us to authorise any\n other person to do the same thing. If you delete any Content, we will\n use reasonable efforts to remove it from the Site, but you acknowledge\n that caching or references to the Content may not be made immediately\n unavailable.\n </p>\n <p>\n Without limiting any of those representations or warranties, we reserve\n the right (though not the obligation) to, in our sole discretion\n </p>\n <ol>\n <li>\n refuse or remove any content that, in our reasonable opinion,\n violates any of our policies or agreements or is in any way harmful\n or objectionable, or\n </li>\n <li>\n terminate or deny access to and use of the Service to any individual\n or entity for any reason, in our sole discretion.\n </li>\n </ol>\n <p></p>\n <h3>Privacy</h3>\n <p>\n We get information about you in a range of ways. We collect your&lrm;\n name,&lrm; email address and other information you directly give us on\n our Site. We may get information about you from other sources. We may\n add this to information we get from this Site. We may automatically log\n information about you and your computer. We may log information using\n \"cookies.\" Cookies are small data files stored on your hard drive by a\n website. Cookies help us make our Site and your visit better. We use\n cookies to see which parts of our Site people use and like and to count\n visits to our Site. We may store your personal information along with\n your files and data on a third party server such as Amazon Web Services;\n </p>\n <p>\n We use your personal information to operate, maintain, and improve our\n sites, products, and services. We use your personal information to\n respond to comments and questions and provide customer service. We use\n your personal information to provide and deliver products and services\n customers request. We also use your personal information to send you\n notifications about the service and to respond to customer support\n requests. You can access and change your personal information by logging\n in to your account settings page.\n </p>\n <p>\n We may share personal information with your consent. For example, you\n may let us share personal information with others for their own\n marketing uses. Those uses will be subject to their privacy policies. We\n may share personal information when we do a business deal, or negotiate\n a business deal, involving sale or transfer of all or a part of our\n business or assets. These deals can include any merger, financing,\n acquisition, or bankruptcy transaction or proceeding. We may share\n personal information for legal, protection, and safety purposes. We may\n share information to comply with laws. We may share information to\n respond to lawful requests and legal process. We may share information\n to protect the rights, property or safety of the Service, our users,\n customers, and others. This includes enforcing our agreements, policies,\n and terms of use. We may share information in an emergency. We may share\n information with those who need it to do work for us. We may also share\n aggregated and/or anonymized data with others for their own uses.\n </p>\n <p>\n Our marketing emails tell you how to \u201Copt-out.\u201D If you opt out, we may\n still send you non-marketing emails. Non-marketing emails include emails\n about your accounts and our business dealings with you.\n </p>\n <p>\n You can typically remove and reject cookies from our Site with your\n browser settings. Many browsers are set to accept cookies until you\n change your settings. If you remove or reject our cookies, it could\n affect how our Site works for you.\n </p>\n <p>\n If {{ company_name }} sells all or part of its business or makes a sale\n or transfer of its assets or is otherwise involved in a merger or\n transfer of all or a material part of its business,\n {{ company_name }} may transfer your information to the party or parties\n involved in the transaction as part of that transaction.\n </p>\n <p>\n {{ company_name }} uses a range of commercially reasonable measures to\n safeguard Personal Information in its possession against loss, theft and\n unauthorized use, disclosure or modification. However, no one can\n guarantee the complete safety of your information. Please immediately\n notify us if you believe there may be an issue or a problem regarding\n the integrity of your information by contacting us.\n </p>\n <p>\n In some cases, we may use an unaffiliated payment service to allow you\n to purchase a product or make payments (\u201CPayment Service\u201D). If you wish\n to purchase a product or make a payment in such a case, you will be\n directed to a Payment Service webpage. Any information that you provide\n to a Payment Service will be subject to the applicable Payment Service\u2019s\n privacy policy, rather than this Privacy Policy. We have no control\n over, and are not responsible for, any Payment Service\u2019s use of\n information collected through any Payment Service.\n </p>\n <p>\n The {{ company_name }} website may also be linked to sites operated by\n third parties, and may carry advertisements or offer content,\n functionality, games or applications developed and maintained by third\n parties. Some of these third party sites may be co-branded with a\n {{ company_name }} logo, even though they are not operated or maintained\n by us.\n </p>\n <p>\n {{ company_name }} is not responsible for the privacy practices of any\n such third parties, and once you leave the {{ company_name }} website,\n you should check the applicable privacy policy of the other service.\n </p>\n <h3>Questions &amp; Comments</h3>\n <p>\n If you have any questions about our Privacy Policy, 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", 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$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1503
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyPolicyComponent, selector: "pw-privacy-policy", inputs: { isPublic: "isPublic" }, usesInheritance: true, 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>Privacy policy</h1>\n <div class=\"clearfix\"></div>\n <h3>Your Content</h3>\n <p>\n If you operate a {{ company_name }} User Account, and/or comment on,\n post material to, post links on or otherwise make (or allow any third\n party to make) material available by means of the Website and or\n Applications (collectively called \u201CContent\u201D), you are entirely\n responsible for that Content and any harm resulting from that Content.\n That is regardless of whether the Content in question constitutes (but\n not limited to) text, graphics, an audio file or computer software. By\n making Content available, you represent and warrant that:\n </p>\n <ol>\n <li>\n the Content is not considered to be obscene, inappropriate,\n defamatory, disparaging, indecent, seditious, offensive,\n pornographic, threatening, abusive, liable to incite racial hatred,\n discriminatory, blasphemous, in breach of confidence or in breach of\n privacy;\n </li>\n <li>\n the downloading, copying and use of the Content will not infringe\n the proprietary rights, including but not limited to the copyright,\n patent, trademark or trade secret rights, of any third party;\n </li>\n <li>\n if your employer has rights to intellectual property you create, you\n have either (i) received permission from your employer to post or\n make available the Content, including but not limited to any\n software, or (ii) secured from your employer a waiver as to all\n rights in or to the Content;\n </li>\n <li>\n you have fully complied with any third-party licenses relating to\n the Content, and have done all things necessary to successfully pass\n through to end users any required terms;\n </li>\n <li>\n the Content does not contain or install any viruses, worms, malware,\n Trojan horses or other harmful or destructive content;\n </li>\n <li>\n the Content is not spam, is not machine or randomly generated and\n does not contain unethical or unwanted commercial content designed\n to drive traffic to third party sites or further unlawful acts;\n </li>\n <li>\n your User Account is not getting advertised via unwanted electronic\n messages such as spam links on newsgroups, email lists, other blogs\n and websites, and similar unsolicited promotional methods;\n </li>\n <li>\n your User Account is not named in a manner that misleads users into\n thinking that you are another person or company;\n </li>\n <li>\n the Content will not cause you or us to breach any law, regulation,\n rule, code or other legal obligation; and\n </li>\n <li>the Content will not bring us, or the Site into disrepute.</li>\n </ol>\n <p></p>\n <p>\n By submitting Content for inclusion in your User Account or to the Site,\n you grant us a worldwide, royalty free, and non-exclusive license to\n use that content in any way (including without limitation, reproducing,\n changing and communicating the Content) and permit us to authorise any\n other person to do the same thing. If you delete any Content, we will\n use reasonable efforts to remove it from the Site, but you acknowledge\n that caching or references to the Content may not be made immediately\n unavailable.\n </p>\n <p>\n Without limiting any of those representations or warranties, we reserve\n the right (though not the obligation) to, in our sole discretion\n </p>\n <ol>\n <li>\n refuse or remove any content that, in our reasonable opinion,\n violates any of our policies or agreements or is in any way harmful\n or objectionable, or\n </li>\n <li>\n terminate or deny access to and use of the Service to any individual\n or entity for any reason, in our sole discretion.\n </li>\n </ol>\n <p></p>\n <h3>Privacy</h3>\n <p>\n We get information about you in a range of ways. We collect your&lrm;\n name,&lrm; email address and other information you directly give us on\n our Site. We may get information about you from other sources. We may\n add this to information we get from this Site. We may automatically log\n information about you and your computer. We may log information using\n \"cookies.\" Cookies are small data files stored on your hard drive by a\n website. Cookies help us make our Site and your visit better. We use\n cookies to see which parts of our Site people use and like and to count\n visits to our Site. We may store your personal information along with\n your files and data on a third party server such as Amazon Web Services;\n </p>\n <p>\n We use your personal information to operate, maintain, and improve our\n sites, products, and services. We use your personal information to\n respond to comments and questions and provide customer service. We use\n your personal information to provide and deliver products and services\n customers request. We also use your personal information to send you\n notifications about the service and to respond to customer support\n requests. You can access and change your personal information by logging\n in to your account settings page.\n </p>\n <p>\n We may share personal information with your consent. For example, you\n may let us share personal information with others for their own\n marketing uses. Those uses will be subject to their privacy policies. We\n may share personal information when we do a business deal, or negotiate\n a business deal, involving sale or transfer of all or a part of our\n business or assets. These deals can include any merger, financing,\n acquisition, or bankruptcy transaction or proceeding. We may share\n personal information for legal, protection, and safety purposes. We may\n share information to comply with laws. We may share information to\n respond to lawful requests and legal process. We may share information\n to protect the rights, property or safety of the Service, our users,\n customers, and others. This includes enforcing our agreements, policies,\n and terms of use. We may share information in an emergency. We may share\n information with those who need it to do work for us. We may also share\n aggregated and/or anonymized data with others for their own uses.\n </p>\n <p>\n Our marketing emails tell you how to \u201Copt-out.\u201D If you opt out, we may\n still send you non-marketing emails. Non-marketing emails include emails\n about your accounts and our business dealings with you.\n </p>\n <p>\n You can typically remove and reject cookies from our Site with your\n browser settings. Many browsers are set to accept cookies until you\n change your settings. If you remove or reject our cookies, it could\n affect how our Site works for you.\n </p>\n <p>\n If {{ company_name }} sells all or part of its business or makes a sale\n or transfer of its assets or is otherwise involved in a merger or\n transfer of all or a material part of its business,\n {{ company_name }} may transfer your information to the party or parties\n involved in the transaction as part of that transaction.\n </p>\n <p>\n {{ company_name }} uses a range of commercially reasonable measures to\n safeguard Personal Information in its possession against loss, theft and\n unauthorized use, disclosure or modification. However, no one can\n guarantee the complete safety of your information. Please immediately\n notify us if you believe there may be an issue or a problem regarding\n the integrity of your information by contacting us.\n </p>\n <p>\n In some cases, we may use an unaffiliated payment service to allow you\n to purchase a product or make payments (\u201CPayment Service\u201D). If you wish\n to purchase a product or make a payment in such a case, you will be\n directed to a Payment Service webpage. Any information that you provide\n to a Payment Service will be subject to the applicable Payment Service\u2019s\n privacy policy, rather than this Privacy Policy. We have no control\n over, and are not responsible for, any Payment Service\u2019s use of\n information collected through any Payment Service.\n </p>\n <p>\n The {{ company_name }} website may also be linked to sites operated by\n third parties, and may carry advertisements or offer content,\n functionality, games or applications developed and maintained by third\n parties. Some of these third party sites may be co-branded with a\n {{ company_name }} logo, even though they are not operated or maintained\n by us.\n </p>\n <p>\n {{ company_name }} is not responsible for the privacy practices of any\n such third parties, and once you leave the {{ company_name }} website,\n you should check the applicable privacy policy of the other service.\n </p>\n <h3>Questions &amp; Comments</h3>\n <p>\n If you have any questions about our Privacy Policy, 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", 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: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1504
1504
  }
1505
1505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyPolicyComponent, decorators: [{
1506
1506
  type: Component,
@@ -1664,7 +1664,7 @@ class ProfileImageCropperComponent {
1664
1664
  this.closeEvent.emit();
1665
1665
  }
1666
1666
  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 }); }
1667
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: { aspectRatio: "aspectRatio", dynamicData: "dynamicData" }, 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 === 'rectangular'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"3 / 1\"\n [onlyScaleDown]=\"true\"\n [canvasRotation]=\"canvasRotation\"\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 === 'dynamic'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"false\"\n [resizeToWidth]=\"0\"\n [cropperStaticWidth]=\"0\"\n [cropperStaticHeight]=\"0\"\n [cropperMinWidth]=\"10\"\n [cropperMinHeight]=\"10\"\n [onlyScaleDown]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n imageQuality=\"100\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [style.display]=\"showCropper ? null : 'none'\">\n </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 class=\"cropped-image\"\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}.cropped-image{max-height:390px!important}.card-footer{background-color:transparent;left:0}\n"], dependencies: [{ kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.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.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
1667
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: { aspectRatio: "aspectRatio", dynamicData: "dynamicData" }, 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 === 'rectangular'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"3 / 1\"\n [onlyScaleDown]=\"true\"\n [canvasRotation]=\"canvasRotation\"\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 === 'dynamic'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"false\"\n [resizeToWidth]=\"0\"\n [cropperStaticWidth]=\"0\"\n [cropperStaticHeight]=\"0\"\n [cropperMinWidth]=\"10\"\n [cropperMinHeight]=\"10\"\n [onlyScaleDown]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n imageQuality=\"100\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [style.display]=\"showCropper ? null : 'none'\">\n </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 class=\"cropped-image\"\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}.cropped-image{max-height:390px!important}.card-footer{background-color:transparent;left:0}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.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.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
1668
1668
  }
1669
1669
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperComponent, decorators: [{
1670
1670
  type: Component,
@@ -1756,7 +1756,7 @@ class CustomUploaderComponent extends AppBaseComponent {
1756
1756
  });
1757
1757
  }
1758
1758
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, deps: [{ token: i0.Injector }, { token: i3$1.NgbModal }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
1759
- 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: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }, { kind: "component", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1759
+ 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: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }, { kind: "component", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1760
1760
  }
1761
1761
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, decorators: [{
1762
1762
  type: Component,
@@ -1848,7 +1848,7 @@ class InputContainerComponent {
1848
1848
  useExisting: InputContainerComponent,
1849
1849
  multi: true
1850
1850
  }
1851
- ], 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: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.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" }] }); }
1851
+ ], 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: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.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" }] }); }
1852
1852
  }
1853
1853
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InputContainerComponent, decorators: [{
1854
1854
  type: Component,
@@ -1896,297 +1896,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1896
1896
  type: Input
1897
1897
  }] } });
1898
1898
 
1899
- class ResourceHeaderComponent extends AppBaseComponent {
1900
- constructor(injector, document, adminService, modalService) {
1901
- super(injector);
1902
- this.document = document;
1903
- this.adminService = adminService;
1904
- this.modalService = modalService;
1905
- this.isScrolled = false;
1906
- this.open = false;
1907
- this.logo = '/assets/img/landing-page/site-logo.png'; // Static fallback for LCP optimization
1908
- this.navbarItems = this.appConfig?.pages_config?.navbar?.items;
1909
- this.domainId = this.appConfig?.domain_id;
1910
- this.contrastImageUrl = this.appConfig?.company?.logos?.main_contrast?.url;
1911
- this.darkImageUrl = this.appConfig?.company?.logos?.main_dark?.url;
1912
- this.editingNavbar = {
1913
- items: []
1914
- };
1915
- this.canEditResourcesValue = false;
1916
- }
1917
- ngOnInit() {
1918
- console.log('In Header');
1919
- // Subscribe to appConfig changes to update logo dynamically
1920
- this.appConfigService.appConfig$.subscribe(config => {
1921
- if (config?.company?.logos) {
1922
- const isAboutUs = this.router.url?.includes('/about-us');
1923
- const logos = config.company.logos;
1924
- // Use smaller version for better performance (100x100 instead of 1200x264)
1925
- this.logo = isAboutUs
1926
- ? logos.main_contrast?.url || '/assets/img/landing-page/site-logo.png'
1927
- : logos.main_dark?.url || '/assets/img/landing-page/site-logo.png';
1928
- }
1929
- });
1930
- if (this.userLoggedIn) {
1931
- this.localStorage.getItem$('product').subscribe(res => {
1932
- const data = res ? JSON.parse(res) : null;
1933
- this.id = data?.subscriptionId;
1934
- });
1935
- }
1936
- }
1937
- ngOnChanges(changes) {
1938
- if (changes['user'] || changes['userLoggedIn']) {
1939
- if (this.userLoggedIn && this.user) {
1940
- this.updateCanEditResourcesValue();
1941
- }
1942
- }
1943
- }
1944
- openLogoEditModal() {
1945
- this.modalService.open(this.logoEditModal, { centered: true, size: 'md' });
1946
- }
1947
- onSaveLogo(event) {
1948
- const formData = new FormData();
1949
- formData.append('subscription_id', this.id);
1950
- if (event.file instanceof File) {
1951
- formData.append(this.isScrolled ? 'logo_main_contrast' : 'logo_main_dark', event.file);
1952
- }
1953
- else {
1954
- formData.append(this.isScrolled ? 'remove_logo_main_contrast' : 'remove_logo_main_dark', 'true');
1955
- }
1956
- this.adminService.updateDomainConfig(this.domainId, formData).subscribe(() => {
1957
- if (event.file) {
1958
- this.logo = URL.createObjectURL(event.file);
1959
- if (this.isScrolled) {
1960
- this.contrastImageUrl = URL.createObjectURL(event.file);
1961
- }
1962
- else {
1963
- this.darkImageUrl = URL.createObjectURL(event.file);
1964
- }
1965
- this.modalService.dismissAll();
1966
- }
1967
- this.toast.success(event.file ? 'Logo updated' : 'Logo removed');
1968
- });
1969
- }
1970
- onScroll() {
1971
- clearTimeout(this.scrollTimeout);
1972
- this.scrollTimeout = setTimeout(() => {
1973
- requestAnimationFrame(() => {
1974
- const isAboutUs = this.router?.url?.includes('/about-us');
1975
- const shouldScroll = window.scrollY > 150;
1976
- this.isScrolled = shouldScroll;
1977
- if (!isAboutUs) {
1978
- // Use smaller versions for better performance
1979
- const logos = this.appConfig?.company?.logos;
1980
- const newLogo = shouldScroll
1981
- ? logos?.main_contrast?.url ??
1982
- this.contrastImageUrl ??
1983
- '/assets/img/landing-page/site-logo.png'
1984
- : logos?.main_dark?.url ??
1985
- this.darkImageUrl ??
1986
- '/assets/img/landing-page/site-logo.png';
1987
- if (this.logo !== newLogo) {
1988
- this.logo = newLogo;
1989
- }
1990
- }
1991
- if (window.innerWidth < 768) {
1992
- this.open = false;
1993
- const collapseElement = this.navbarCollapse?.nativeElement;
1994
- if (collapseElement?.classList.contains('show')) {
1995
- collapseElement.classList.remove('show');
1996
- }
1997
- }
1998
- // Close all dropdowns when scrolling
1999
- this.closeAllDropdowns();
2000
- });
2001
- }, 50);
2002
- }
2003
- onDocumentClick(event) {
2004
- // Close all dropdowns when clicking outside
2005
- const target = event.target;
2006
- if (!target.closest('.nav-item') &&
2007
- !target.closest('.popup') &&
2008
- !target.closest('.sign-btn')) {
2009
- this.closeAllDropdowns();
2010
- }
2011
- }
2012
- closeAllDropdowns() {
2013
- if (this.navbarItems) {
2014
- this.navbarItems.forEach(item => {
2015
- if (item.open) {
2016
- item.open = false;
2017
- }
2018
- });
2019
- }
2020
- }
2021
- openDropdown(item) {
2022
- // Close other dropdowns first
2023
- this.navbarItems.forEach(navItem => {
2024
- if (navItem !== item) {
2025
- navItem.open = false;
2026
- }
2027
- });
2028
- item.open = true;
2029
- }
2030
- onDropdownItemClick(item) {
2031
- item.open = false;
2032
- }
2033
- openEditNavbarModal() {
2034
- const navbarConfig = this.appConfig.pages_config?.navbar ?? {};
2035
- navbarConfig.items = navbarConfig.items ?? [];
2036
- this.editingNavbar = JSON.parse(JSON.stringify(navbarConfig));
2037
- this.modalService.open(this.editNavbarModal, {
2038
- size: 'lg',
2039
- centered: true,
2040
- windowClass: 'modal-holder'
2041
- });
2042
- }
2043
- saveNavbarLinks(modal) {
2044
- const updatedConfig = {
2045
- navbar: this.editingNavbar,
2046
- subscription_id: this.id
2047
- };
2048
- this.adminService
2049
- .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)
2050
- .subscribe(() => {
2051
- this.toast.success('Navbar links updated');
2052
- this.navbarItems = [...this.editingNavbar.items];
2053
- // Update the appConfig to reflect the saved changes
2054
- this.appConfig.pages_config = this.appConfig.pages_config ?? {};
2055
- this.appConfig.pages_config.navbar = { ...this.editingNavbar };
2056
- modal.close();
2057
- });
2058
- }
2059
- addNavbarItem() {
2060
- this.editingNavbar.items.push({
2061
- title: '',
2062
- path: '',
2063
- subtitles: []
2064
- });
2065
- }
2066
- removeNavbarItem(index) {
2067
- this.editingNavbar.items.splice(index, 1);
2068
- }
2069
- addNavbarSubtitle(index) {
2070
- this.editingNavbar.items[index].subtitles.push({
2071
- title: '',
2072
- path: ''
2073
- });
2074
- }
2075
- removeNavbarSubtitle(navIndex, subIndex) {
2076
- this.editingNavbar.items[navIndex].subtitles.splice(subIndex, 1);
2077
- }
2078
- dropNavbarItems(event) {
2079
- moveItemInArray(this.editingNavbar.items, event.previousIndex, event.currentIndex);
2080
- }
2081
- dropNavbarSubtitles(index, event) {
2082
- moveItemInArray(this.editingNavbar.items[index].subtitles, event.previousIndex, event.currentIndex);
2083
- }
2084
- updateCanEditResourcesValue() {
2085
- this.canEditResourcesValue = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
2086
- }
2087
- canEditResources() {
2088
- return this.canEditResourcesValue;
2089
- }
2090
- navigateToLogin() {
2091
- window.location.href = '/login';
2092
- }
2093
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderComponent, deps: [{ token: i0.Injector }, { token: DOCUMENT }, { token: i1$2.AdminService }, { token: i3$1.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
2094
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceHeaderComponent, selector: "pw-resource-header", inputs: { user: "user", userLoggedIn: "userLoggedIn" }, host: { listeners: { "window:scroll": "onScroll()", "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "navbarCollapse", first: true, predicate: ["collapsibleNavbar"], descendants: true }, { propertyName: "editNavbarModal", first: true, predicate: ["editNavbarModal"], descendants: true }, { propertyName: "logoEditModal", first: true, predicate: ["logoEditModal"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<nav class=\"navbar navbar-expand-md navbar-dark fixed-top primary-nav-bg-color resource-header\"\n id=\"banner\">\n <div class=\"container container-wrapper banner-section\">\n\n <!-- Toggler/collapsibe Button -->\n <button class=\"navbar-toggler header-menu-bar\"\n type=\"button\"\n aria-label=\"Toggle navigation\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#collapsibleNavbar\">\n <img src=\"/assets/img/products/trial/navbar-toggle-icon.png\"\n class=\"img-fluid navbar-toggle-icon\"\n alt=\"\" />\n </button>\n\n <!-- Mobile Logo -->\n <div class=\"d-md-none mb-icon\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openLogoEditModal()\"\n (keydown.enter)=\"openLogoEditModal()\"\n (keydown.space)=\"openLogoEditModal()\"\n title=\"Edit Logo\"></i>\n\n\n <!-- Navbar links -->\n <div class=\"collapse navbar-collapse mt-3 mt-md-0\"\n id=\"collapsibleNavbar\"\n #collapsibleNavbar>\n <div class=\"row align-items-center w-100\">\n\n <!-- Always occupy 3 columns for logo -->\n <div class=\"col-md-2 d-none d-md-flex align-items-center\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <div class=\"col-md-7 d-flex justify-content-start\">\n <ul #anchorLinks\n class=\"navbar-nav flex gap-4 me-0 wow fadeInUp position-relative\"\n data-wow-duration=\"2s\">\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openEditNavbarModal()\"\n (keydown.enter)=\"openEditNavbarModal()\"\n (keydown.space)=\"openEditNavbarModal()\"\n title=\"Edit Navbar Links\"></i>\n <li class=\"nav-item\" *ngFor=\"let item of navbarItems\">\n <div class=\"dropdown-container\"\n (mouseenter)=\"openDropdown(item)\">\n <a\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n [ngClass]=\"{ 'scrolled-nav-link': isScrolled }\"\n (click)=\"item.subtitles?.length ? (item.open = !item.open) : null\"\n [attr.href]=\"!(item.subtitles?.length) ? item.path : null\"\n >\n {{ item?.title }}\n <i *ngIf=\"item.subtitles.length > 0 && item.open\" class=\"fa-solid fa-caret-down\"></i>\n </a>\n <div class=\"popup position-absolute\"\n *ngIf=\"item.subtitles.length > 0 && item.open\">\n <ul>\n <li\n *ngFor=\"let sub of item.subtitles\"\n [routerLink]=\"sub.path\"\n class=\"dropdownItem\"\n (click)=\"onDropdownItemClick(item)\"\n (keydown.enter)=\"onDropdownItemClick(item)\"\n (keydown.space)=\"onDropdownItemClick(item)\"\n >\n {{ sub.title }}\n </li>\n </ul>\n </div>\n </div>\n </li>\n\n <li class=\"nav-item ms-2 mb-3 d-flex d-md-none\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </li>\n </ul>\n </div>\n\n <!-- Always 3 columns for login -->\n <div class=\"col-md-3 d-none d-md-flex justify-content-end\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </div>\n\n </div>\n </div>\n </div>\n</nav>\n\n\n\n<ng-template #editNavbarModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Navbar Links</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Navbar Section</h4>\n <div cdkDropList (cdkDropListDropped)=\"dropNavbarItems($event)\">\n <div *ngFor=\"let item of editingNavbar.items; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5 mb-2\">\n <label for=\"navbarTitle{{i}}\" class=\"form-label\">Title</label>\n <input id=\"navbarTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5 mb-2\">\n <label for=\"navbarPath{{i}}\" class=\"form-label\">Path</label>\n <input id=\"navbarPath{{i}}\" class=\"form-control\" [(ngModel)]=\"item.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeNavbarItem(i)\" (keydown.enter)=\"removeNavbarItem(i)\"\n (keydown.space)=\"removeNavbarItem(i)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-pointer\" cdkDragHandle></i>\n </div>\n </div>\n\n <div cdkDropList (cdkDropListDropped)=\"dropNavbarSubtitles(i, $event)\">\n <div *ngFor=\"let sub of item.subtitles; let j = index\" class=\"row border p-3 mb-2 align-items-center\" cdkDrag>\n <div class=\"col-md-5\">\n <label for=\"navbarSubtitleTitle{{i}}{{j}}\" class=\"form-label\">Subtitle Title</label>\n <input id=\"navbarSubtitleTitle{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"sub.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"navbarSubtitlePath{{i}}{{j}}\" class=\"form-label\">Subtitle Path</label>\n <input id=\"navbarSubtitlePath{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"sub.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeNavbarSubtitle(i, j)\" (keydown.enter)=\"removeNavbarSubtitle(i, j)\" (keydown.space)=\"removeNavbarSubtitle(i, j)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-pointer\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addNavbarSubtitle(i)\">\n + Add Subtitle\n </button>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-3\" (click)=\"addNavbarItem()\">\n + Add Navbar Item\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveNavbarLinks(modal)\">Save</button>\n </div>\n</ng-template>\n\n\n\n\n<ng-template #logoEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Logo</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <pw-custom-uploader\n [title]=\"'Main Logo'\"\n [controlName]=\"'logo_main'\"\n [aspectRatio]=\"'fullLogo'\"\n [previewData]=\"{ url: logo, name: 'logo_main.png' }\"\n (saveEvent)=\"onSaveLogo($event)\">\n </pw-custom-uploader>\n </div>\n</ng-template>", styles: [".navbar-custom-background{background-color:#00000080;box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,-webkit-transform 2s;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top{position:fixed!important}.primary-button{background-color:#000;border-radius:50px;color:#fff;font: 600 16.3px Montserrat-Regular,sans-serif;padding:5px 16px!important;width:auto;display:flex;gap:15px;align-items:center;justify-content:space-between}.logo_img{width:60%!important;min-width:159px!important}.navbar-toggle-icon{width:25px}@media (min-width: 500px){.navbar-nav .nav-item button{margin-top:10px}}@media (max-width: 1200px){.navbar-nav .nav-item .nav-link{font-size:15px!important}}.navbar-nav .nav-link{display:inline-flex!important;white-space:nowrap;gap:4px}.fa-caret-down{font-family:\"Font Awesome 6 Pro\",sans-serif;font-weight:900}@media (min-width: 1200px){.navbar-nav .nav-item .nav-link{padding-bottom:0!important;padding-top:0!important}.popup{top:3.4rem!important;background-color:var(--first)!important;background-color:transparent;padding:10px;z-index:1000;transition:opacity .3s ease-in-out}.popup ul li{color:#fff;font: 500 14px Montserrat-Regular,sans-serif;cursor:pointer;border-bottom:1px solid #eee}.popup ul li:last-child{border-bottom:none}.router-link-active{color:#000!important}}@media (max-width: 1200px){.popup ul li{color:#fff;font: 500 14px Montserrat-Regular,sans-serif;cursor:pointer;border-bottom:1px solid #eee}.popup ul li:last-child{border-bottom:none}.popup ul li:hover{background-color:#f1f1f1}.mb-icon{width:200px}.container-wrapper{padding:10px 20px!important}.dropdown-container{position:relative;display:inline-block}.popup{top:0%!important;background-color:var(--first)!important;left:10rem;padding:10px;z-index:1000;transition:opacity .3s ease-in-out}}@media (max-width: 500px){.navbar-nav{background-color:var(--first);border-top:3px solid rgb(254,209,54);color:#fff;margin-top:5px;z-index:1}.navbar-nav .nav-item .nav-link{font-size:100%;font-weight:500;padding:.7em 1em!important}}.popup{top:90%;background-color:transparent;padding:10px;z-index:1000}.popup ul{list-style-type:none;padding:0;margin:0}.popup ul li{padding:5px 10px;font: 500 14px Montserrat-Regular,sans-serif}.resource-header .nav-link.scrolled-nav-link{color:#fff!important}.resource-header .sign-btn,.resource-header .sign-header-btn{text-decoration:none!important}.dropdownItem{cursor:pointer}.rotate{transform:rotate(180deg)}@media (max-width: 500px){.logo_img{width:60%!important;margin-left:auto;margin-right:0;display:block;transition:margin .5s ease,width .5s ease}.navbar-nav{background-color:var(--first);border-top:3px solid rgb(254,209,54);color:#fff;margin-top:5px;z-index:1}.navbar-nav .nav-item .nav-link{font-size:100%;font-weight:500;padding:.7em 1em!important}.popup{top:0%!important;background-color:var(--first)!important;left:10rem;padding:10px;z-index:1000;transition:opacity .3s ease-in-out}.popup ul{list-style-type:none;padding:0;margin:0}.dropdownItem{cursor:pointer}.rotate{transform:rotate(180deg)}.dropdown-container{position:relative;display:inline-block}}.navbar-nav{visibility:visible!important;display:flex!important}.nav-link{text-transform:uppercase}.dropdown-container{position:relative;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }, { kind: "component", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: ["controlName", "previewData", "aspectRatio", "title"], outputs: ["saveEvent"] }] }); }
2095
- }
2096
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderComponent, decorators: [{
2097
- type: Component,
2098
- args: [{ selector: 'pw-resource-header', template: "<nav class=\"navbar navbar-expand-md navbar-dark fixed-top primary-nav-bg-color resource-header\"\n id=\"banner\">\n <div class=\"container container-wrapper banner-section\">\n\n <!-- Toggler/collapsibe Button -->\n <button class=\"navbar-toggler header-menu-bar\"\n type=\"button\"\n aria-label=\"Toggle navigation\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#collapsibleNavbar\">\n <img src=\"/assets/img/products/trial/navbar-toggle-icon.png\"\n class=\"img-fluid navbar-toggle-icon\"\n alt=\"\" />\n </button>\n\n <!-- Mobile Logo -->\n <div class=\"d-md-none mb-icon\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openLogoEditModal()\"\n (keydown.enter)=\"openLogoEditModal()\"\n (keydown.space)=\"openLogoEditModal()\"\n title=\"Edit Logo\"></i>\n\n\n <!-- Navbar links -->\n <div class=\"collapse navbar-collapse mt-3 mt-md-0\"\n id=\"collapsibleNavbar\"\n #collapsibleNavbar>\n <div class=\"row align-items-center w-100\">\n\n <!-- Always occupy 3 columns for logo -->\n <div class=\"col-md-2 d-none d-md-flex align-items-center\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <div class=\"col-md-7 d-flex justify-content-start\">\n <ul #anchorLinks\n class=\"navbar-nav flex gap-4 me-0 wow fadeInUp position-relative\"\n data-wow-duration=\"2s\">\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openEditNavbarModal()\"\n (keydown.enter)=\"openEditNavbarModal()\"\n (keydown.space)=\"openEditNavbarModal()\"\n title=\"Edit Navbar Links\"></i>\n <li class=\"nav-item\" *ngFor=\"let item of navbarItems\">\n <div class=\"dropdown-container\"\n (mouseenter)=\"openDropdown(item)\">\n <a\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n [ngClass]=\"{ 'scrolled-nav-link': isScrolled }\"\n (click)=\"item.subtitles?.length ? (item.open = !item.open) : null\"\n [attr.href]=\"!(item.subtitles?.length) ? item.path : null\"\n >\n {{ item?.title }}\n <i *ngIf=\"item.subtitles.length > 0 && item.open\" class=\"fa-solid fa-caret-down\"></i>\n </a>\n <div class=\"popup position-absolute\"\n *ngIf=\"item.subtitles.length > 0 && item.open\">\n <ul>\n <li\n *ngFor=\"let sub of item.subtitles\"\n [routerLink]=\"sub.path\"\n class=\"dropdownItem\"\n (click)=\"onDropdownItemClick(item)\"\n (keydown.enter)=\"onDropdownItemClick(item)\"\n (keydown.space)=\"onDropdownItemClick(item)\"\n >\n {{ sub.title }}\n </li>\n </ul>\n </div>\n </div>\n </li>\n\n <li class=\"nav-item ms-2 mb-3 d-flex d-md-none\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </li>\n </ul>\n </div>\n\n <!-- Always 3 columns for login -->\n <div class=\"col-md-3 d-none d-md-flex justify-content-end\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </div>\n\n </div>\n </div>\n </div>\n</nav>\n\n\n\n<ng-template #editNavbarModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Navbar Links</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Navbar Section</h4>\n <div cdkDropList (cdkDropListDropped)=\"dropNavbarItems($event)\">\n <div *ngFor=\"let item of editingNavbar.items; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5 mb-2\">\n <label for=\"navbarTitle{{i}}\" class=\"form-label\">Title</label>\n <input id=\"navbarTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5 mb-2\">\n <label for=\"navbarPath{{i}}\" class=\"form-label\">Path</label>\n <input id=\"navbarPath{{i}}\" class=\"form-control\" [(ngModel)]=\"item.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeNavbarItem(i)\" (keydown.enter)=\"removeNavbarItem(i)\"\n (keydown.space)=\"removeNavbarItem(i)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-pointer\" cdkDragHandle></i>\n </div>\n </div>\n\n <div cdkDropList (cdkDropListDropped)=\"dropNavbarSubtitles(i, $event)\">\n <div *ngFor=\"let sub of item.subtitles; let j = index\" class=\"row border p-3 mb-2 align-items-center\" cdkDrag>\n <div class=\"col-md-5\">\n <label for=\"navbarSubtitleTitle{{i}}{{j}}\" class=\"form-label\">Subtitle Title</label>\n <input id=\"navbarSubtitleTitle{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"sub.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"navbarSubtitlePath{{i}}{{j}}\" class=\"form-label\">Subtitle Path</label>\n <input id=\"navbarSubtitlePath{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"sub.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeNavbarSubtitle(i, j)\" (keydown.enter)=\"removeNavbarSubtitle(i, j)\" (keydown.space)=\"removeNavbarSubtitle(i, j)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-pointer\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addNavbarSubtitle(i)\">\n + Add Subtitle\n </button>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-3\" (click)=\"addNavbarItem()\">\n + Add Navbar Item\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveNavbarLinks(modal)\">Save</button>\n </div>\n</ng-template>\n\n\n\n\n<ng-template #logoEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Logo</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <pw-custom-uploader\n [title]=\"'Main Logo'\"\n [controlName]=\"'logo_main'\"\n [aspectRatio]=\"'fullLogo'\"\n [previewData]=\"{ url: logo, name: 'logo_main.png' }\"\n (saveEvent)=\"onSaveLogo($event)\">\n </pw-custom-uploader>\n </div>\n</ng-template>", styles: [".navbar-custom-background{background-color:#00000080;box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,-webkit-transform 2s;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top{position:fixed!important}.primary-button{background-color:#000;border-radius:50px;color:#fff;font: 600 16.3px Montserrat-Regular,sans-serif;padding:5px 16px!important;width:auto;display:flex;gap:15px;align-items:center;justify-content:space-between}.logo_img{width:60%!important;min-width:159px!important}.navbar-toggle-icon{width:25px}@media (min-width: 500px){.navbar-nav .nav-item button{margin-top:10px}}@media (max-width: 1200px){.navbar-nav .nav-item .nav-link{font-size:15px!important}}.navbar-nav .nav-link{display:inline-flex!important;white-space:nowrap;gap:4px}.fa-caret-down{font-family:\"Font Awesome 6 Pro\",sans-serif;font-weight:900}@media (min-width: 1200px){.navbar-nav .nav-item .nav-link{padding-bottom:0!important;padding-top:0!important}.popup{top:3.4rem!important;background-color:var(--first)!important;background-color:transparent;padding:10px;z-index:1000;transition:opacity .3s ease-in-out}.popup ul li{color:#fff;font: 500 14px Montserrat-Regular,sans-serif;cursor:pointer;border-bottom:1px solid #eee}.popup ul li:last-child{border-bottom:none}.router-link-active{color:#000!important}}@media (max-width: 1200px){.popup ul li{color:#fff;font: 500 14px Montserrat-Regular,sans-serif;cursor:pointer;border-bottom:1px solid #eee}.popup ul li:last-child{border-bottom:none}.popup ul li:hover{background-color:#f1f1f1}.mb-icon{width:200px}.container-wrapper{padding:10px 20px!important}.dropdown-container{position:relative;display:inline-block}.popup{top:0%!important;background-color:var(--first)!important;left:10rem;padding:10px;z-index:1000;transition:opacity .3s ease-in-out}}@media (max-width: 500px){.navbar-nav{background-color:var(--first);border-top:3px solid rgb(254,209,54);color:#fff;margin-top:5px;z-index:1}.navbar-nav .nav-item .nav-link{font-size:100%;font-weight:500;padding:.7em 1em!important}}.popup{top:90%;background-color:transparent;padding:10px;z-index:1000}.popup ul{list-style-type:none;padding:0;margin:0}.popup ul li{padding:5px 10px;font: 500 14px Montserrat-Regular,sans-serif}.resource-header .nav-link.scrolled-nav-link{color:#fff!important}.resource-header .sign-btn,.resource-header .sign-header-btn{text-decoration:none!important}.dropdownItem{cursor:pointer}.rotate{transform:rotate(180deg)}@media (max-width: 500px){.logo_img{width:60%!important;margin-left:auto;margin-right:0;display:block;transition:margin .5s ease,width .5s ease}.navbar-nav{background-color:var(--first);border-top:3px solid rgb(254,209,54);color:#fff;margin-top:5px;z-index:1}.navbar-nav .nav-item .nav-link{font-size:100%;font-weight:500;padding:.7em 1em!important}.popup{top:0%!important;background-color:var(--first)!important;left:10rem;padding:10px;z-index:1000;transition:opacity .3s ease-in-out}.popup ul{list-style-type:none;padding:0;margin:0}.dropdownItem{cursor:pointer}.rotate{transform:rotate(180deg)}.dropdown-container{position:relative;display:inline-block}}.navbar-nav{visibility:visible!important;display:flex!important}.nav-link{text-transform:uppercase}.dropdown-container{position:relative;display:inline-block}\n"] }]
2099
- }], ctorParameters: () => [{ type: i0.Injector }, { type: Document, decorators: [{
2100
- type: Inject,
2101
- args: [DOCUMENT]
2102
- }] }, { type: i1$2.AdminService }, { type: i3$1.NgbModal }], propDecorators: { navbarCollapse: [{
2103
- type: ViewChild,
2104
- args: ['collapsibleNavbar']
2105
- }], editNavbarModal: [{
2106
- type: ViewChild,
2107
- args: ['editNavbarModal']
2108
- }], logoEditModal: [{
2109
- type: ViewChild,
2110
- args: ['logoEditModal']
2111
- }], user: [{
2112
- type: Input
2113
- }], userLoggedIn: [{
2114
- type: Input
2115
- }], onScroll: [{
2116
- type: HostListener,
2117
- args: ['window:scroll', []]
2118
- }], onDocumentClick: [{
2119
- type: HostListener,
2120
- args: ['document:click', ['$event']]
2121
- }] } });
2122
-
2123
- // Wrapper module: declares ONLY ResourceHeaderComponent with all dependencies EXCEPT DragDropModule
2124
- // DragDropModule is ONLY needed for edit functionality and is imported in ResourceHeaderModule
2125
- class ResourceHeaderWrapperModule {
2126
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderWrapperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2127
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderWrapperModule, declarations: [ResourceHeaderComponent], imports: [CommonModule,
2128
- FormsModule,
2129
- RouterModule,
2130
- NgbModalModule,
2131
- NgbTooltipModule,
2132
- CoreTranslocoModule,
2133
- DirectivesModule,
2134
- PipesModule,
2135
- AdminModuleUtilsModule,
2136
- ProfileImageCropperModule], exports: [ResourceHeaderComponent] }); }
2137
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderWrapperModule, imports: [CommonModule,
2138
- FormsModule,
2139
- RouterModule,
2140
- NgbModalModule,
2141
- NgbTooltipModule,
2142
- CoreTranslocoModule,
2143
- DirectivesModule,
2144
- PipesModule,
2145
- AdminModuleUtilsModule,
2146
- ProfileImageCropperModule] }); }
2147
- }
2148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderWrapperModule, decorators: [{
2149
- type: NgModule,
2150
- args: [{
2151
- declarations: [ResourceHeaderComponent],
2152
- imports: [
2153
- CommonModule,
2154
- FormsModule,
2155
- RouterModule,
2156
- NgbModalModule,
2157
- NgbTooltipModule,
2158
- CoreTranslocoModule,
2159
- DirectivesModule,
2160
- PipesModule,
2161
- AdminModuleUtilsModule,
2162
- ProfileImageCropperModule
2163
- ],
2164
- exports: [ResourceHeaderComponent]
2165
- }]
2166
- }] });
2167
-
2168
- // ResourceHeaderModule: imports wrapper + adds DragDropModule for edit functionality only
2169
- // DragDropModule is ONLY used for drag & drop in the edit navbar modal
2170
- class ResourceHeaderModule {
2171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2172
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderModule, imports: [ResourceHeaderWrapperModule,
2173
- DragDropModule // Only needed for edit functionality (drag & drop navbar items)
2174
- ], exports: [ResourceHeaderComponent] }); }
2175
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderModule, imports: [ResourceHeaderWrapperModule,
2176
- DragDropModule // Only needed for edit functionality (drag & drop navbar items)
2177
- ] }); }
2178
- }
2179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceHeaderModule, decorators: [{
2180
- type: NgModule,
2181
- args: [{
2182
- imports: [
2183
- ResourceHeaderWrapperModule,
2184
- DragDropModule // Only needed for edit functionality (drag & drop navbar items)
2185
- ],
2186
- exports: [ResourceHeaderComponent]
2187
- }]
2188
- }] });
2189
-
2190
1899
  class ResourceSharedComponentsModule {
2191
1900
  constructor() {
2192
1901
  console.log('🚀 RESOURCE SHARED COMPONENTS MODULE LOADED! - Minimal shared components for resource module');
@@ -2204,10 +1913,7 @@ class ResourceSharedComponentsModule {
2204
1913
  AutoCompleteModule,
2205
1914
  DragDropModule,
2206
1915
  FieldErrorDisplayModule,
2207
- ProfileImageCropperModule, // ✅ Import the separate module
2208
- ResourceHeaderModule // ✅ Import the separate module
2209
- ], exports: [ProfileImageCropperModule, // ✅ Re-export module for backward compatibility
2210
- ResourceHeaderModule, // ✅ Re-export module for backward compatibility
1916
+ ProfileImageCropperModule], exports: [ProfileImageCropperModule, // ✅ Re-export module for backward compatibility
2211
1917
  InputContainerComponent,
2212
1918
  NoDataComponent,
2213
1919
  ButtonModule,
@@ -2227,10 +1933,7 @@ class ResourceSharedComponentsModule {
2227
1933
  AutoCompleteModule,
2228
1934
  DragDropModule,
2229
1935
  FieldErrorDisplayModule,
2230
- ProfileImageCropperModule, // ✅ Import the separate module
2231
- ResourceHeaderModule // ✅ Import the separate module
2232
- , ProfileImageCropperModule, // ✅ Re-export module for backward compatibility
2233
- ResourceHeaderModule,
1936
+ ProfileImageCropperModule, ProfileImageCropperModule,
2234
1937
  ButtonModule,
2235
1938
  DragDropModule,
2236
1939
  ProgressSpinnerModule,
@@ -2255,11 +1958,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
2255
1958
  DragDropModule,
2256
1959
  FieldErrorDisplayModule,
2257
1960
  ProfileImageCropperModule, // ✅ Import the separate module
2258
- ResourceHeaderModule // ✅ Import the separate module
2259
1961
  ],
2260
1962
  exports: [
2261
1963
  ProfileImageCropperModule, // ✅ Re-export module for backward compatibility
2262
- ResourceHeaderModule, // ✅ Re-export module for backward compatibility
2263
1964
  InputContainerComponent,
2264
1965
  NoDataComponent,
2265
1966
  ButtonModule,
@@ -2297,7 +1998,7 @@ class TermsConditionsComponent {
2297
1998
  });
2298
1999
  }
2299
2000
  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 }); }
2300
- 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$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b" }] }); }
2001
+ 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: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b" }] }); }
2301
2002
  }
2302
2003
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TermsConditionsComponent, decorators: [{
2303
2004
  type: Component,
@@ -2487,5 +2188,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
2487
2188
  * Generated bundle index. Do not edit.
2488
2189
  */
2489
2190
 
2490
- export { AuthenticatorComponent, ClearBitIconComponent, ComingSoonComponent, CustomUploaderComponent, DateRangePickerComponent, DemoCardsComponent, DemoCardsModule, EntityGroupComponent, FieldErrorDisplayComponent, FieldErrorDisplayModule, GroupDefinitionComponent, GroupsComponent, HeaderComponent, InputContainerComponent, LandingPageFooterBComponent, NoDataComponent, NumberPickerComponent, PasswordValidationComponent, PermissionTreeComponent, PrivacyAndTosComponent, PrivacyPolicyComponent, ProfileImageCropperComponent, ProfileImageCropperModule, PwTabsComponent, ResourceHeaderComponent, ResourceHeaderModule, ResourceHeaderWrapperModule, ResourceSharedComponentsModule, SharedComponentsModule, SplashComponent, TermsConditionsComponent };
2191
+ export { AuthenticatorComponent, ClearBitIconComponent, ComingSoonComponent, CustomUploaderComponent, DateRangePickerComponent, DemoCardsComponent, DemoCardsModule, EntityGroupComponent, FieldErrorDisplayComponent, FieldErrorDisplayModule, GroupDefinitionComponent, GroupsComponent, HeaderComponent, InputContainerComponent, LandingPageFooterBComponent, NoDataComponent, NumberPickerComponent, PasswordValidationComponent, PermissionTreeComponent, PrivacyAndTosComponent, PrivacyPolicyComponent, ProfileImageCropperComponent, ProfileImageCropperModule, PwTabsComponent, ResourceSharedComponentsModule, SharedComponentsModule, SplashComponent, TermsConditionsComponent };
2491
2192
  //# sourceMappingURL=posiwise-shared-components.mjs.map