@posiwise/shared-components 0.0.156 → 0.0.158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/fesm2022/posiwise-shared-components.mjs +698 -133
  2. package/fesm2022/posiwise-shared-components.mjs.map +1 -1
  3. package/package.json +5 -5
  4. package/types/posiwise-shared-components.d.ts +786 -0
  5. package/index.d.ts +0 -21
  6. package/lib/authenticator/authenticator.component.d.ts +0 -12
  7. package/lib/clearbit-icon/clearbit-icon.component.d.ts +0 -11
  8. package/lib/coming-soon/coming-soon.component.d.ts +0 -6
  9. package/lib/header/header.component.d.ts +0 -16
  10. package/lib/input-container/input-container.component.d.ts +0 -29
  11. package/lib/label-management/entity-group/entity-group.component.d.ts +0 -45
  12. package/lib/label-management/group-definition/group-definition.component.d.ts +0 -45
  13. package/lib/label-management/groups/groups.component.d.ts +0 -64
  14. package/lib/landing-page-footer-b/landing-page-footer-b.component.d.ts +0 -13
  15. package/lib/no-data/no-data.component.d.ts +0 -16
  16. package/lib/number-picker/number-picker.component.d.ts +0 -73
  17. package/lib/number-picker/number-picker.config.d.ts +0 -11
  18. package/lib/password-validation/password-validation.component.d.ts +0 -18
  19. package/lib/permission-tree/permission-tree.component.d.ts +0 -16
  20. package/lib/privacy-and-tos/privacy-and-tos.component.d.ts +0 -36
  21. package/lib/privacy-policy/privacy-policy.component.d.ts +0 -11
  22. package/lib/pw-tabs/pw-tabs.component.d.ts +0 -21
  23. package/lib/range-date-picker/date-range-picker.component.d.ts +0 -28
  24. package/lib/resource-shared-components.module.d.ts +0 -20
  25. package/lib/shared/shared-component.interface.d.ts +0 -35
  26. package/lib/shared-components.module.d.ts +0 -43
  27. package/lib/splash/splash.component.d.ts +0 -5
  28. package/lib/terms-conditions/terms-conditions.component.d.ts +0 -18
@@ -1,10 +1,10 @@
1
- import * as i3$1 from '@angular/common';
2
- import { DOCUMENT, CommonModule, NgIf } from '@angular/common';
1
+ import * as i7 from '@angular/common';
2
+ import { CommonModule, NgIf } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, ContentChild, ViewChild, EventEmitter, Output, Inject, Optional, Host, SkipSelf, NgModule } from '@angular/core';
5
- import * as i2 from '@angular/forms';
4
+ import { Component, ChangeDetectionStrategy, Input, Injectable, ViewContainerRef, booleanAttribute, ViewChild, isDevMode, HostListener, Directive, ContentChild, EventEmitter, Output, DOCUMENT, Inject, Optional, Host, SkipSelf, NgModule } from '@angular/core';
5
+ import * as i2$1 from '@angular/forms';
6
6
  import { UntypedFormControl, Validators, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import * as i5 from '@angular/router';
7
+ import * as i2 from '@angular/router';
8
8
  import { NavigationEnd, RouterModule } from '@angular/router';
9
9
  import * as i1$3 from '@posiwise/app-loader';
10
10
  import { AppLoaderModule } from '@posiwise/app-loader';
@@ -12,12 +12,12 @@ import { CoreTranslocoModule } from '@posiwise/core-transloco';
12
12
  import * as i3 from '@posiwise/directives';
13
13
  import { DirectivesModule } from '@posiwise/directives';
14
14
  import { PipesModule } from '@posiwise/pipes';
15
- import * as i4$3 from '@posiwise/utils';
15
+ import * as i4$2 from '@posiwise/utils';
16
16
  import { ValidateForm, ProfileImageCropperModule, ResourceHeaderModule, FieldErrorDisplayModule } from '@posiwise/utils';
17
17
  import * as i1$2 from 'ngx-daterangepicker-material';
18
18
  import { DaterangepickerDirective, NgxDaterangepickerMd } from 'ngx-daterangepicker-material';
19
19
  import { ImageCropperModule } from 'ngx-image-cropper';
20
- import * as i5$1 from 'ngx-ui-switch';
20
+ import * as i5 from 'ngx-ui-switch';
21
21
  import { UiSwitchModule } from 'ngx-ui-switch';
22
22
  import * as i9 from 'primeng/autocomplete';
23
23
  import { AutoCompleteModule } from 'primeng/autocomplete';
@@ -25,36 +25,39 @@ import { ButtonModule } from 'primeng/button';
25
25
  import { MultiSelectModule } from 'primeng/multiselect';
26
26
  import * as i4$1 from 'primeng/progressspinner';
27
27
  import { ProgressSpinnerModule } from 'primeng/progressspinner';
28
- import * as i5$2 from 'primeng/select';
28
+ import * as i5$1 from 'primeng/select';
29
29
  import { SelectModule } from 'primeng/select';
30
30
  import * as i6 from 'primeng/table';
31
31
  import { TableModule } from 'primeng/table';
32
- import * as i2$2 from 'primeng/tabs';
32
+ import * as i2$3 from 'primeng/tabs';
33
33
  import { TabsModule } from 'primeng/tabs';
34
- import * as i3$2 from '@ng-bootstrap/ng-bootstrap';
34
+ import * as i3$1 from '@ng-bootstrap/ng-bootstrap';
35
35
  import { NgbTooltipModule, NgbNavModule, NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
36
36
  import { AppBaseComponent } from '@posiwise/app-base-component';
37
37
  import * as i1 from '@posiwise/common-services';
38
38
  import { PermissionService } from '@posiwise/common-services';
39
+ import { Subject, BehaviorSubject } from 'rxjs';
40
+ import { takeUntil, map as map$1, distinctUntilChanged } from 'rxjs/operators';
39
41
  import { HelperService } from '@posiwise/helper-service';
40
42
  import * as i4 from '@jsverse/transloco';
41
43
  import { TAG_ENTITY } from '@posiwise/common-utilities';
42
- import * as i7 from 'primeng/api';
44
+ import * as i7$1 from 'primeng/api';
43
45
  import { __decorate, __metadata } from 'tslib';
44
46
  import swal from 'sweetalert2';
45
- import * as i4$2 from 'primeng/tooltip';
47
+ import * as i3$2 from 'primeng/tooltip';
46
48
  import { TooltipModule } from 'primeng/tooltip';
47
49
  import { StatusCodes } from 'http-status-codes';
48
50
  import map from 'lodash/map';
49
- import * as i2$1 from '@angular/platform-browser';
51
+ import * as i2$2 from '@angular/platform-browser';
50
52
  import * as i1$1 from '@posiwise/admin-module-utils';
51
53
  import { DragDropModule } from '@angular/cdk/drag-drop';
52
54
  import * as i1$4 from '@posiwise/app-config-service';
53
55
 
54
56
  class AuthenticatorComponent extends AppBaseComponent {
55
- constructor(authService, injector) {
57
+ constructor(authService, injector, cdr) {
56
58
  super(injector);
57
59
  this.authService = authService;
60
+ this.cdr = cdr;
58
61
  this.token = '';
59
62
  }
60
63
  ngOnInit() {
@@ -68,22 +71,168 @@ class AuthenticatorComponent extends AppBaseComponent {
68
71
  this.authService.storeToken(params['token']).subscribe({
69
72
  next: () => {
70
73
  this.router.navigate(['home']);
74
+ this.cdr.markForCheck();
71
75
  },
72
76
  error: () => {
73
77
  window.location.href = '/login';
78
+ this.cdr.markForCheck();
74
79
  }
75
80
  });
81
+ this.cdr.markForCheck();
76
82
  });
77
83
  }
84
+ this.cdr.markForCheck();
78
85
  });
79
86
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: AuthenticatorComponent, deps: [{ token: i1.AuthService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: AuthenticatorComponent, isStandalone: false, selector: "pw-authenticator", usesInheritance: true, ngImport: i0, template: "<!--Auth Page Starts-->\n<section>\n <div class=\"container-fluid\">\n <div class=\"row full-height-vh\">\n <div class=\"col-12 d-flex align-items-center justify-content-center\">\n <h2>Logging...</h2>\n </div>\n </div>\n </div>\n</section>\n<!--Auth Page Ends-->\n" }); }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AuthenticatorComponent, deps: [{ token: i1.AuthService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: AuthenticatorComponent, isStandalone: false, selector: "pw-authenticator", usesInheritance: true, ngImport: i0, template: "<!--Auth Page Starts-->\n<section>\n <div class=\"container-fluid\">\n <div class=\"row full-height-vh\">\n <div class=\"col-12 d-flex align-items-center justify-content-center\">\n <h2>Logging...</h2>\n </div>\n </div>\n </div>\n</section>\n<!--Auth Page Ends-->\n" }); }
82
89
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: AuthenticatorComponent, decorators: [{
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AuthenticatorComponent, decorators: [{
84
91
  type: Component,
85
92
  args: [{ selector: 'pw-authenticator', standalone: false, template: "<!--Auth Page Starts-->\n<section>\n <div class=\"container-fluid\">\n <div class=\"row full-height-vh\">\n <div class=\"col-12 d-flex align-items-center justify-content-center\">\n <h2>Logging...</h2>\n </div>\n </div>\n </div>\n</section>\n<!--Auth Page Ends-->\n" }]
86
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i0.Injector }] });
93
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }] });
94
+
95
+ class PwBrainChatComponent {
96
+ constructor(mcp, router, cdr) {
97
+ this.mcp = mcp;
98
+ this.router = router;
99
+ this.cdr = cdr;
100
+ this.messages = [];
101
+ this.draft = '';
102
+ this.loading = false;
103
+ this.tools = [];
104
+ this.destroy$ = new Subject();
105
+ }
106
+ ngOnInit() {
107
+ this.mcp
108
+ .listTools()
109
+ .pipe(takeUntil(this.destroy$))
110
+ .subscribe({
111
+ next: res => {
112
+ this.tools = res.tools ?? [];
113
+ this.pushAssistant(this.buildWelcome());
114
+ this.cdr.markForCheck();
115
+ },
116
+ error: err => {
117
+ this.pushAssistant(err?.message ?? 'Could not reach MCP (tools/list).');
118
+ this.cdr.markForCheck();
119
+ }
120
+ });
121
+ }
122
+ ngOnDestroy() {
123
+ this.destroy$.next();
124
+ this.destroy$.complete();
125
+ }
126
+ send() {
127
+ const text = this.draft.trim();
128
+ if (!text || this.loading) {
129
+ return;
130
+ }
131
+ this.draft = '';
132
+ this.messages.push({ role: 'user', text });
133
+ this.loading = true;
134
+ this.cdr.markForCheck();
135
+ const toolName = this.resolveToolName(text);
136
+ if (!toolName) {
137
+ this.pushAssistant(this.buildHelpReply());
138
+ this.loading = false;
139
+ this.cdr.markForCheck();
140
+ return;
141
+ }
142
+ this.mcp
143
+ .callTool(toolName, {})
144
+ .pipe(takeUntil(this.destroy$))
145
+ .subscribe({
146
+ next: result => {
147
+ this.applyToolResult(result);
148
+ this.loading = false;
149
+ this.cdr.markForCheck();
150
+ },
151
+ error: err => {
152
+ this.pushAssistant(err?.message ?? 'MCP tools/call failed.');
153
+ this.loading = false;
154
+ this.cdr.markForCheck();
155
+ }
156
+ });
157
+ }
158
+ trackByIndex(index, _item) {
159
+ return index;
160
+ }
161
+ buildWelcome() {
162
+ if (!this.tools.length) {
163
+ return 'No MCP tools are available for your account yet.';
164
+ }
165
+ const list = this.tools.map(t => `${t.name} (${t.description ?? 'no description'})`);
166
+ return `Connected to MCP. You can ask about API usage, or say “stats”. Available tools: ${list.join('; ')}.`;
167
+ }
168
+ buildHelpReply() {
169
+ return 'I could not map that to a tool yet. Try: “show my API stats”, “usage”, or “get user stats”.';
170
+ }
171
+ resolveToolName(text) {
172
+ const lower = text.toLowerCase();
173
+ if (this.tools.some(t => t.name === 'get_user_stats')) {
174
+ if (/\b(stats?|usage|hits?|api|account|quota|get_user_stats)\b/i.test(lower) ||
175
+ lower.includes('user stats')) {
176
+ return 'get_user_stats';
177
+ }
178
+ }
179
+ const byName = this.tools.find(t => lower.includes(t.name) || lower.includes(t.name.replace(/_/g, ' ')));
180
+ return byName?.name ?? null;
181
+ }
182
+ applyToolResult(result) {
183
+ if (result && typeof result === 'object' && result !== null && 'navigate_to' in result) {
184
+ const url = String(result.navigate_to).trim();
185
+ if (url.startsWith('http://') || url.startsWith('https://')) {
186
+ if (this.isAllowedExternalNavigationUrl(url)) {
187
+ this.pushAssistant(`Navigating to: ${url}`);
188
+ window.location.assign(url);
189
+ }
190
+ else {
191
+ this.pushAssistant('Navigation was not performed: full URLs must use the same origin as this app.');
192
+ }
193
+ }
194
+ else if (this.isSafeAppRelativePath(url)) {
195
+ this.pushAssistant(`Navigating to: ${url}`);
196
+ this.router.navigateByUrl(url).catch(() => {
197
+ this.pushAssistant('Navigation failed.');
198
+ });
199
+ }
200
+ else {
201
+ this.pushAssistant('Navigation was not performed: use a single-root path (e.g. /admin/users), not // or javascript: URLs.');
202
+ }
203
+ return;
204
+ }
205
+ const text = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
206
+ this.pushAssistant(text);
207
+ }
208
+ /** Mitigate open redirects: only same-origin absolute URLs. */
209
+ isAllowedExternalNavigationUrl(url) {
210
+ try {
211
+ return new URL(url).origin === window.location.origin;
212
+ }
213
+ catch {
214
+ return false;
215
+ }
216
+ }
217
+ /** Block protocol-relative and pseudo-scheme paths passed to Router. */
218
+ isSafeAppRelativePath(path) {
219
+ if (!path.startsWith('/') || path.startsWith('//')) {
220
+ return false;
221
+ }
222
+ const decoded = decodeURIComponent(path);
223
+ return (!decoded.toLowerCase().includes('javascript:') &&
224
+ !decoded.toLowerCase().includes('data:'));
225
+ }
226
+ pushAssistant(text) {
227
+ this.messages.push({ role: 'assistant', text });
228
+ }
229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PwBrainChatComponent, deps: [{ token: i1.McpJsonRpcService }, { token: i2.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
230
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: PwBrainChatComponent, isStandalone: false, selector: "pw-brain-chat", ngImport: i0, template: "<div class=\"pw-brain-chat\">\n <div class=\"pw-brain-chat__thread\" role=\"log\" aria-live=\"polite\">\n @for (m of messages; track trackByIndex($index, m)) {\n <div\n class=\"pw-brain-chat__row\"\n [class.pw-brain-chat__row--user]=\"m.role === 'user'\"\n >\n <div class=\"pw-brain-chat__bubble\">\n <pre class=\"pw-brain-chat__text\">{{ m.text }}</pre>\n </div>\n </div>\n }\n </div>\n\n @if (loading) {\n <div class=\"pw-brain-chat__loading\" aria-hidden=\"false\">Working\u2026</div>\n }\n\n <div class=\"pw-brain-chat__compose\">\n <label class=\"visually-hidden\" for=\"pw-brain-chat-input\">Message MCP</label>\n <textarea\n id=\"pw-brain-chat-input\"\n class=\"form-control pw-brain-chat__input\"\n rows=\"2\"\n [(ngModel)]=\"draft\"\n placeholder=\"Ask PosiWise Brain\u2026\"\n (keydown.enter)=\"$event.preventDefault(); send()\"\n ></textarea>\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm pw-brain-chat__send\"\n [disabled]=\"loading || !draft.trim()\"\n (click)=\"send()\"\n >\n Send\n </button>\n </div>\n</div>\n", styles: [".pw-brain-chat{display:flex;flex-direction:column;height:100%;min-height:0}.pw-brain-chat__thread{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px 0;display:flex;flex-direction:column;gap:10px}.pw-brain-chat__row{display:flex;justify-content:flex-start}.pw-brain-chat__row--user{justify-content:flex-end}.pw-brain-chat__bubble{max-width:92%;border-radius:10px;padding:8px 12px;background:#eef1f4;border:1px solid rgba(0,0,0,.06)}.pw-brain-chat__row--user .pw-brain-chat__bubble{background:var(--tabs_bg, #0d6efd);border-color:transparent;color:var(--tabs_text, #fff)}.pw-brain-chat__text{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:13px;line-height:1.45}.pw-brain-chat__loading{font-size:12px;color:#6c757d;padding:4px 0 0}.pw-brain-chat__compose{flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding-top:10px;border-top:1px solid rgba(0,0,0,.08)}.pw-brain-chat__input{resize:none;font-size:13px}.pw-brain-chat__send{align-self:flex-end}\n"], dependencies: [{ kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
231
+ }
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PwBrainChatComponent, decorators: [{
233
+ type: Component,
234
+ args: [{ selector: 'pw-brain-chat', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"pw-brain-chat\">\n <div class=\"pw-brain-chat__thread\" role=\"log\" aria-live=\"polite\">\n @for (m of messages; track trackByIndex($index, m)) {\n <div\n class=\"pw-brain-chat__row\"\n [class.pw-brain-chat__row--user]=\"m.role === 'user'\"\n >\n <div class=\"pw-brain-chat__bubble\">\n <pre class=\"pw-brain-chat__text\">{{ m.text }}</pre>\n </div>\n </div>\n }\n </div>\n\n @if (loading) {\n <div class=\"pw-brain-chat__loading\" aria-hidden=\"false\">Working\u2026</div>\n }\n\n <div class=\"pw-brain-chat__compose\">\n <label class=\"visually-hidden\" for=\"pw-brain-chat-input\">Message MCP</label>\n <textarea\n id=\"pw-brain-chat-input\"\n class=\"form-control pw-brain-chat__input\"\n rows=\"2\"\n [(ngModel)]=\"draft\"\n placeholder=\"Ask PosiWise Brain\u2026\"\n (keydown.enter)=\"$event.preventDefault(); send()\"\n ></textarea>\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm pw-brain-chat__send\"\n [disabled]=\"loading || !draft.trim()\"\n (click)=\"send()\"\n >\n Send\n </button>\n </div>\n</div>\n", styles: [".pw-brain-chat{display:flex;flex-direction:column;height:100%;min-height:0}.pw-brain-chat__thread{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px 0;display:flex;flex-direction:column;gap:10px}.pw-brain-chat__row{display:flex;justify-content:flex-start}.pw-brain-chat__row--user{justify-content:flex-end}.pw-brain-chat__bubble{max-width:92%;border-radius:10px;padding:8px 12px;background:#eef1f4;border:1px solid rgba(0,0,0,.06)}.pw-brain-chat__row--user .pw-brain-chat__bubble{background:var(--tabs_bg, #0d6efd);border-color:transparent;color:var(--tabs_text, #fff)}.pw-brain-chat__text{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:13px;line-height:1.45}.pw-brain-chat__loading{font-size:12px;color:#6c757d;padding:4px 0 0}.pw-brain-chat__compose{flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding-top:10px;border-top:1px solid rgba(0,0,0,.08)}.pw-brain-chat__input{resize:none;font-size:13px}.pw-brain-chat__send{align-self:flex-end}\n"] }]
235
+ }], ctorParameters: () => [{ type: i1.McpJsonRpcService }, { type: i2.Router }, { type: i0.ChangeDetectorRef }] });
87
236
 
88
237
  class ClearBitIconComponent {
89
238
  constructor() {
@@ -101,10 +250,10 @@ class ClearBitIconComponent {
101
250
  this.clearBitSrc = this.dummyPath;
102
251
  }
103
252
  }
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ClearBitIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: ClearBitIconComponent, isStandalone: false, selector: "pw-clearbit-icon", inputs: { src: "src", altText: "altText", dummyPath: "dummyPath" }, usesOnChanges: true, ngImport: i0, template: "<img [src]=\"clearBitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"], dependencies: [{ kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ClearBitIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ClearBitIconComponent, isStandalone: false, selector: "pw-clearbit-icon", inputs: { src: "src", altText: "altText", dummyPath: "dummyPath" }, usesOnChanges: true, ngImport: i0, template: "<img [src]=\"clearBitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"], dependencies: [{ kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
106
255
  }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ClearBitIconComponent, decorators: [{
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ClearBitIconComponent, decorators: [{
108
257
  type: Component,
109
258
  args: [{ selector: 'pw-clearbit-icon', standalone: false, template: "<img [src]=\"clearBitSrc\"\n [alt]=\"altText\"\n class=\"img-fluid company-logo me-2 mt-1\" />\n", styles: [".company-logo{height:25px;width:25px}\n"] }]
110
259
  }], propDecorators: { src: [{
@@ -115,19 +264,314 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
115
264
  type: Input
116
265
  }] } });
117
266
 
267
+ /**
268
+ * CollapsibleSidebarService manages dynamic sidebar content
269
+ *
270
+ * This service allows any module to register, update, or remove sidebar content.
271
+ * It uses observables to notify components of state changes.
272
+ */
273
+ class CollapsibleSidebarService {
274
+ constructor() {
275
+ this.sidebarContentMap = new Map();
276
+ this.sidebarExpandedSubject = new BehaviorSubject(false);
277
+ this.sidebarContentSubject = new BehaviorSubject(null);
278
+ this.activeContentIdSubject = new BehaviorSubject(null);
279
+ /**
280
+ * Observable for sidebar expanded/collapsed state
281
+ */
282
+ this.sidebarExpanded$ = this.sidebarExpandedSubject.asObservable();
283
+ /**
284
+ * Observable for current sidebar content
285
+ */
286
+ this.sidebarContent$ = this.sidebarContentSubject.asObservable();
287
+ /**
288
+ * Observable for currently active content ID
289
+ */
290
+ this.activeContentId$ = this.activeContentIdSubject.asObservable();
291
+ }
292
+ /**
293
+ * Register sidebar content that can be triggered by a module
294
+ * @param content - The sidebar content configuration
295
+ */
296
+ registerContent(content) {
297
+ this.sidebarContentMap.set(content.id, content);
298
+ }
299
+ /**
300
+ * Unregister sidebar content
301
+ * @param contentId - The ID of the content to remove
302
+ */
303
+ unregisterContent(contentId) {
304
+ this.sidebarContentMap.delete(contentId);
305
+ // If the removed content was active, clear it
306
+ if (this.activeContentIdSubject.value === contentId) {
307
+ this.activeContentIdSubject.next(null);
308
+ this.sidebarContentSubject.next(null);
309
+ }
310
+ }
311
+ /**
312
+ * Load and display sidebar content by ID
313
+ * @param contentId - The ID of the content to load
314
+ */
315
+ loadContent(contentId) {
316
+ const content = this.sidebarContentMap.get(contentId);
317
+ if (!content) {
318
+ return;
319
+ }
320
+ this.activeContentIdSubject.next(contentId);
321
+ this.sidebarContentSubject.next(content);
322
+ this.sidebarExpandedSubject.next(true);
323
+ }
324
+ /**
325
+ * Toggle sidebar expanded/collapsed state
326
+ */
327
+ toggleSidebar() {
328
+ this.sidebarExpandedSubject.next(!this.sidebarExpandedSubject.value);
329
+ }
330
+ /**
331
+ * Expand the sidebar
332
+ */
333
+ expandSidebar() {
334
+ this.sidebarExpandedSubject.next(true);
335
+ }
336
+ /**
337
+ * Collapse the sidebar
338
+ */
339
+ collapseSidebar() {
340
+ this.sidebarExpandedSubject.next(false);
341
+ }
342
+ /**
343
+ * Get current expanded state synchronously
344
+ */
345
+ isExpanded() {
346
+ return this.sidebarExpandedSubject.value;
347
+ }
348
+ /**
349
+ * Get currently active content ID synchronously
350
+ */
351
+ getActiveContentId() {
352
+ return this.activeContentIdSubject.value;
353
+ }
354
+ /**
355
+ * Get all registered content IDs
356
+ */
357
+ getRegisteredContentIds() {
358
+ return Array.from(this.sidebarContentMap.keys());
359
+ }
360
+ /**
361
+ * Clear all sidebar content and collapse
362
+ */
363
+ clearAll() {
364
+ this.sidebarContentMap.clear();
365
+ this.activeContentIdSubject.next(null);
366
+ this.sidebarContentSubject.next(null);
367
+ this.sidebarExpandedSubject.next(false);
368
+ }
369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
370
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarService, providedIn: 'root' }); }
371
+ }
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarService, decorators: [{
373
+ type: Injectable,
374
+ args: [{
375
+ providedIn: 'root'
376
+ }]
377
+ }] });
378
+
379
+ /**
380
+ * CollapsibleSidebarComponent
381
+ *
382
+ * Main sidebar container that displays dynamically loaded content.
383
+ * - Observes sidebar state from the service
384
+ * - Dynamically renders component content
385
+ * - Handles expand/collapse animations
386
+ * - Uses OnPush change detection for performance
387
+ */
388
+ class CollapsibleSidebarComponent {
389
+ constructor(sidebarService, injector, cdr) {
390
+ this.sidebarService = sidebarService;
391
+ this.injector = injector;
392
+ this.cdr = cdr;
393
+ /**
394
+ * When true, the drawer is a flex sibling of the page: main content shrinks (GitLab issue-board style).
395
+ * When false, the drawer is fixed over the viewport with a backdrop.
396
+ */
397
+ this.embedInLayout = false;
398
+ /**
399
+ * When false, width/transform transitions are off so the first paint after
400
+ * a full page load does not briefly animate or show border/shadow flash.
401
+ */
402
+ this.transitionReady = false;
403
+ this.isExpanded = false;
404
+ this.currentContent = null;
405
+ this.componentRef = null;
406
+ this.destroy$ = new Subject();
407
+ }
408
+ ngOnInit() {
409
+ // Subscribe to expanded state
410
+ this.sidebarService.sidebarExpanded$
411
+ .pipe(takeUntil(this.destroy$))
412
+ .subscribe(isExpanded => {
413
+ this.isExpanded = isExpanded;
414
+ this.cdr.markForCheck();
415
+ });
416
+ // Subscribe to content changes
417
+ this.sidebarService.sidebarContent$.pipe(takeUntil(this.destroy$)).subscribe(content => {
418
+ this.currentContent = content;
419
+ if (content) {
420
+ this.loadComponent(content);
421
+ }
422
+ else {
423
+ this.clearComponent();
424
+ }
425
+ this.cdr.markForCheck();
426
+ });
427
+ }
428
+ ngAfterViewInit() {
429
+ // Double rAF: wait until after layout so we do not trigger transitions from mount → closed.
430
+ requestAnimationFrame(() => {
431
+ requestAnimationFrame(() => {
432
+ this.transitionReady = true;
433
+ this.cdr.markForCheck();
434
+ });
435
+ });
436
+ }
437
+ ngOnDestroy() {
438
+ this.destroy$.next();
439
+ this.destroy$.complete();
440
+ this.clearComponent();
441
+ }
442
+ /**
443
+ * Load and render dynamic component based on sidebar content
444
+ */
445
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
446
+ loadComponent(content) {
447
+ this.clearComponent();
448
+ if (!this.contentContainer) {
449
+ console.warn('Content container not found');
450
+ return;
451
+ }
452
+ // Check if component is null or undefined
453
+ if (!content.component) {
454
+ console.warn('No component provided for sidebar content:', content.id);
455
+ return;
456
+ }
457
+ // Create component dynamically
458
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
459
+ const componentRef = this.contentContainer.createComponent(content.component, {
460
+ injector: this.injector
461
+ });
462
+ // Set inputs if data provided
463
+ if (content.data) {
464
+ Object.assign(componentRef.instance, content.data);
465
+ }
466
+ this.componentRef = componentRef;
467
+ }
468
+ /**
469
+ * Clear the currently rendered component
470
+ */
471
+ clearComponent() {
472
+ if (this.componentRef) {
473
+ this.componentRef.destroy();
474
+ this.componentRef = null;
475
+ }
476
+ if (this.contentContainer) {
477
+ this.contentContainer.clear();
478
+ }
479
+ }
480
+ /**
481
+ * Close the sidebar
482
+ */
483
+ closeSidebar() {
484
+ this.sidebarService.collapseSidebar();
485
+ }
486
+ /**
487
+ * Toggle sidebar expanded/collapsed state
488
+ */
489
+ toggleSidebar() {
490
+ this.sidebarService.toggleSidebar();
491
+ }
492
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarComponent, deps: [{ token: CollapsibleSidebarService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: CollapsibleSidebarComponent, isStandalone: false, selector: "pw-collapsible-sidebar", inputs: { embedInLayout: ["embedInLayout", "embedInLayout", booleanAttribute] }, viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\n class=\"pw-collapsible-sidebar-host\"\n [class.pw-collapsible-sidebar-host--embedded]=\"embedInLayout\"\n [class.pw-collapsible-sidebar-host--transition-ready]=\"transitionReady\"\n>\n @if (isExpanded && !embedInLayout) {\n <button\n type=\"button\"\n class=\"pw-collapsible-sidebar-backdrop\"\n aria-label=\"Close side panel\"\n (click)=\"closeSidebar()\"\n ></button>\n }\n\n <aside\n class=\"pw-collapsible-sidebar\"\n [class.expanded]=\"isExpanded\"\n [attr.aria-hidden]=\"!isExpanded\"\n >\n <div class=\"sidebar-header\">\n <h2 class=\"sidebar-title\">{{ currentContent?.title ?? 'Details' }}</h2>\n <button\n type=\"button\"\n class=\"close-btn\"\n aria-label=\"Close sidebar\"\n (click)=\"closeSidebar()\"\n >\n <i class=\"pi pi-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div class=\"sidebar-content\">\n <div #contentContainer></div>\n </div>\n </aside>\n</div>\n", styles: ["@charset \"UTF-8\";.pw-collapsible-sidebar-host{position:relative}.pw-collapsible-sidebar-backdrop{position:fixed;inset:0;z-index:1040;margin:0;padding:0;border:none;cursor:default;appearance:none;background:#1f1e240f;animation:pw-drawer-backdrop-in .2s ease-out both}@keyframes pw-drawer-backdrop-in{0%{opacity:0}to{opacity:1}}.pw-collapsible-sidebar-host:not(.pw-collapsible-sidebar-host--transition-ready) .pw-collapsible-sidebar{transition:none!important}.pw-collapsible-sidebar{--pw-drawer-width: min(480px, max(300px, 40vw));--pw-drawer-radius: 10px;position:fixed;top:var(--pw-collapsible-sidebar-top, 60px);right:0;bottom:0;width:var(--pw-drawer-width);max-width:100%;height:calc(100dvh - var(--pw-collapsible-sidebar-top, 60px));background-color:#fff;border-left:1px solid #dbdbdb;border-top-left-radius:var(--pw-drawer-radius);border-bottom-left-radius:var(--pw-drawer-radius);box-shadow:none;display:flex;flex-direction:column;z-index:1050;overflow:hidden;pointer-events:none;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);will-change:transform}.pw-collapsible-sidebar.expanded{transform:translate(0);pointer-events:auto;transition:transform .55s cubic-bezier(.16,1,.3,1)}.pw-collapsible-sidebar .sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:12px;box-sizing:border-box;height:48px;padding:0 12px 0 16px;flex-shrink:0;position:relative;background:var(--tabs_bg, #0d6efd);border-bottom:1px solid rgba(255,255,255,.16)}.pw-collapsible-sidebar .sidebar-header:after{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,#ffffff24,#fff0 70%);pointer-events:none}.pw-collapsible-sidebar .sidebar-header .sidebar-title{display:block;margin:0;padding:0;font-size:14px;line-height:1.3;font-weight:400;color:var(--tabs_text, #fff)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;align-self:center;position:relative;z-index:1}.pw-collapsible-sidebar .sidebar-header h2.sidebar-title{margin:0!important}.pw-collapsible-sidebar .sidebar-header .close-btn{position:relative;z-index:1;background:#ffffff1f;border:none;cursor:pointer;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--tabs_text);font-size:14px;border-radius:8px;flex-shrink:0;transition:background-color .16s ease,transform .16s ease}.pw-collapsible-sidebar .sidebar-header .close-btn i{line-height:1;display:block}.pw-collapsible-sidebar .sidebar-header .close-btn:hover{background-color:#ffffff2e}.pw-collapsible-sidebar .sidebar-header .close-btn:active{background-color:#ffffff38}.pw-collapsible-sidebar .sidebar-header .close-btn:focus-visible{outline:2px solid var(--tabs_text);outline-offset:2px}.pw-collapsible-sidebar .sidebar-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 24px 24px;background:#fff;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar{width:8px}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar-track{background:transparent}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar-thumb{background-color:#0003;border-radius:4px}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar-thumb:hover{background-color:#00000059}@media(max-width:768px){.pw-collapsible-sidebar{--pw-drawer-width: 100%;border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded{flex:0 0 0;width:0;min-width:0;height:0;min-height:0;overflow:visible;pointer-events:none;position:relative}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar{--pw-drawer-width: max(300px, min(480px, 32vw));position:fixed;top:var(--pw-collapsible-sidebar-top, 85px);right:0;left:auto;bottom:auto;height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));max-height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));width:0;min-width:0;max-width:min(480px,90vw);transform:none;transition:width .3s cubic-bezier(.4,0,.2,1);z-index:1036;pointer-events:none;will-change:width;border-left:2px solid rgba(0,0,0,.14);border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--pw-drawer-radius);border-bottom-left-radius:var(--pw-drawer-radius);box-shadow:inset 1px 0 #ffffff8c,-10px 0 40px #0000001f;display:flex;flex-direction:column}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar:not(.expanded){border-left:none;box-shadow:none}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar .sidebar-header{flex-shrink:0;z-index:2}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar .sidebar-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:#f6f8fa;border-top:1px solid rgba(0,0,0,.08)}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar.expanded{width:var(--pw-drawer-width);min-width:var(--pw-drawer-width);pointer-events:auto;transition:width .55s cubic-bezier(.16,1,.3,1)}@media(max-width:768px){.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar{top:var(--pw-collapsible-sidebar-top, 85px);height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));max-height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));max-width:100%;border-top-left-radius:0;border-bottom-left-radius:0;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar.expanded{width:100%!important;min-width:100%!important;transform:translate(0);transition:transform .55s cubic-bezier(.16,1,.3,1)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
494
+ }
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarComponent, decorators: [{
496
+ type: Component,
497
+ args: [{ selector: 'pw-collapsible-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"pw-collapsible-sidebar-host\"\n [class.pw-collapsible-sidebar-host--embedded]=\"embedInLayout\"\n [class.pw-collapsible-sidebar-host--transition-ready]=\"transitionReady\"\n>\n @if (isExpanded && !embedInLayout) {\n <button\n type=\"button\"\n class=\"pw-collapsible-sidebar-backdrop\"\n aria-label=\"Close side panel\"\n (click)=\"closeSidebar()\"\n ></button>\n }\n\n <aside\n class=\"pw-collapsible-sidebar\"\n [class.expanded]=\"isExpanded\"\n [attr.aria-hidden]=\"!isExpanded\"\n >\n <div class=\"sidebar-header\">\n <h2 class=\"sidebar-title\">{{ currentContent?.title ?? 'Details' }}</h2>\n <button\n type=\"button\"\n class=\"close-btn\"\n aria-label=\"Close sidebar\"\n (click)=\"closeSidebar()\"\n >\n <i class=\"pi pi-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div class=\"sidebar-content\">\n <div #contentContainer></div>\n </div>\n </aside>\n</div>\n", styles: ["@charset \"UTF-8\";.pw-collapsible-sidebar-host{position:relative}.pw-collapsible-sidebar-backdrop{position:fixed;inset:0;z-index:1040;margin:0;padding:0;border:none;cursor:default;appearance:none;background:#1f1e240f;animation:pw-drawer-backdrop-in .2s ease-out both}@keyframes pw-drawer-backdrop-in{0%{opacity:0}to{opacity:1}}.pw-collapsible-sidebar-host:not(.pw-collapsible-sidebar-host--transition-ready) .pw-collapsible-sidebar{transition:none!important}.pw-collapsible-sidebar{--pw-drawer-width: min(480px, max(300px, 40vw));--pw-drawer-radius: 10px;position:fixed;top:var(--pw-collapsible-sidebar-top, 60px);right:0;bottom:0;width:var(--pw-drawer-width);max-width:100%;height:calc(100dvh - var(--pw-collapsible-sidebar-top, 60px));background-color:#fff;border-left:1px solid #dbdbdb;border-top-left-radius:var(--pw-drawer-radius);border-bottom-left-radius:var(--pw-drawer-radius);box-shadow:none;display:flex;flex-direction:column;z-index:1050;overflow:hidden;pointer-events:none;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);will-change:transform}.pw-collapsible-sidebar.expanded{transform:translate(0);pointer-events:auto;transition:transform .55s cubic-bezier(.16,1,.3,1)}.pw-collapsible-sidebar .sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:12px;box-sizing:border-box;height:48px;padding:0 12px 0 16px;flex-shrink:0;position:relative;background:var(--tabs_bg, #0d6efd);border-bottom:1px solid rgba(255,255,255,.16)}.pw-collapsible-sidebar .sidebar-header:after{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,#ffffff24,#fff0 70%);pointer-events:none}.pw-collapsible-sidebar .sidebar-header .sidebar-title{display:block;margin:0;padding:0;font-size:14px;line-height:1.3;font-weight:400;color:var(--tabs_text, #fff)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;align-self:center;position:relative;z-index:1}.pw-collapsible-sidebar .sidebar-header h2.sidebar-title{margin:0!important}.pw-collapsible-sidebar .sidebar-header .close-btn{position:relative;z-index:1;background:#ffffff1f;border:none;cursor:pointer;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--tabs_text);font-size:14px;border-radius:8px;flex-shrink:0;transition:background-color .16s ease,transform .16s ease}.pw-collapsible-sidebar .sidebar-header .close-btn i{line-height:1;display:block}.pw-collapsible-sidebar .sidebar-header .close-btn:hover{background-color:#ffffff2e}.pw-collapsible-sidebar .sidebar-header .close-btn:active{background-color:#ffffff38}.pw-collapsible-sidebar .sidebar-header .close-btn:focus-visible{outline:2px solid var(--tabs_text);outline-offset:2px}.pw-collapsible-sidebar .sidebar-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 24px 24px;background:#fff;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar{width:8px}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar-track{background:transparent}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar-thumb{background-color:#0003;border-radius:4px}.pw-collapsible-sidebar .sidebar-content::-webkit-scrollbar-thumb:hover{background-color:#00000059}@media(max-width:768px){.pw-collapsible-sidebar{--pw-drawer-width: 100%;border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded{flex:0 0 0;width:0;min-width:0;height:0;min-height:0;overflow:visible;pointer-events:none;position:relative}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar{--pw-drawer-width: max(300px, min(480px, 32vw));position:fixed;top:var(--pw-collapsible-sidebar-top, 85px);right:0;left:auto;bottom:auto;height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));max-height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));width:0;min-width:0;max-width:min(480px,90vw);transform:none;transition:width .3s cubic-bezier(.4,0,.2,1);z-index:1036;pointer-events:none;will-change:width;border-left:2px solid rgba(0,0,0,.14);border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--pw-drawer-radius);border-bottom-left-radius:var(--pw-drawer-radius);box-shadow:inset 1px 0 #ffffff8c,-10px 0 40px #0000001f;display:flex;flex-direction:column}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar:not(.expanded){border-left:none;box-shadow:none}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar .sidebar-header{flex-shrink:0;z-index:2}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar .sidebar-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:#f6f8fa;border-top:1px solid rgba(0,0,0,.08)}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar.expanded{width:var(--pw-drawer-width);min-width:var(--pw-drawer-width);pointer-events:auto;transition:width .55s cubic-bezier(.16,1,.3,1)}@media(max-width:768px){.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar{top:var(--pw-collapsible-sidebar-top, 85px);height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));max-height:calc(100dvh - var(--pw-collapsible-sidebar-top, 85px));max-width:100%;border-top-left-radius:0;border-bottom-left-radius:0;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.pw-collapsible-sidebar-host.pw-collapsible-sidebar-host--embedded .pw-collapsible-sidebar.expanded{width:100%!important;min-width:100%!important;transform:translate(0);transition:transform .55s cubic-bezier(.16,1,.3,1)}}\n"] }]
498
+ }], ctorParameters: () => [{ type: CollapsibleSidebarService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { contentContainer: [{
499
+ type: ViewChild,
500
+ args: ['contentContainer', { read: ViewContainerRef }]
501
+ }], embedInLayout: [{
502
+ type: Input,
503
+ args: [{ transform: booleanAttribute }]
504
+ }] } });
505
+
506
+ /**
507
+ * pwCollapsibleSidebarTrigger
508
+ *
509
+ * Directive that makes an element a trigger for the collapsible sidebar.
510
+ * Useful for cog icons or buttons that should expand the sidebar when clicked.
511
+ *
512
+ * Usage:
513
+ * ```html
514
+ * <button pwCollapsibleSidebarTrigger [contentId]="'posiwise-brain'">
515
+ * <i class="pi pi-cog"></i>
516
+ * </button>
517
+ * ```
518
+ */
519
+ class CollapsibleSidebarTriggerDirective {
520
+ constructor(sidebarService) {
521
+ this.sidebarService = sidebarService;
522
+ /**
523
+ * The ID of the sidebar content to load when this trigger is clicked
524
+ */
525
+ this.contentId = '';
526
+ /**
527
+ * Optional tooltip text shown on hover
528
+ */
529
+ this.tooltipText = '';
530
+ }
531
+ /**
532
+ * Handle click event to load sidebar content
533
+ */
534
+ onClick(event) {
535
+ event.preventDefault();
536
+ event.stopPropagation();
537
+ if (this.contentId) {
538
+ this.sidebarService.loadContent(this.contentId);
539
+ }
540
+ else if (isDevMode()) {
541
+ console.warn('pwCollapsibleSidebarTrigger: contentId is required when using this directive.');
542
+ }
543
+ }
544
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarTriggerDirective, deps: [{ token: CollapsibleSidebarService }], target: i0.ɵɵFactoryTarget.Directive }); }
545
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: CollapsibleSidebarTriggerDirective, isStandalone: true, selector: "[pwCollapsibleSidebarTrigger]", inputs: { contentId: "contentId", tooltipText: "tooltipText" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
546
+ }
547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarTriggerDirective, decorators: [{
548
+ type: Directive,
549
+ args: [{
550
+ selector: '[pwCollapsibleSidebarTrigger]',
551
+ standalone: true
552
+ }]
553
+ }], ctorParameters: () => [{ type: CollapsibleSidebarService }], propDecorators: { contentId: [{
554
+ type: Input
555
+ }], tooltipText: [{
556
+ type: Input
557
+ }], onClick: [{
558
+ type: HostListener,
559
+ args: ['click', ['$event']]
560
+ }] } });
561
+
118
562
  class ComingSoonComponent {
119
563
  constructor() {
120
564
  this.message = 'Coming soon';
121
565
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ComingSoonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: ComingSoonComponent, isStandalone: false, selector: "pw-coming-soon", inputs: { message: "message" }, ngImport: i0, template: `
566
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ComingSoonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
567
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ComingSoonComponent, isStandalone: false, selector: "pw-coming-soon", inputs: { message: "message" }, ngImport: i0, template: `
124
568
  <div class="coming-soon">
125
569
  <h2 class="card-title">{{ message }}</h2>
126
570
  <p>... this section is under construction.</p>
127
571
  </div>
128
572
  `, isInline: true }); }
129
573
  }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ComingSoonComponent, decorators: [{
574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ComingSoonComponent, decorators: [{
131
575
  type: Component,
132
576
  args: [{
133
577
  selector: 'pw-coming-soon',
@@ -144,9 +588,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
144
588
  }] } });
145
589
 
146
590
  class HeaderComponent extends AppBaseComponent {
147
- constructor(injector, authService) {
591
+ constructor(injector, authService, cdr) {
148
592
  super(injector);
149
593
  this.authService = authService;
594
+ this.cdr = cdr;
150
595
  this.isMenuCollapsed = true;
151
596
  this.landing = false;
152
597
  this.logo = this.appConfig?.company?.logos?.main_contrast?.url;
@@ -155,6 +600,7 @@ class HeaderComponent extends AppBaseComponent {
155
600
  .pipe()
156
601
  .subscribe(res => {
157
602
  this.loggedIn = !!res;
603
+ this.cdr.markForCheck();
158
604
  });
159
605
  }
160
606
  navigateToLogin() {
@@ -163,13 +609,13 @@ class HeaderComponent extends AppBaseComponent {
163
609
  toggleMenu() {
164
610
  this.isMenuCollapsed = !this.isMenuCollapsed;
165
611
  }
166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Injector }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
167
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: HeaderComponent, isStandalone: false, 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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
612
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Injector }, { token: i1.AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
613
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: HeaderComponent, isStandalone: false, 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 @if (!loggedIn) {\n <li class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n }\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: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
168
614
  }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: HeaderComponent, decorators: [{
615
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: HeaderComponent, decorators: [{
170
616
  type: Component,
171
- args: [{ selector: 'pw-header', standalone: false, 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"] }]
172
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.AuthService }], propDecorators: { landing: [{
617
+ args: [{ selector: 'pw-header', standalone: false, 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 @if (!loggedIn) {\n <li class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n }\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"] }]
618
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.AuthService }, { type: i0.ChangeDetectorRef }], propDecorators: { landing: [{
173
619
  type: Input
174
620
  }] } });
175
621
 
@@ -183,17 +629,18 @@ class NoDataComponent {
183
629
  ngAfterContentInit() {
184
630
  this.isContentEmpty = !this.content?.nativeElement.innerHTML.trim();
185
631
  }
186
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: NoDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: NoDataComponent, isStandalone: false, selector: "pw-no-data", inputs: { message: "message", description: "description", withImage: "withImage" }, queries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
632
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NoDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
633
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: NoDataComponent, isStandalone: false, selector: "pw-no-data", inputs: { message: "message", description: "description", withImage: "withImage" }, queries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
188
634
  <div class="no-data" [ngClass]="{ 'has-content': !this.isContentEmpty }">
189
- <img
190
- *ngIf="withImage"
191
- src="/assets/img/icons/nothing_found.webp"
192
- class="nothing-found-image"
193
- alt="No data found"
194
- loading="lazy"
195
- fetchpriority="low"
196
- />
635
+ @if (withImage) {
636
+ <img
637
+ src="/assets/img/icons/nothing_found.webp"
638
+ class="nothing-found-image"
639
+ alt="No data found"
640
+ loading="lazy"
641
+ fetchpriority="low"
642
+ />
643
+ }
197
644
  <span
198
645
  class="h5 message"
199
646
  [ngClass]="{
@@ -203,23 +650,26 @@ class NoDataComponent {
203
650
  >
204
651
  {{ message || 'Nothing found' }}
205
652
  </span>
206
- <span *ngIf="description" class="pb-4">{{ description }}</span>
653
+ @if (description) {
654
+ <span class="pb-4">{{ description }}</span>
655
+ }
207
656
  <ng-content></ng-content>
208
657
  </div>
209
- `, 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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
658
+ `, 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: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
210
659
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: NoDataComponent, decorators: [{
660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NoDataComponent, decorators: [{
212
661
  type: Component,
213
662
  args: [{ selector: 'pw-no-data', template: `
214
663
  <div class="no-data" [ngClass]="{ 'has-content': !this.isContentEmpty }">
215
- <img
216
- *ngIf="withImage"
217
- src="/assets/img/icons/nothing_found.webp"
218
- class="nothing-found-image"
219
- alt="No data found"
220
- loading="lazy"
221
- fetchpriority="low"
222
- />
664
+ @if (withImage) {
665
+ <img
666
+ src="/assets/img/icons/nothing_found.webp"
667
+ class="nothing-found-image"
668
+ alt="No data found"
669
+ loading="lazy"
670
+ fetchpriority="low"
671
+ />
672
+ }
223
673
  <span
224
674
  class="h5 message"
225
675
  [ngClass]="{
@@ -229,7 +679,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
229
679
  >
230
680
  {{ message || 'Nothing found' }}
231
681
  </span>
232
- <span *ngIf="description" class="pb-4">{{ description }}</span>
682
+ @if (description) {
683
+ <span class="pb-4">{{ description }}</span>
684
+ }
233
685
  <ng-content></ng-content>
234
686
  </div>
235
687
  `, standalone: false, 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"] }]
@@ -245,11 +697,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
245
697
  }] } });
246
698
 
247
699
  class EntityGroupComponent extends AppBaseComponent {
248
- constructor(groupService, subscriptionService, modalService, injector) {
700
+ constructor(groupService, subscriptionService, modalService, injector, cdr) {
249
701
  super(injector);
250
702
  this.groupService = groupService;
251
703
  this.subscriptionService = subscriptionService;
252
704
  this.modalService = modalService;
705
+ this.cdr = cdr;
253
706
  this.subscriptionMembers = []; // Holds all the members
254
707
  this.subscribedMembers = []; // Holds all the members
255
708
  this.filteredMembers = []; // Populates in the autocomplete
@@ -264,16 +717,19 @@ class EntityGroupComponent extends AppBaseComponent {
264
717
  if (this.subscription?.id) {
265
718
  this.getSubscribedUsers();
266
719
  }
720
+ this.cdr.markForCheck();
267
721
  });
268
722
  this.route.params.subscribe(params => {
269
723
  this.entityId = Number(params['groupId']);
270
724
  this.getEntity();
725
+ this.cdr.markForCheck();
271
726
  });
272
727
  this.userStore().subscribe(user => {
273
728
  this.user = user;
274
729
  if (this.user) {
275
730
  this.userId = this.user.id;
276
731
  }
732
+ this.cdr.markForCheck();
277
733
  });
278
734
  this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;
279
735
  }
@@ -297,6 +753,7 @@ class EntityGroupComponent extends AppBaseComponent {
297
753
  member.displayName = `${member.first_name ?? ''} ${member.last_name ?? ''} ${member.email}`.trim();
298
754
  });
299
755
  this.subscriptionMembers = response.members;
756
+ this.cdr.markForCheck();
300
757
  });
301
758
  this.modalService.open(this.content, { centered: true, windowClass: 'modal-holder' });
302
759
  }
@@ -312,6 +769,7 @@ class EntityGroupComponent extends AppBaseComponent {
312
769
  this.isLoaded = true;
313
770
  this.subscribedMembers = response.members;
314
771
  this.selectedGroup = response;
772
+ this.cdr.markForCheck();
315
773
  });
316
774
  }
317
775
  onSave() {
@@ -327,6 +785,7 @@ class EntityGroupComponent extends AppBaseComponent {
327
785
  this.modalService.dismissAll();
328
786
  this.toast.success(this.translation.translate('Admin.Shared.Entity.AddedMessage'));
329
787
  this.getEntity();
788
+ this.cdr.markForCheck();
330
789
  });
331
790
  }
332
791
  getSubscribedUsers() {
@@ -343,6 +802,7 @@ class EntityGroupComponent extends AppBaseComponent {
343
802
  this.admins.includes(this.user?.id) ||
344
803
  this.user?.id === this.subscriptionOwner ||
345
804
  this.permissionService.isSuperAdmin();
805
+ this.cdr.markForCheck();
346
806
  });
347
807
  }
348
808
  onDelete(memberId) {
@@ -355,6 +815,7 @@ class EntityGroupComponent extends AppBaseComponent {
355
815
  .subscribe(() => {
356
816
  this.toast.success(this.translation.translate('Admin.Shared.Entity.DeletedMessage'));
357
817
  this.getEntity();
818
+ this.cdr.markForCheck();
358
819
  });
359
820
  }
360
821
  })
@@ -368,24 +829,25 @@ class EntityGroupComponent extends AppBaseComponent {
368
829
  ngOnDestroy() {
369
830
  super.ngOnDestroy();
370
831
  }
371
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: EntityGroupComponent, deps: [{ token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i3$2.NgbModal }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
372
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: EntityGroupComponent, isStandalone: false, 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$2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i6.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i3$1.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" }] }); }
832
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: EntityGroupComponent, deps: [{ token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i3$1.NgbModal }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
833
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: EntityGroupComponent, isStandalone: false, 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 @if (hasAccess) {\n <button\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 }\n @if (hasAccess) {\n <button\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 }\n </div>\n </div>\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\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 @if (member.id !== userId) {\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\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 }\n @if (hasAccess) {\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 >\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n @if (subscribedMembers?.length === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n >\n </pw-no-data>\n }\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 optionLabel=\"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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.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: i2.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.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "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", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "addOnTab", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "addOnBlur", "separator", "appendTo", "motionOptions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onAdd", "onFocus", "onBlur", "onDropdownClick", "onClear", "onInputKeydown", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
373
834
  }
374
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: EntityGroupComponent, decorators: [{
835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: EntityGroupComponent, decorators: [{
375
836
  type: Component,
376
- args: [{ selector: 'pw-entity-group', standalone: false, 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"] }]
377
- }], ctorParameters: () => [{ type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i3$2.NgbModal }, { type: i0.Injector }], propDecorators: { content: [{
837
+ args: [{ selector: 'pw-entity-group', standalone: false, 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 @if (hasAccess) {\n <button\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 }\n @if (hasAccess) {\n <button\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 }\n </div>\n </div>\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\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 @if (member.id !== userId) {\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\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 }\n @if (hasAccess) {\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 >\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n @if (subscribedMembers?.length === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n >\n </pw-no-data>\n }\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 optionLabel=\"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"] }]
838
+ }], ctorParameters: () => [{ type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i3$1.NgbModal }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
378
839
  type: ViewChild,
379
840
  args: ['content', { static: true }]
380
841
  }] } });
381
842
 
382
843
  class GroupDefinitionComponent extends AppBaseComponent {
383
- constructor(groupService, fb, subscriptionService, data, injector) {
844
+ constructor(groupService, fb, subscriptionService, data, injector, cdr) {
384
845
  super(injector);
385
846
  this.groupService = groupService;
386
847
  this.fb = fb;
387
848
  this.subscriptionService = subscriptionService;
388
849
  this.data = data;
850
+ this.cdr = cdr;
389
851
  this.subscriptions = [];
390
852
  this.admins = [];
391
853
  this.subscriptionInfo = [];
@@ -400,14 +862,17 @@ class GroupDefinitionComponent extends AppBaseComponent {
400
862
  ngOnInit() {
401
863
  this.getUserSubscriptionId().subscribe(id => {
402
864
  this.id = id;
865
+ this.cdr.markForCheck();
403
866
  });
404
867
  this.getAllGroupDefinition();
405
868
  this.getSubscribedUsers();
406
869
  this.userStore().subscribe(user => {
407
870
  this.user = user;
871
+ this.cdr.markForCheck();
408
872
  });
409
873
  this.data.currentMessage.subscribe(message => {
410
874
  this.message = message;
875
+ this.cdr.markForCheck();
411
876
  });
412
877
  }
413
878
  getAllGroupDefinition() {
@@ -420,9 +885,11 @@ class GroupDefinitionComponent extends AppBaseComponent {
420
885
  else {
421
886
  this.groupDefinition = [];
422
887
  }
888
+ this.cdr.markForCheck();
423
889
  })
424
890
  .add(() => {
425
891
  this.isLoaded = true;
892
+ this.cdr.markForCheck();
426
893
  });
427
894
  }
428
895
  getSubscribedUsers() {
@@ -437,6 +904,7 @@ class GroupDefinitionComponent extends AppBaseComponent {
437
904
  this.admins.includes(this.user?.id) ||
438
905
  this.user?.id === this.subscriptionOwner ||
439
906
  this.permissionService.isSuperAdmin();
907
+ this.cdr.markForCheck();
440
908
  });
441
909
  }
442
910
  updateDetails() {
@@ -454,9 +922,11 @@ class GroupDefinitionComponent extends AppBaseComponent {
454
922
  this.form.reset();
455
923
  this.viewDefinition = false;
456
924
  this.getAllGroupDefinition();
925
+ this.cdr.markForCheck();
457
926
  })
458
927
  .add(() => {
459
928
  this.categoryBusyButton = false;
929
+ this.cdr.markForCheck();
460
930
  });
461
931
  }
462
932
  onGroupDefinitionEdit(id) {
@@ -472,6 +942,7 @@ class GroupDefinitionComponent extends AppBaseComponent {
472
942
  description: this.groupDefinitionDetails.description,
473
943
  name: this.groupDefinitionDetails.name
474
944
  });
945
+ this.cdr.markForCheck();
475
946
  });
476
947
  }
477
948
  saveGroupDefinition() {
@@ -490,9 +961,11 @@ class GroupDefinitionComponent extends AppBaseComponent {
490
961
  this.form.reset();
491
962
  this.getAllGroupDefinition();
492
963
  this.viewDefinition = false;
964
+ this.cdr.markForCheck();
493
965
  })
494
966
  .add(() => {
495
967
  this.categoryBusyButton = false;
968
+ this.cdr.markForCheck();
496
969
  });
497
970
  }
498
971
  onDelete(id) {
@@ -507,6 +980,7 @@ class GroupDefinitionComponent extends AppBaseComponent {
507
980
  this.groupService.groupDefinitionsDelete(id).subscribe(_ => {
508
981
  this.toast.success(this.translation.translate('Admin.Shared.Definition.DeletedMessage'));
509
982
  this.getAllGroupDefinition();
983
+ this.cdr.markForCheck();
510
984
  });
511
985
  }
512
986
  });
@@ -526,8 +1000,8 @@ class GroupDefinitionComponent extends AppBaseComponent {
526
1000
  ngOnDestroy() {
527
1001
  super.ngOnDestroy();
528
1002
  }
529
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: GroupDefinitionComponent, deps: [{ token: i1.GroupService }, { token: i2.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
530
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: GroupDefinitionComponent, isStandalone: false, 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 <span id=\"group-definition-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-is_private-label'\"\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 <span id=\"group-definition-edit-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}: </span>\n <input type=\"text\"\n id=\"group-definition-edit-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-edit-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}:</span>\n <input type=\"text\"\n id=\"group-definition-edit-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-edit-is_private-label'\"\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, p-progress-spinner, 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$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.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$1.SlicePipe, name: "slice" }] }); }
1003
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GroupDefinitionComponent, deps: [{ token: i1.GroupService }, { token: i2$1.UntypedFormBuilder }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1004
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: GroupDefinitionComponent, isStandalone: false, 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 @if (!viewDefinition) {\n <div class=\"row\"\n >\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 @if (hasAccess) {\n <div class=\"col-6\"\n >\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 }\n </div>\n }\n\n @if (viewDefinition) {\n <div>\n <h4 class=\"card-title d-inline mb-5\">\n {{ viewEdit ? 'Update the' : 'Create a new' }} category\n </h4>\n @if (!viewEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"group-definition-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-is_private-label'\"\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 @if (viewEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"group-definition-edit-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}: </span>\n <input type=\"text\"\n id=\"group-definition-edit-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-edit-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}:</span>\n <input type=\"text\"\n id=\"group-definition-edit-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-edit-is_private-label'\"\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 }\n </div>\n }\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n\n @if (groupDefinition?.length !== 0) {\n @if (!viewDefinition) {\n <div class=\"row mb-last-3 group-definitions-wrapper\"\n >\n @for (group of groupDefinition; track group) {\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n >\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 @if (hasAccess) {\n <a class=\"btn btn-sm btn-outline-danger me-2\"\n (click)=\"onDelete(group.id)\">{{ 'Button.Delete' | transloco }}</a>\n }\n @if (hasAccess) {\n <a class=\"btn btn-sm btn-outline-primary me-2\"\n (click)=\"onGroupDefinitionEdit(group.id)\">{{ 'Button.Edit' | transloco }}</a>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n @if (groupDefinition?.length === 0 && hasAccess && !viewDefinition && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsMessage' | transloco\"> </pw-no-data>\n </div>\n }\n @if (groupDefinition?.length === 0 && !hasAccess && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsUserMessage' | transloco\"> </pw-no-data>\n </div>\n }\n </section>\n", styles: [".mb-last-3{margin-bottom:3rem}\n"], dependencies: [{ kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.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, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i5.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i7.SlicePipe, name: "slice" }] }); }
531
1005
  }
532
1006
  __decorate([
533
1007
  ValidateForm('form'),
@@ -535,18 +1009,19 @@ __decorate([
535
1009
  __metadata("design:paramtypes", []),
536
1010
  __metadata("design:returntype", void 0)
537
1011
  ], GroupDefinitionComponent.prototype, "saveGroupDefinition", null);
538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: GroupDefinitionComponent, decorators: [{
1012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GroupDefinitionComponent, decorators: [{
539
1013
  type: Component,
540
- args: [{ selector: 'pw-group-definition', standalone: false, 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 <span id=\"group-definition-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-is_private-label'\"\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 <span id=\"group-definition-edit-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}: </span>\n <input type=\"text\"\n id=\"group-definition-edit-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-edit-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}:</span>\n <input type=\"text\"\n id=\"group-definition-edit-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-edit-is_private-label'\"\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"] }]
541
- }], ctorParameters: () => [{ type: i1.GroupService }, { type: i2.UntypedFormBuilder }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }], propDecorators: { saveGroupDefinition: [] } });
1014
+ args: [{ selector: 'pw-group-definition', standalone: false, 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 @if (!viewDefinition) {\n <div class=\"row\"\n >\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 @if (hasAccess) {\n <div class=\"col-6\"\n >\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 }\n </div>\n }\n\n @if (viewDefinition) {\n <div>\n <h4 class=\"card-title d-inline mb-5\">\n {{ viewEdit ? 'Update the' : 'Create a new' }} category\n </h4>\n @if (!viewEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"group-definition-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"group-definition-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-is_private-label'\"\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 @if (viewEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"group-definition-edit-name-label\" class=\"pw-label-style\">{{ 'Label.Name' | transloco }}: </span>\n <input type=\"text\"\n id=\"group-definition-edit-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'group-definition-edit-name-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}:</span>\n <input type=\"text\"\n id=\"group-definition-edit-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'group-definition-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"group-definition-edit-is_private-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.IsPrivate' | transloco }}</span>\n <div class=\"display-block\">\n <ui-switch size=\"small\"\n [attr.aria-labelledby]=\"'group-definition-edit-is_private-label'\"\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 }\n </div>\n }\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n\n @if (groupDefinition?.length !== 0) {\n @if (!viewDefinition) {\n <div class=\"row mb-last-3 group-definitions-wrapper\"\n >\n @for (group of groupDefinition; track group) {\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n >\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 @if (hasAccess) {\n <a class=\"btn btn-sm btn-outline-danger me-2\"\n (click)=\"onDelete(group.id)\">{{ 'Button.Delete' | transloco }}</a>\n }\n @if (hasAccess) {\n <a class=\"btn btn-sm btn-outline-primary me-2\"\n (click)=\"onGroupDefinitionEdit(group.id)\">{{ 'Button.Edit' | transloco }}</a>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n @if (groupDefinition?.length === 0 && hasAccess && !viewDefinition && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsMessage' | transloco\"> </pw-no-data>\n </div>\n }\n @if (groupDefinition?.length === 0 && !hasAccess && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoLabelsUserMessage' | transloco\"> </pw-no-data>\n </div>\n }\n </section>\n", styles: [".mb-last-3{margin-bottom:3rem}\n"] }]
1015
+ }], ctorParameters: () => [{ type: i1.GroupService }, { type: i2$1.UntypedFormBuilder }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { saveGroupDefinition: [] } });
542
1016
 
543
1017
  class GroupsComponent extends AppBaseComponent {
544
- constructor(fb, groupService, subscriptionService, dataService, injector) {
1018
+ constructor(fb, groupService, subscriptionService, dataService, injector, cdr) {
545
1019
  super(injector);
546
1020
  this.fb = fb;
547
1021
  this.groupService = groupService;
548
1022
  this.subscriptionService = subscriptionService;
549
1023
  this.dataService = dataService;
1024
+ this.cdr = cdr;
550
1025
  this.groupsData = [];
551
1026
  this.allGroups = [];
552
1027
  this.groupDefinition = [];
@@ -565,6 +1040,7 @@ class GroupsComponent extends AppBaseComponent {
565
1040
  if (this.subscription?.id) {
566
1041
  this.id = this.subscription?.id;
567
1042
  }
1043
+ this.cdr.markForCheck();
568
1044
  });
569
1045
  this.form = this.fb.group({
570
1046
  name: new UntypedFormControl('', [Validators.required]),
@@ -575,12 +1051,14 @@ class GroupsComponent extends AppBaseComponent {
575
1051
  ngOnInit() {
576
1052
  this.dataService.currentMessage.subscribe(message => {
577
1053
  this.message = message;
1054
+ this.cdr.markForCheck();
578
1055
  });
579
1056
  this.userStore().subscribe(user => {
580
1057
  if (user) {
581
1058
  this.user = user;
582
1059
  this.getSubscribedUsers();
583
1060
  }
1061
+ this.cdr.markForCheck();
584
1062
  });
585
1063
  this.getAllGroupDefinition();
586
1064
  }
@@ -603,10 +1081,12 @@ class GroupsComponent extends AppBaseComponent {
603
1081
  this.form.reset();
604
1082
  this.getAllGroupDefinition();
605
1083
  this.isGroupOperations = false;
1084
+ this.cdr.markForCheck();
606
1085
  })
607
1086
  .add(() => {
608
1087
  this.submitted = false;
609
1088
  this.buttonBusy = false;
1089
+ this.cdr.markForCheck();
610
1090
  });
611
1091
  }
612
1092
  getAllGroupDefinition() {
@@ -631,6 +1111,7 @@ class GroupsComponent extends AppBaseComponent {
631
1111
  else {
632
1112
  this.groupDefinition = [];
633
1113
  }
1114
+ this.cdr.markForCheck();
634
1115
  });
635
1116
  }
636
1117
  getSubscribedUsers() {
@@ -648,8 +1129,10 @@ class GroupsComponent extends AppBaseComponent {
648
1129
  this.admins.includes(this.user?.id) ||
649
1130
  this.user?.id === this.subscriptionOwner ||
650
1131
  this.permissionService.isSuperAdmin();
1132
+ this.cdr.markForCheck();
651
1133
  });
652
1134
  }
1135
+ this.cdr.markForCheck();
653
1136
  });
654
1137
  }
655
1138
  groupOperation() {
@@ -677,6 +1160,7 @@ class GroupsComponent extends AppBaseComponent {
677
1160
  description: response.description,
678
1161
  group_definition_id: response.group_definition_id
679
1162
  });
1163
+ this.cdr.markForCheck();
680
1164
  });
681
1165
  }
682
1166
  updateDetails() {
@@ -694,9 +1178,11 @@ class GroupsComponent extends AppBaseComponent {
694
1178
  this.form.reset();
695
1179
  this.getAllGroupDefinition();
696
1180
  this.isGroupOperations = false;
1181
+ this.cdr.markForCheck();
697
1182
  })
698
1183
  .add(() => {
699
1184
  this.buttonBusy = false;
1185
+ this.cdr.markForCheck();
700
1186
  });
701
1187
  }
702
1188
  onDelete(id) {
@@ -712,6 +1198,7 @@ class GroupsComponent extends AppBaseComponent {
712
1198
  this.toast.success(this.translation.translate('Admin.Shared.Groups.DeletedMessage'));
713
1199
  this.isGroupOperations = false;
714
1200
  this.getAllGroupDefinition();
1201
+ this.cdr.markForCheck();
715
1202
  });
716
1203
  }
717
1204
  });
@@ -745,8 +1232,8 @@ class GroupsComponent extends AppBaseComponent {
745
1232
  ngOnDestroy() {
746
1233
  super.ngOnDestroy();
747
1234
  }
748
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: GroupsComponent, deps: [{ token: i2.UntypedFormBuilder }, { token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
749
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: GroupsComponent, isStandalone: false, 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 <span id=\"groups-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'groups-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'groups-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-teamCategory-label'\"\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-select>\n </div>\n </div>\n\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n (click)=\"isGroupOperations = !isGroupOperations\"\n class=\"btn btn-outline-default me-2\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">Add</button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Edit Group Template -->\n <div class=\"mt-4\"\n *ngIf=\"isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-description\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-edit-teamCategory-label'\"\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-select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-4 mt-2 filter\">\n <p-select\n [options]=\"domainGroupDefinition\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [ngModel]=\"'0'\"\n (onChange)=\"filterDomainsList($event.value)\">\n </p-select>\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.Select, selector: "p-select", 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", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.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$1.SlicePipe, name: "slice" }] }); }
1235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GroupsComponent, deps: [{ token: i2$1.UntypedFormBuilder }, { token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i1.DataService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: GroupsComponent, isStandalone: false, 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 @if (!isGroupOperations) {\n <div class=\"row\"\n >\n <div class=\"col-12 d-flex justify-content-end align-items-center text-end mb-3\">\n @if (hasAccess) {\n <button\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 }\n @if (hasAccess) {\n <button\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 }\n </div>\n </div>\n }\n\n <!-- Add Group Template -->\n @if (isGroupOperations) {\n <div\n class=\"mb-4\">\n <h4 class=\"card-title d-inline\">{{ viewEdit ? 'Update the' : 'Create a new' }} team</h4>\n @if (!isGroupEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"groups-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'groups-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'groups-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-teamCategory-label'\"\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-select>\n </div>\n </div>\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 @if (isGroupEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"groups-edit-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-description\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-edit-teamCategory-label'\"\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-select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n }\n </div>\n }\n\n @if (!isGroupOperations) {\n <div class=\"row\"\n >\n <div class=\"col-4 mt-2 filter\">\n <p-select\n [options]=\"domainGroupDefinition\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [ngModel]=\"'0'\"\n (onChange)=\"filterDomainsList($event.value)\">\n </p-select>\n </div>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (!isGroupOperations) {\n <div class=\"row group_list my-4\"\n >\n @for (group of allGroups; track trackByGroup($index, group)) {\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n >\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 @if (hasAccess) {\n <a class=\"me-2 my-1\"\n aria-label=\"Delete\"\n (click)=\"onDelete(group.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i></a>\n }\n @if (hasAccess) {\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Group\"\n (click)=\"editGroup(group.id)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n }\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 }\n </div>\n }\n </section>\n </div>\n @if (allGroups?.length === 0 && hasAccess && !isGroupOperations && isLoaded) {\n <div\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessage' | transloco\"> </pw-no-data>\n </div>\n }\n @if (allGroups?.length === 0 && !hasAccess && !isGroupOperations && isLoaded) {\n <div\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessageIfUser' | transloco\"> </pw-no-data>\n </div>\n }\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$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5$1.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i7.SlicePipe, name: "slice" }] }); }
750
1237
  }
751
1238
  __decorate([
752
1239
  ValidateForm('form'),
@@ -754,14 +1241,15 @@ __decorate([
754
1241
  __metadata("design:paramtypes", []),
755
1242
  __metadata("design:returntype", void 0)
756
1243
  ], GroupsComponent.prototype, "saveGroup", null);
757
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: GroupsComponent, decorators: [{
1244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GroupsComponent, decorators: [{
758
1245
  type: Component,
759
- args: [{ selector: 'pw-groups', standalone: false, 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 <span id=\"groups-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'groups-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'groups-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-teamCategory-label'\"\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-select>\n </div>\n </div>\n\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n (click)=\"isGroupOperations = !isGroupOperations\"\n class=\"btn btn-outline-default me-2\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">Add</button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Edit Group Template -->\n <div class=\"mt-4\"\n *ngIf=\"isGroupEdit\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"updateDetails()\">\n <div class=\"row\">\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-description\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-edit-teamCategory-label'\"\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-select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"row\"\n *ngIf=\"!isGroupOperations\">\n <div class=\"col-4 mt-2 filter\">\n <p-select\n [options]=\"domainGroupDefinition\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [ngModel]=\"'0'\"\n (onChange)=\"filterDomainsList($event.value)\">\n </p-select>\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"] }]
760
- }], ctorParameters: () => [{ type: i2.UntypedFormBuilder }, { type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }], propDecorators: { saveGroup: [] } });
1246
+ args: [{ selector: 'pw-groups', standalone: false, 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 @if (!isGroupOperations) {\n <div class=\"row\"\n >\n <div class=\"col-12 d-flex justify-content-end align-items-center text-end mb-3\">\n @if (hasAccess) {\n <button\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 }\n @if (hasAccess) {\n <button\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 }\n </div>\n </div>\n }\n\n <!-- Add Group Template -->\n @if (isGroupOperations) {\n <div\n class=\"mb-4\">\n <h4 class=\"card-title d-inline\">{{ viewEdit ? 'Update the' : 'Create a new' }} team</h4>\n @if (!isGroupEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"groups-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"'groups-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.Description' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-description\"\n class=\"form-control\"\n formControlName=\"description\"\n [attr.aria-labelledby]=\"'groups-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-teamCategory-label'\"\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-select>\n </div>\n </div>\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 @if (isGroupEdit) {\n <div class=\"mt-4\"\n >\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 <span id=\"groups-edit-teamName-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamName' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-teamName\"\n class=\"form-control\"\n formControlName=\"name\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-teamName-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-description-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamDescription' | transloco }}</span>\n <input type=\"text\"\n id=\"groups-edit-description\"\n value=\"{{ description }}\"\n class=\"form-control\"\n formControlName=\"description\"\n required=\"true\"\n [attr.aria-labelledby]=\"'groups-edit-description-label'\" />\n </div>\n <div class=\"mb-3 col-xs-12 col-sm-6 col-md-3\">\n <span id=\"groups-edit-teamCategory-label\" class=\"pw-label-style\">{{ 'Enterprise.Teams.TeamCategory' | transloco\n }}<span class=\"text-danger required-icon\">*</span>\n </span>\n <p-select\n [attr.aria-labelledby]=\"'groups-edit-teamCategory-label'\"\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-select>\n </div>\n </div>\n <div class=\"row text-end mt-4\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"cancelUpdate()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Update' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n }\n </div>\n }\n\n @if (!isGroupOperations) {\n <div class=\"row\"\n >\n <div class=\"col-4 mt-2 filter\">\n <p-select\n [options]=\"domainGroupDefinition\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [ngModel]=\"'0'\"\n (onChange)=\"filterDomainsList($event.value)\">\n </p-select>\n </div>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (!isGroupOperations) {\n <div class=\"row group_list my-4\"\n >\n @for (group of allGroups; track trackByGroup($index, group)) {\n <div class=\"col-12 col-md-6 col-xl-4 mt-3\"\n >\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 @if (hasAccess) {\n <a class=\"me-2 my-1\"\n aria-label=\"Delete\"\n (click)=\"onDelete(group.id)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i></a>\n }\n @if (hasAccess) {\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Group\"\n (click)=\"editGroup(group.id)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n }\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 }\n </div>\n }\n </section>\n </div>\n @if (allGroups?.length === 0 && hasAccess && !isGroupOperations && isLoaded) {\n <div\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessage' | transloco\"> </pw-no-data>\n </div>\n }\n @if (allGroups?.length === 0 && !hasAccess && !isGroupOperations && isLoaded) {\n <div\n class=\"clear-both\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Teams.NoTeamMessageIfUser' | transloco\"> </pw-no-data>\n </div>\n }\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"] }]
1247
+ }], ctorParameters: () => [{ type: i2$1.UntypedFormBuilder }, { type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i1.DataService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { saveGroup: [] } });
761
1248
 
762
1249
  class LandingPageFooterBComponent {
763
- constructor(authService) {
1250
+ constructor(authService, cdr) {
764
1251
  this.authService = authService;
1252
+ this.cdr = cdr;
765
1253
  this.currentDate = new Date();
766
1254
  }
767
1255
  ngOnInit() {
@@ -769,6 +1257,7 @@ class LandingPageFooterBComponent {
769
1257
  if (platform === 'browser') {
770
1258
  this.isBrowserAccess = true;
771
1259
  }
1260
+ this.cdr.markForCheck();
772
1261
  });
773
1262
  }
774
1263
  scrollToTop(event) {
@@ -777,13 +1266,13 @@ class LandingPageFooterBComponent {
777
1266
  return;
778
1267
  window.scrollTo({ top: 0, behavior: 'smooth' });
779
1268
  }
780
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: LandingPageFooterBComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
781
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: LandingPageFooterBComponent, isStandalone: false, selector: "pw-landing-page-footer-b", ngImport: i0, template: "<a href=\"#\"\n aria-label=\"Up\"\n id=\"return-to-top\"\n (click)=\"scrollToTop($event)\">\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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$1.DatePipe, name: "date" }] }); }
1269
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: LandingPageFooterBComponent, deps: [{ token: i1.AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: LandingPageFooterBComponent, isStandalone: false, selector: "pw-landing-page-footer-b", ngImport: i0, template: "<a href=\"#\"\n aria-label=\"Up\"\n id=\"return-to-top\"\n (click)=\"scrollToTop($event)\">\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 @if (isBrowserAccess) {\n <div>\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 }\n <div class=\"my-2\">\n <span>\n <a class=\"white\"\n href=\"https://www.linkedin.com/company/posiwise\"\n target=\"blank\">\n Linkedin |</a>\n <a class=\"white\"\n href=\"https://www.facebook.com/posiwise\"\n target=\"blank\"> Facebook |</a>\n <a class=\"white\"\n href=\"https://twitter.com/posiwise\"\n target=\"blank\"> Twitter</a>\n </span>\n </div>\n <p class=\"text-center text-white mb-0 mt-2\">\n Copyright &copy; {{ currentDate | date: 'yyyy' }} PosiWise. All rights reserved.\n </p>\n</footer>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.footer-block{background:#ecf5fc url(/assets/img/landing-page/footer-bg.png) center top no-repeat;background-size:cover;float:left;padding:183px 0 81px;text-align:center;width:100%}.footer-block h6{color:#f0f8fe!important;font-size:72px;font-weight:900}@media screen and (max-width:991px){.footer-block h6{font-size:45px}}@media screen and (max-width:575px){.footer-block{padding:96px 0 30px}.footer-block h6{font-size:30px}}\n"], dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i7.DatePipe, name: "date" }] }); }
782
1271
  }
783
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: LandingPageFooterBComponent, decorators: [{
1272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: LandingPageFooterBComponent, decorators: [{
784
1273
  type: Component,
785
- args: [{ selector: 'pw-landing-page-footer-b', standalone: false, template: "<a href=\"#\"\n aria-label=\"Up\"\n id=\"return-to-top\"\n (click)=\"scrollToTop($event)\">\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"] }]
786
- }], ctorParameters: () => [{ type: i1.AuthService }] });
1274
+ args: [{ selector: 'pw-landing-page-footer-b', standalone: false, template: "<a href=\"#\"\n aria-label=\"Up\"\n id=\"return-to-top\"\n (click)=\"scrollToTop($event)\">\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 @if (isBrowserAccess) {\n <div>\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 }\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"] }]
1275
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i0.ChangeDetectorRef }] });
787
1276
 
788
1277
  class NumberPickerComponent {
789
1278
  constructor(numberPickerService) {
@@ -1018,12 +1507,12 @@ class NumberPickerComponent {
1018
1507
  this.value = this.round(this.value);
1019
1508
  this.placeholder = this.placeholder ?? '';
1020
1509
  }
1021
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: NumberPickerComponent, deps: [{ token: i1.NumberPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
1022
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: NumberPickerComponent, isStandalone: false, 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", inputId: "inputId" }, 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 [attr.id]=\"inputId\"\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\" id=\"input_value_1\"/>\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$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
1510
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NumberPickerComponent, deps: [{ token: i1.NumberPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
1511
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: NumberPickerComponent, isStandalone: false, 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", inputId: "inputId" }, 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 @if (isHorizontal() && showDownButton) {\n <span\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 }\n <!-- Input prefix -->\n @if (prefix) {\n <span\n class=\"input-group-text {{ customClass.prefix }}\">{{ prefix }}\n </span>\n }\n <input type=\"number\"\n class=\"form-control\"\n [attr.id]=\"inputId\"\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 @if (postfix) {\n <span\n class=\"input-group-text {{ customClass.postfix }}\"\n [style.borderLeft]=\"'0'\">{{postfix}}\n @if (showTooltip && tooltipText) {\n <span class=\"tooltip-wrap ms-1\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n }\n </span>\n }\n\n <!-- Horizontal increase button orientation -->\n @if (isHorizontal() && showUpButton) {\n <span\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 }\n <!-- Vertical buttons orientation -->\n @if (!isHorizontal()) {\n <span\n class=\"input-group-text vertical p-0\">\n @if (showUpButton) {\n <span\n class=\"{{ customClass.up }}\"\n (click)=\"onIncrease($event)\"\n (keydown.enter)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n }\n @if (showDownButton) {\n <span\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 }\n </span>\n }\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$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] }); }
1023
1512
  }
1024
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: NumberPickerComponent, decorators: [{
1513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: NumberPickerComponent, decorators: [{
1025
1514
  type: Component,
1026
- args: [{ selector: 'pw-number-picker', standalone: false, 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 [attr.id]=\"inputId\"\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\" id=\"input_value_1\"/>\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"] }]
1515
+ args: [{ selector: 'pw-number-picker', standalone: false, template: "<div class=\"input-group mb-3 input-{{ size }} {{ customClass.container }}\">\n <!-- Horizontal decrease button orientation -->\n @if (isHorizontal() && showDownButton) {\n <span\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 }\n <!-- Input prefix -->\n @if (prefix) {\n <span\n class=\"input-group-text {{ customClass.prefix }}\">{{ prefix }}\n </span>\n }\n <input type=\"number\"\n class=\"form-control\"\n [attr.id]=\"inputId\"\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 @if (postfix) {\n <span\n class=\"input-group-text {{ customClass.postfix }}\"\n [style.borderLeft]=\"'0'\">{{postfix}}\n @if (showTooltip && tooltipText) {\n <span class=\"tooltip-wrap ms-1\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n }\n </span>\n }\n\n <!-- Horizontal increase button orientation -->\n @if (isHorizontal() && showUpButton) {\n <span\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 }\n <!-- Vertical buttons orientation -->\n @if (!isHorizontal()) {\n <span\n class=\"input-group-text vertical p-0\">\n @if (showUpButton) {\n <span\n class=\"{{ customClass.up }}\"\n (click)=\"onIncrease($event)\"\n (keydown.enter)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n }\n @if (showDownButton) {\n <span\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 }\n </span>\n }\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"] }]
1027
1516
  }], ctorParameters: () => [{ type: i1.NumberPickerService }], propDecorators: { min: [{
1028
1517
  type: Input
1029
1518
  }], showTooltip: [{
@@ -1085,9 +1574,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1085
1574
  }] } });
1086
1575
 
1087
1576
  class PasswordValidationComponent extends AppBaseComponent {
1088
- constructor(injector, modal) {
1577
+ constructor(injector, modal, cdr) {
1089
1578
  super(injector);
1090
1579
  this.modal = modal;
1580
+ this.cdr = cdr;
1091
1581
  this.confirmMessage = 'User.Account.Message.EnterPassword';
1092
1582
  this.successEvent = new EventEmitter();
1093
1583
  }
@@ -1109,19 +1599,21 @@ class PasswordValidationComponent extends AppBaseComponent {
1109
1599
  this.successEvent.emit(false);
1110
1600
  this.password = null;
1111
1601
  }
1602
+ this.cdr.markForCheck();
1112
1603
  })
1113
1604
  .add(() => {
1114
1605
  this.buttonBusy = false;
1606
+ this.cdr.markForCheck();
1115
1607
  });
1116
1608
  }
1117
1609
  }
1118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PasswordValidationComponent, deps: [{ token: i0.Injector }, { token: i3$2.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
1119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PasswordValidationComponent, isStandalone: false, selector: "pw-password-validation", inputs: { confirmMessage: "confirmMessage" }, outputs: { successEvent: "successEvent" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ confirmMessage | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" id=\"input_password_992\" name=\"input_password_992\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1610
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PasswordValidationComponent, deps: [{ token: i0.Injector }, { token: i3$1.NgbModal }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: PasswordValidationComponent, isStandalone: false, selector: "pw-password-validation", inputs: { confirmMessage: "confirmMessage" }, outputs: { successEvent: "successEvent" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ confirmMessage | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" id=\"input_password_992\" name=\"input_password_992\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1120
1612
  }
1121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PasswordValidationComponent, decorators: [{
1613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PasswordValidationComponent, decorators: [{
1122
1614
  type: Component,
1123
1615
  args: [{ selector: 'pw-password-validation', standalone: false, template: "<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ confirmMessage | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" id=\"input_password_992\" name=\"input_password_992\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
1124
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i3$2.NgbModal }], propDecorators: { content: [{
1616
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i3$1.NgbModal }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
1125
1617
  type: ViewChild,
1126
1618
  args: ['content', { static: true }]
1127
1619
  }], confirmMessage: [{
@@ -1224,10 +1716,10 @@ class PermissionTreeComponent {
1224
1716
  }
1225
1717
  });
1226
1718
  }
1227
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PermissionTreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1228
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PermissionTreeComponent, isStandalone: false, selector: "permission-tree", inputs: { data: "data" }, usesOnChanges: true, ngImport: i0, template: ` <div class="permission-tree"></div> `, isInline: true }); }
1719
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PermissionTreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: PermissionTreeComponent, isStandalone: false, selector: "permission-tree", inputs: { data: "data" }, usesOnChanges: true, ngImport: i0, template: ` <div class="permission-tree"></div> `, isInline: true }); }
1229
1721
  }
1230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PermissionTreeComponent, decorators: [{
1722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PermissionTreeComponent, decorators: [{
1231
1723
  type: Component,
1232
1724
  args: [{
1233
1725
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -1240,11 +1732,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1240
1732
  }] } });
1241
1733
 
1242
1734
  class PrivacyAndTosComponent extends AppBaseComponent {
1243
- constructor(adminService, injector, document, sanitizer) {
1735
+ constructor(adminService, injector, document, sanitizer, cdr) {
1244
1736
  super(injector);
1245
1737
  this.adminService = adminService;
1246
1738
  this.document = document;
1247
1739
  this.sanitizer = sanitizer;
1740
+ this.cdr = cdr;
1248
1741
  this.tabId = 'privacy-policy';
1249
1742
  }
1250
1743
  ngOnInit() {
@@ -1265,8 +1758,10 @@ class PrivacyAndTosComponent extends AppBaseComponent {
1265
1758
  this.route.params.subscribe(id => {
1266
1759
  this.tabId = id['data'] ?? 'privacy-policy';
1267
1760
  this.getSubscribedProduct();
1761
+ this.cdr.markForCheck();
1268
1762
  });
1269
1763
  }
1764
+ this.cdr.markForCheck();
1270
1765
  });
1271
1766
  }
1272
1767
  getSubscribedProduct(id) {
@@ -1275,6 +1770,7 @@ class PrivacyAndTosComponent extends AppBaseComponent {
1275
1770
  if (user) {
1276
1771
  this.fetchUserSubscriptions(user.id, id);
1277
1772
  }
1773
+ this.cdr.markForCheck();
1278
1774
  });
1279
1775
  }
1280
1776
  fetchUserSubscriptions(userId, id) {
@@ -1284,6 +1780,7 @@ class PrivacyAndTosComponent extends AppBaseComponent {
1284
1780
  const products = this.findRequiredProducts(productId);
1285
1781
  this.productName = products[0]?.name;
1286
1782
  this.getTosDetails(products[0].product_privacy_service_id);
1783
+ this.cdr.markForCheck();
1287
1784
  });
1288
1785
  }
1289
1786
  findRequiredProducts(productId) {
@@ -1327,21 +1824,23 @@ class PrivacyAndTosComponent extends AppBaseComponent {
1327
1824
  privacy: privacyData,
1328
1825
  tos: tosData
1329
1826
  };
1827
+ this.cdr.markForCheck();
1330
1828
  })
1331
1829
  .add(() => {
1332
1830
  this.isLoaded = true;
1831
+ this.cdr.markForCheck();
1333
1832
  });
1334
1833
  }
1335
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1$1.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i2$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1336
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PrivacyAndTosComponent, isStandalone: false, 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$2.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i3$2.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i3$2.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i3$2.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i3$2.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i3$2.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i3$2.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i4$1.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
1834
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1$1.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i2$2.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1835
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: PrivacyAndTosComponent, isStandalone: false, selector: "pw-privacy-and-tos", inputs: { productId: "productId" }, usesInheritance: true, ngImport: i0, template: "@if (isPublic) {\n <pw-header [landing]=\"false\"></pw-header>\n}\n\n@if (!isPublic) {\n <div class=\"col-12 d-flex\"\n >\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\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 @if (isPublic) {\n <h3>{{ product }}</h3>\n }\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 @if (!isLoaded) {\n <div class=\"w-100 text-center p-2 mt-5\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n }\n @if (isLoaded) {\n <div [ngbNavOutlet]=\"nav\"></div>\n }\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, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
1337
1836
  }
1338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PrivacyAndTosComponent, decorators: [{
1837
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PrivacyAndTosComponent, decorators: [{
1339
1838
  type: Component,
1340
- args: [{ selector: 'pw-privacy-and-tos', standalone: false, 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"] }]
1839
+ args: [{ selector: 'pw-privacy-and-tos', standalone: false, template: "@if (isPublic) {\n <pw-header [landing]=\"false\"></pw-header>\n}\n\n@if (!isPublic) {\n <div class=\"col-12 d-flex\"\n >\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\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 @if (isPublic) {\n <h3>{{ product }}</h3>\n }\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 @if (!isLoaded) {\n <div class=\"w-100 text-center p-2 mt-5\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n }\n @if (isLoaded) {\n <div [ngbNavOutlet]=\"nav\"></div>\n }\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"] }]
1341
1840
  }], ctorParameters: () => [{ type: i1$1.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
1342
1841
  type: Inject,
1343
1842
  args: [DOCUMENT]
1344
- }] }, { type: i2$1.DomSanitizer }], propDecorators: { productId: [{
1843
+ }] }, { type: i2$2.DomSanitizer }, { type: i0.ChangeDetectorRef }], propDecorators: { productId: [{
1345
1844
  type: Input
1346
1845
  }] } });
1347
1846
 
@@ -1354,19 +1853,20 @@ class PrivacyPolicyComponent extends AppBaseComponent {
1354
1853
  this.company_name = this.appConfig.company.name;
1355
1854
  this.company_email = this.appConfig.company.email;
1356
1855
  }
1357
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PrivacyPolicyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1358
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PrivacyPolicyComponent, isStandalone: false, 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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1856
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PrivacyPolicyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1857
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: PrivacyPolicyComponent, isStandalone: false, selector: "pw-privacy-policy", inputs: { isPublic: "isPublic" }, usesInheritance: true, ngImport: i0, template: "@if (isPublic) {\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n}\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: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1359
1858
  }
1360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PrivacyPolicyComponent, decorators: [{
1859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PrivacyPolicyComponent, decorators: [{
1361
1860
  type: Component,
1362
- args: [{ selector: 'pw-privacy-policy', standalone: false, 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"] }]
1861
+ args: [{ selector: 'pw-privacy-policy', standalone: false, template: "@if (isPublic) {\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n}\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"] }]
1363
1862
  }], propDecorators: { isPublic: [{
1364
1863
  type: Input
1365
1864
  }] } });
1366
1865
 
1367
1866
  class PwTabsComponent extends AppBaseComponent {
1368
- constructor(injector) {
1867
+ constructor(injector, cdr) {
1369
1868
  super(injector);
1869
+ this.cdr = cdr;
1370
1870
  this.items = [];
1371
1871
  this.withSubscription = false;
1372
1872
  /** Arrow function so trackBy is called with correct `this` from template */
@@ -1428,17 +1928,18 @@ class PwTabsComponent extends AppBaseComponent {
1428
1928
  return currentUrl === pathStr || currentUrl.startsWith(pathStr + '/');
1429
1929
  });
1430
1930
  this.activeTabValue = matchedItem ? this.getItemValue(matchedItem) : undefined;
1931
+ this.cdr.markForCheck();
1431
1932
  }
1432
1933
  ngOnDestroy() {
1433
1934
  this.routeEventSubscription.unsubscribe();
1434
1935
  }
1435
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PwTabsComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1436
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PwTabsComponent, isStandalone: false, selector: "pw-tabs", inputs: { items: "items", withSubscription: "withSubscription" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n <ng-container *ngFor=\"let item of items; trackBy: trackByItem\">\n <p-tab *ngIf=\"item.visible !== false\" [value]=\"getItemValue(item)\">\n <i *ngIf=\"item.icon\" [class]=\"item.icon\" aria-hidden=\"true\"></i>\n <span>{{ item.label }}</span>\n </p-tab>\n </ng-container>\n </p-tablist>\n </p-tabs>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$2.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.TabList, selector: "p-tablist" }, { kind: "component", type: i2$2.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1936
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PwTabsComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1937
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: PwTabsComponent, isStandalone: false, selector: "pw-tabs", inputs: { items: "items", withSubscription: "withSubscription" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n @for (item of items; track trackByItem($index, item)) {\n @if (item.visible !== false) {\n <p-tab [value]=\"getItemValue(item)\">\n @if (item.icon) {\n <i [class]=\"item.icon\" aria-hidden=\"true\"></i>\n }\n <span>{{ item.label }}</span>\n </p-tab>\n }\n }\n </p-tablist>\n </p-tabs>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i2$3.TabList, selector: "p-tablist" }, { kind: "component", type: i2$3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }] }); }
1437
1938
  }
1438
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PwTabsComponent, decorators: [{
1939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: PwTabsComponent, decorators: [{
1439
1940
  type: Component,
1440
- args: [{ selector: 'pw-tabs', standalone: false, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n <ng-container *ngFor=\"let item of items; trackBy: trackByItem\">\n <p-tab *ngIf=\"item.visible !== false\" [value]=\"getItemValue(item)\">\n <i *ngIf=\"item.icon\" [class]=\"item.icon\" aria-hidden=\"true\"></i>\n <span>{{ item.label }}</span>\n </p-tab>\n </ng-container>\n </p-tablist>\n </p-tabs>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n" }]
1441
- }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { items: [{
1941
+ args: [{ selector: 'pw-tabs', standalone: false, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n @for (item of items; track trackByItem($index, item)) {\n @if (item.visible !== false) {\n <p-tab [value]=\"getItemValue(item)\">\n @if (item.icon) {\n <i [class]=\"item.icon\" aria-hidden=\"true\"></i>\n }\n <span>{{ item.label }}</span>\n </p-tab>\n }\n }\n </p-tablist>\n </p-tabs>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <router-outlet></router-outlet>\n </div>\n </div>\n</div>\n" }]
1942
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { items: [{
1442
1943
  type: Input
1443
1944
  }], withSubscription: [{
1444
1945
  type: Input
@@ -1472,10 +1973,10 @@ class DateRangePickerComponent {
1472
1973
  this.pickerDirective.open();
1473
1974
  }, 50);
1474
1975
  }
1475
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1476
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: DateRangePickerComponent, isStandalone: false, selector: "app-date-picker", inputs: { selectedDateRange: "selectedDateRange", dateRanges: "dateRanges", inputId: "inputId" }, outputs: { dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "pickerDirective", first: true, predicate: DaterangepickerDirective, descendants: true }], ngImport: i0, template: "<div class=\"my-3\">\n <div class=\"row\">\n <!-- start date -->\n <div class=\"col-6 col-sm-3\">\n <div class=\"\">\n <label [attr.for]=\"inputId\" class=\"visually-hidden\">Select a date range (optional)</label>\n <input [id]=\"inputId\"\n [name]=\"inputId\"\n ngxDaterangepickerMd\n class=\"form-control\"\n [(ngModel)]=\"selectedDateRange\"\n [ranges]=\"dateRanges\"\n [alwaysShowCalendars]=\"true\"\n [locale]=\"{ format: 'DD-MMM-YYYY' }\"\n [showCustomRangeLabel]=\"true\"\n [linkedCalendars]=\"true\"\n [showClearButton]=\"true\"\n (clearClicked)=\"onClearDate()\"\n placeholder=\"Select a date range (optional)\"\n opens=\"center\"\n (ngModelChange)=\"onDateRangeSelect($event)\"\n id=\"input_selectedDateRange_2368\" name=\"input_selectedDateRange_2368\" />\n </div>\n </div>\n <div class=\"col-6 col-sm-3 pop\">\n\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary ngx-daterangepicker-action\"\n (click)=\"openDatepicker()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>", styles: ["::ng-deep .md-drppicker{top:auto!important;left:auto!important;margin-top:0!important}::ng-deep .md-drppicker .clear svg{margin-right:2px;margin-bottom:10px}.pop{margin-left:-22px}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }] }); }
1976
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1977
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: DateRangePickerComponent, isStandalone: false, selector: "app-date-picker", inputs: { selectedDateRange: "selectedDateRange", dateRanges: "dateRanges", inputId: "inputId" }, outputs: { dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "pickerDirective", first: true, predicate: DaterangepickerDirective, descendants: true }], ngImport: i0, template: "<div class=\"my-3\">\n <div class=\"row\">\n <!-- start date -->\n <div class=\"col-6 col-sm-3\">\n <div class=\"\">\n <label [attr.for]=\"inputId\" class=\"visually-hidden\">Select a date range (optional)</label>\n <input [id]=\"inputId\"\n [name]=\"inputId\"\n ngxDaterangepickerMd\n class=\"form-control\"\n [(ngModel)]=\"selectedDateRange\"\n [ranges]=\"dateRanges\"\n [alwaysShowCalendars]=\"true\"\n [locale]=\"{ format: 'DD-MMM-YYYY' }\"\n [showCustomRangeLabel]=\"true\"\n [linkedCalendars]=\"true\"\n [showClearButton]=\"true\"\n (clearClicked)=\"onClearDate()\"\n placeholder=\"Select a date range (optional)\"\n opens=\"center\"\n (ngModelChange)=\"onDateRangeSelect($event)\"\n id=\"input_selectedDateRange_2368\" name=\"input_selectedDateRange_2368\" />\n </div>\n </div>\n <div class=\"col-6 col-sm-3 pop\">\n\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary ngx-daterangepicker-action\"\n (click)=\"openDatepicker()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>", styles: ["::ng-deep .md-drppicker{top:auto!important;left:auto!important;margin-top:0!important}::ng-deep .md-drppicker .clear svg{margin-right:2px;margin-bottom:10px}.pop{margin-left:-22px}\n"], dependencies: [{ kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }] }); }
1477
1978
  }
1478
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DateRangePickerComponent, decorators: [{
1979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DateRangePickerComponent, decorators: [{
1479
1980
  type: Component,
1480
1981
  args: [{ selector: 'app-date-picker', standalone: false, template: "<div class=\"my-3\">\n <div class=\"row\">\n <!-- start date -->\n <div class=\"col-6 col-sm-3\">\n <div class=\"\">\n <label [attr.for]=\"inputId\" class=\"visually-hidden\">Select a date range (optional)</label>\n <input [id]=\"inputId\"\n [name]=\"inputId\"\n ngxDaterangepickerMd\n class=\"form-control\"\n [(ngModel)]=\"selectedDateRange\"\n [ranges]=\"dateRanges\"\n [alwaysShowCalendars]=\"true\"\n [locale]=\"{ format: 'DD-MMM-YYYY' }\"\n [showCustomRangeLabel]=\"true\"\n [linkedCalendars]=\"true\"\n [showClearButton]=\"true\"\n (clearClicked)=\"onClearDate()\"\n placeholder=\"Select a date range (optional)\"\n opens=\"center\"\n (ngModelChange)=\"onDateRangeSelect($event)\"\n id=\"input_selectedDateRange_2368\" name=\"input_selectedDateRange_2368\" />\n </div>\n </div>\n <div class=\"col-6 col-sm-3 pop\">\n\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary ngx-daterangepicker-action\"\n (click)=\"openDatepicker()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>", styles: ["::ng-deep .md-drppicker{top:auto!important;left:auto!important;margin-top:0!important}::ng-deep .md-drppicker .clear svg{margin-right:2px;margin-bottom:10px}.pop{margin-left:-22px}\n"] }]
1481
1982
  }], propDecorators: { pickerDirective: [{
@@ -1515,17 +2016,17 @@ class InputContainerComponent {
1515
2016
  }
1516
2017
  }
1517
2018
  }
1518
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: InputContainerComponent, deps: [{ token: i2.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
1519
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: InputContainerComponent, isStandalone: false, selector: "pw-input-container", inputs: { name: "name", controlId: "controlId", useAriaLabelledbyOnly: "useAriaLabelledbyOnly", label: "label", labelClass: "labelClass", tooltipPosition: "tooltipPosition", required: "required", errorMsg: "errorMsg", isReadOnly: "isReadOnly", showTooltip: "showTooltip", tooltipText: "tooltipText", showTriangle: "showTriangle", afterLabel: "afterLabel", showAfterLabel: "showAfterLabel", showTriangleText: "showTriangleText", isLeftTooltip: "isLeftTooltip" }, providers: [
2019
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: InputContainerComponent, deps: [{ token: i2$1.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
2020
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: InputContainerComponent, isStandalone: false, selector: "pw-input-container", inputs: { name: "name", controlId: "controlId", useAriaLabelledbyOnly: "useAriaLabelledbyOnly", label: "label", labelClass: "labelClass", tooltipPosition: "tooltipPosition", required: "required", errorMsg: "errorMsg", isReadOnly: "isReadOnly", showTooltip: "showTooltip", tooltipText: "tooltipText", showTriangle: "showTriangle", afterLabel: "afterLabel", showAfterLabel: "showAfterLabel", showTriangleText: "showTriangleText", isLeftTooltip: "isLeftTooltip" }, providers: [
1520
2021
  {
1521
2022
  provide: NG_VALUE_ACCESSOR,
1522
2023
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
1523
2024
  useExisting: InputContainerComponent,
1524
2025
  multi: true
1525
2026
  }
1526
- ], ngImport: i0, template: "<ng-container *ngIf=\"useAriaLabelledbyOnly\">\n <span class=\"pw-input-container-label mb-2 d-block\" [attr.id]=\"controlId ? (controlId + '-label') : null\">\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 </span>\n</ng-container>\n<label *ngIf=\"!useAriaLabelledbyOnly\" class=\"pw-input-container-label mb-2\" [attr.for]=\"controlId || name\">\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)}.pw-input-container-label{display:block;color:gray;font-size:.75rem;font-weight:500;letter-spacing:2px;text-transform:uppercase}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4$3.FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: ["errorMsg", "displayError"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
2027
+ ], ngImport: i0, template: "@if (useAriaLabelledbyOnly) {\n <span class=\"pw-input-container-label mb-2 d-block\" [attr.id]=\"controlId ? (controlId + '-label') : null\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n @if (showTooltip && tooltipText) {\n <span [ngClass]=\"{ 'left-info-circle': isLeftTooltip }\" class=\"info-circle tooltip-wrap ms-1\">\n <span class=\"tooltiptext gradient-custom-branding\" [ngClass]=\"{ 'left-field-tooltip': isLeftTooltip }\">\n {{ tooltipText }}\n </span>\n </span>\n }\n @if (showTriangle) {\n <span class=\"tooltip-wrap ms-1\"\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 }\n <!-- after label -->\n @if (afterLabel && showAfterLabel) {\n <span\n [innerHTML]=\"afterLabel\"></span>\n }\n <!-- after label end -->\n </span>\n}\n@if (!useAriaLabelledbyOnly) {\n <label class=\"pw-input-container-label mb-2\" [attr.for]=\"controlId || name\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n @if (showTooltip && tooltipText) {\n <span [ngClass]=\"{ 'left-info-circle': isLeftTooltip }\" class=\"info-circle tooltip-wrap ms-1\">\n <span class=\"tooltiptext gradient-custom-branding\" [ngClass]=\"{ 'left-field-tooltip': isLeftTooltip }\">\n {{ tooltipText }}\n </span>\n </span>\n }\n @if (showTriangle) {\n <span class=\"tooltip-wrap ms-1\"\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 }\n <!-- after label -->\n @if (afterLabel && showAfterLabel) {\n <span\n [innerHTML]=\"afterLabel\"></span>\n }\n <!-- after label end -->\n </label>\n}\n\n<div class=\"mb-3\">\n <ng-content></ng-content>\n @if (control?.errors) {\n <pw-field-error-display [displayError]=\"control?.invalid && control?.touched\"\n [errorMsg]=\"errorMsg | transloco\">\n </pw-field-error-display>\n }\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)}.pw-input-container-label{display:block;color:gray;font-size:.75rem;font-weight:500;letter-spacing:2px;text-transform:uppercase}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "component", type: i4$2.FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: ["errorMsg", "displayError"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
1527
2028
  }
1528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: InputContainerComponent, decorators: [{
2029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: InputContainerComponent, decorators: [{
1529
2030
  type: Component,
1530
2031
  args: [{ selector: 'pw-input-container', providers: [
1531
2032
  {
@@ -1534,8 +2035,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1534
2035
  useExisting: InputContainerComponent,
1535
2036
  multi: true
1536
2037
  }
1537
- ], standalone: false, template: "<ng-container *ngIf=\"useAriaLabelledbyOnly\">\n <span class=\"pw-input-container-label mb-2 d-block\" [attr.id]=\"controlId ? (controlId + '-label') : null\">\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 </span>\n</ng-container>\n<label *ngIf=\"!useAriaLabelledbyOnly\" class=\"pw-input-container-label mb-2\" [attr.for]=\"controlId || name\">\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)}.pw-input-container-label{display:block;color:gray;font-size:.75rem;font-weight:500;letter-spacing:2px;text-transform:uppercase}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"] }]
1538
- }], ctorParameters: () => [{ type: i2.ControlContainer, decorators: [{
2038
+ ], standalone: false, template: "@if (useAriaLabelledbyOnly) {\n <span class=\"pw-input-container-label mb-2 d-block\" [attr.id]=\"controlId ? (controlId + '-label') : null\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n @if (showTooltip && tooltipText) {\n <span [ngClass]=\"{ 'left-info-circle': isLeftTooltip }\" class=\"info-circle tooltip-wrap ms-1\">\n <span class=\"tooltiptext gradient-custom-branding\" [ngClass]=\"{ 'left-field-tooltip': isLeftTooltip }\">\n {{ tooltipText }}\n </span>\n </span>\n }\n @if (showTriangle) {\n <span class=\"tooltip-wrap ms-1\"\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 }\n <!-- after label -->\n @if (afterLabel && showAfterLabel) {\n <span\n [innerHTML]=\"afterLabel\"></span>\n }\n <!-- after label end -->\n </span>\n}\n@if (!useAriaLabelledbyOnly) {\n <label class=\"pw-input-container-label mb-2\" [attr.for]=\"controlId || name\">\n <span [class]=\"labelClass\"\n [ngClass]=\"{ mandatory: required && !control?.disabled }\">\n {{ label }}\n </span>\n @if (showTooltip && tooltipText) {\n <span [ngClass]=\"{ 'left-info-circle': isLeftTooltip }\" class=\"info-circle tooltip-wrap ms-1\">\n <span class=\"tooltiptext gradient-custom-branding\" [ngClass]=\"{ 'left-field-tooltip': isLeftTooltip }\">\n {{ tooltipText }}\n </span>\n </span>\n }\n @if (showTriangle) {\n <span class=\"tooltip-wrap ms-1\"\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 }\n <!-- after label -->\n @if (afterLabel && showAfterLabel) {\n <span\n [innerHTML]=\"afterLabel\"></span>\n }\n <!-- after label end -->\n </label>\n}\n\n<div class=\"mb-3\">\n <ng-content></ng-content>\n @if (control?.errors) {\n <pw-field-error-display [displayError]=\"control?.invalid && control?.touched\"\n [errorMsg]=\"errorMsg | transloco\">\n </pw-field-error-display>\n }\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)}.pw-input-container-label{display:block;color:gray;font-size:.75rem;font-weight:500;letter-spacing:2px;text-transform:uppercase}.mandatory:after{color:#ff586b;content:\"*\";padding-left:2px;font-size:15px}\n"] }]
2039
+ }], ctorParameters: () => [{ type: i2$1.ControlContainer, decorators: [{
1539
2040
  type: Optional
1540
2041
  }, {
1541
2042
  type: Host
@@ -1576,8 +2077,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1576
2077
  }] } });
1577
2078
 
1578
2079
  class ResourceSharedComponentsModule {
1579
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ResourceSharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1580
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: ResourceSharedComponentsModule, declarations: [NoDataComponent, InputContainerComponent], imports: [CommonModule,
2080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ResourceSharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2081
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ResourceSharedComponentsModule, declarations: [NoDataComponent, InputContainerComponent], imports: [CommonModule,
1581
2082
  FormsModule,
1582
2083
  ReactiveFormsModule,
1583
2084
  AppLoaderModule,
@@ -1602,7 +2103,7 @@ class ResourceSharedComponentsModule {
1602
2103
  AutoCompleteModule,
1603
2104
  TooltipModule,
1604
2105
  FieldErrorDisplayModule] }); }
1605
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ResourceSharedComponentsModule, imports: [CommonModule,
2106
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ResourceSharedComponentsModule, imports: [CommonModule,
1606
2107
  FormsModule,
1607
2108
  ReactiveFormsModule,
1608
2109
  AppLoaderModule,
@@ -1626,7 +2127,7 @@ class ResourceSharedComponentsModule {
1626
2127
  TooltipModule,
1627
2128
  FieldErrorDisplayModule] }); }
1628
2129
  }
1629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ResourceSharedComponentsModule, decorators: [{
2130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ResourceSharedComponentsModule, decorators: [{
1630
2131
  type: NgModule,
1631
2132
  args: [{
1632
2133
  declarations: [NoDataComponent, InputContainerComponent],
@@ -1663,17 +2164,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1663
2164
  }] });
1664
2165
 
1665
2166
  class SplashComponent {
1666
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1667
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: SplashComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<pw-loader [isVisible]=\"true\"></pw-loader>\n", dependencies: [{ kind: "component", type: i1$3.AppLoaderComponent, selector: "pw-loader", inputs: ["isVisible", "closeOnOutsideClick", "autoCloseTimeOut"] }] }); }
2167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: SplashComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<pw-loader [isVisible]=\"true\"></pw-loader>\n", dependencies: [{ kind: "component", type: i1$3.AppLoaderComponent, selector: "pw-loader", inputs: ["isVisible", "closeOnOutsideClick", "autoCloseTimeOut"] }] }); }
1668
2169
  }
1669
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SplashComponent, decorators: [{
2170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SplashComponent, decorators: [{
1670
2171
  type: Component,
1671
2172
  args: [{ standalone: false, template: "<pw-loader [isVisible]=\"true\"></pw-loader>\n" }]
1672
2173
  }] });
1673
2174
 
1674
2175
  class TermsConditionsComponent {
1675
- constructor(appConfigService) {
2176
+ constructor(appConfigService, cdr) {
1676
2177
  this.appConfigService = appConfigService;
2178
+ this.cdr = cdr;
1677
2179
  this.isPublic = window.location.pathname.includes('terms-conditions');
1678
2180
  }
1679
2181
  ngOnInit() {
@@ -1685,15 +2187,16 @@ class TermsConditionsComponent {
1685
2187
  this.company_email = config?.['company'].email;
1686
2188
  this.company_city = config?.['company'].city;
1687
2189
  this.company_city_code = config?.['company'].city_code;
2190
+ this.cdr.markForCheck();
1688
2191
  });
1689
2192
  }
1690
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TermsConditionsComponent, deps: [{ token: i1$4.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
1691
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TermsConditionsComponent, isStandalone: false, 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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b" }] }); }
2193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: TermsConditionsComponent, deps: [{ token: i1$4.AppConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2194
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: TermsConditionsComponent, isStandalone: false, selector: "pw-terms-conditions", inputs: { isPublic: "isPublic" }, ngImport: i0, template: "@if (isPublic) {\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n}\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: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LandingPageFooterBComponent, selector: "pw-landing-page-footer-b" }] }); }
1692
2195
  }
1693
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TermsConditionsComponent, decorators: [{
2196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: TermsConditionsComponent, decorators: [{
1694
2197
  type: Component,
1695
- args: [{ selector: 'pw-terms-conditions', standalone: false, 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"] }]
1696
- }], ctorParameters: () => [{ type: i1$4.AppConfigService }], propDecorators: { isPublic: [{
2198
+ args: [{ selector: 'pw-terms-conditions', standalone: false, template: "@if (isPublic) {\n <pw-landing-page-header [landing]=\"false\"></pw-landing-page-header>\n}\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"] }]
2199
+ }], ctorParameters: () => [{ type: i1$4.AppConfigService }, { type: i0.ChangeDetectorRef }], propDecorators: { isPublic: [{
1697
2200
  type: Input
1698
2201
  }] } });
1699
2202
 
@@ -1714,8 +2217,8 @@ const allModules = [
1714
2217
  NgxDaterangepickerMd.forRoot()
1715
2218
  ];
1716
2219
  class SharedComponentsModule {
1717
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1718
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: SharedComponentsModule, declarations: [PasswordValidationComponent,
2220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2221
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: SharedComponentsModule, declarations: [PasswordValidationComponent,
1719
2222
  PwTabsComponent,
1720
2223
  DateRangePickerComponent,
1721
2224
  PermissionTreeComponent,
@@ -1726,6 +2229,8 @@ class SharedComponentsModule {
1726
2229
  AuthenticatorComponent,
1727
2230
  ClearBitIconComponent,
1728
2231
  ComingSoonComponent,
2232
+ CollapsibleSidebarComponent,
2233
+ PwBrainChatComponent,
1729
2234
  EntityGroupComponent,
1730
2235
  GroupsComponent,
1731
2236
  GroupDefinitionComponent,
@@ -1751,7 +2256,8 @@ class SharedComponentsModule {
1751
2256
  CommonModule,
1752
2257
  NgIf,
1753
2258
  FieldErrorDisplayModule,
1754
- ResourceSharedComponentsModule], exports: [PasswordValidationComponent,
2259
+ ResourceSharedComponentsModule,
2260
+ CollapsibleSidebarTriggerDirective], exports: [PasswordValidationComponent,
1755
2261
  PwTabsComponent,
1756
2262
  DateRangePickerComponent, NgbTooltipModule,
1757
2263
  NgbNavModule,
@@ -1772,6 +2278,9 @@ class SharedComponentsModule {
1772
2278
  AuthenticatorComponent,
1773
2279
  ClearBitIconComponent,
1774
2280
  ComingSoonComponent,
2281
+ CollapsibleSidebarComponent,
2282
+ CollapsibleSidebarTriggerDirective,
2283
+ PwBrainChatComponent,
1775
2284
  EntityGroupComponent,
1776
2285
  GroupsComponent,
1777
2286
  GroupDefinitionComponent,
@@ -1780,7 +2289,7 @@ class SharedComponentsModule {
1780
2289
  LandingPageFooterBComponent,
1781
2290
  FieldErrorDisplayModule,
1782
2291
  ResourceSharedComponentsModule] }); }
1783
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SharedComponentsModule, imports: [FormsModule,
2292
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SharedComponentsModule, imports: [FormsModule,
1784
2293
  AppLoaderModule,
1785
2294
  ReactiveFormsModule,
1786
2295
  DirectivesModule,
@@ -1804,7 +2313,7 @@ class SharedComponentsModule {
1804
2313
  UiSwitchModule, i1$2.NgxDaterangepickerMd, FieldErrorDisplayModule,
1805
2314
  ResourceSharedComponentsModule] }); }
1806
2315
  }
1807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SharedComponentsModule, decorators: [{
2316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SharedComponentsModule, decorators: [{
1808
2317
  type: NgModule,
1809
2318
  args: [{
1810
2319
  declarations: [
@@ -1819,6 +2328,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1819
2328
  AuthenticatorComponent,
1820
2329
  ClearBitIconComponent,
1821
2330
  ComingSoonComponent,
2331
+ CollapsibleSidebarComponent,
2332
+ PwBrainChatComponent,
1822
2333
  EntityGroupComponent,
1823
2334
  GroupsComponent,
1824
2335
  GroupDefinitionComponent,
@@ -1838,7 +2349,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1838
2349
  CommonModule,
1839
2350
  NgIf,
1840
2351
  FieldErrorDisplayModule,
1841
- ResourceSharedComponentsModule
2352
+ ResourceSharedComponentsModule,
2353
+ CollapsibleSidebarTriggerDirective
1842
2354
  ],
1843
2355
  exports: [
1844
2356
  PasswordValidationComponent,
@@ -1853,6 +2365,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1853
2365
  AuthenticatorComponent,
1854
2366
  ClearBitIconComponent,
1855
2367
  ComingSoonComponent,
2368
+ CollapsibleSidebarComponent,
2369
+ CollapsibleSidebarTriggerDirective,
2370
+ PwBrainChatComponent,
1856
2371
  EntityGroupComponent,
1857
2372
  GroupsComponent,
1858
2373
  GroupDefinitionComponent,
@@ -1865,9 +2380,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
1865
2380
  }]
1866
2381
  }] });
1867
2382
 
2383
+ /**
2384
+ * CollapsibleSidebarSuperAdminGuard
2385
+ *
2386
+ * RBAC guard to ensure only SuperAdmin users can access/trigger the collapsible sidebar.
2387
+ *
2388
+ * Usage in templates:
2389
+ * ```html
2390
+ * <button
2391
+ * *ngIf="(superAdminGuard.canAccessSidebar$ | async)"
2392
+ * pwCollapsibleSidebarTrigger
2393
+ * [contentId]="'posiwise-brain'"
2394
+ * >
2395
+ * <i class="pi pi-cog"></i>
2396
+ * </button>
2397
+ * ```
2398
+ *
2399
+ * Usage in components:
2400
+ * ```typescript
2401
+ * canAccessSidebar$ = this.guard.canAccessSidebar$;
2402
+ * ```
2403
+ */
2404
+ class CollapsibleSidebarSuperAdminGuard {
2405
+ constructor(userService, permissionService) {
2406
+ this.userService = userService;
2407
+ this.permissionService = permissionService;
2408
+ /**
2409
+ * Emits true when the signed-in user has {@link PermissionService.isSuperAdmin}.
2410
+ * UX-only; backend must still enforce permissions.
2411
+ */
2412
+ this.canAccessSidebar$ = this.userService.getUserState().pipe(map$1(state => CollapsibleSidebarSuperAdminGuard.userIsSuperAdmin(state?.currentUser)), distinctUntilChanged());
2413
+ }
2414
+ /**
2415
+ * Same rule as {@link PermissionService#isSuperAdmin}, safe when user is not loaded.
2416
+ */
2417
+ canAccessSidebar() {
2418
+ return this.permissionService.user ? this.permissionService.isSuperAdmin() : false;
2419
+ }
2420
+ static userIsSuperAdmin(user) {
2421
+ return !!user?.auth?.granted?.['Pages.SuperAdmin'];
2422
+ }
2423
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarSuperAdminGuard, deps: [{ token: i1.UserService }, { token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2424
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarSuperAdminGuard, providedIn: 'root' }); }
2425
+ }
2426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CollapsibleSidebarSuperAdminGuard, decorators: [{
2427
+ type: Injectable,
2428
+ args: [{
2429
+ providedIn: 'root'
2430
+ }]
2431
+ }], ctorParameters: () => [{ type: i1.UserService }, { type: i1.PermissionService }] });
2432
+
1868
2433
  /**
1869
2434
  * Generated bundle index. Do not edit.
1870
2435
  */
1871
2436
 
1872
- export { AuthenticatorComponent, ClearBitIconComponent, ComingSoonComponent, DateRangePickerComponent, EntityGroupComponent, GroupDefinitionComponent, GroupsComponent, HeaderComponent, InputContainerComponent, LandingPageFooterBComponent, NoDataComponent, NumberPickerComponent, PasswordValidationComponent, PermissionTreeComponent, PrivacyAndTosComponent, PrivacyPolicyComponent, PwTabsComponent, ResourceSharedComponentsModule, SharedComponentsModule, SplashComponent, TermsConditionsComponent };
2437
+ export { AuthenticatorComponent, ClearBitIconComponent, CollapsibleSidebarComponent, CollapsibleSidebarService, CollapsibleSidebarSuperAdminGuard, CollapsibleSidebarTriggerDirective, ComingSoonComponent, DateRangePickerComponent, EntityGroupComponent, GroupDefinitionComponent, GroupsComponent, HeaderComponent, InputContainerComponent, LandingPageFooterBComponent, NoDataComponent, NumberPickerComponent, PasswordValidationComponent, PermissionTreeComponent, PrivacyAndTosComponent, PrivacyPolicyComponent, PwBrainChatComponent, PwTabsComponent, ResourceSharedComponentsModule, SharedComponentsModule, SplashComponent, TermsConditionsComponent };
1873
2438
  //# sourceMappingURL=posiwise-shared-components.mjs.map