@posiwise/resource-module 0.0.202 → 0.0.204

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 (45) hide show
  1. package/fesm2022/{posiwise-resource-module-base-top-banner.component-CrdBpNSj.mjs → posiwise-resource-module-base-top-banner.component-BwujN_up.mjs} +16 -32
  2. package/fesm2022/posiwise-resource-module-base-top-banner.component-BwujN_up.mjs.map +1 -0
  3. package/fesm2022/{posiwise-resource-module-resource-blogs.module-hxktrj98.mjs → posiwise-resource-module-resource-blogs.module-C_sTQ0w2.mjs} +54 -72
  4. package/fesm2022/posiwise-resource-module-resource-blogs.module-C_sTQ0w2.mjs.map +1 -0
  5. package/fesm2022/{posiwise-resource-module-resource-cards.module-D3yf7FNt.mjs → posiwise-resource-module-resource-cards.module-BSJpkk9V.mjs} +718 -705
  6. package/fesm2022/posiwise-resource-module-resource-cards.module-BSJpkk9V.mjs.map +1 -0
  7. package/fesm2022/{posiwise-resource-module-resource-case-studies.module-CFcO0CI-.mjs → posiwise-resource-module-resource-case-studies.module-D1hCU5_H.mjs} +64 -63
  8. package/fesm2022/posiwise-resource-module-resource-case-studies.module-D1hCU5_H.mjs.map +1 -0
  9. package/fesm2022/{posiwise-resource-module-resource-events.module-0PDppSJ6.mjs → posiwise-resource-module-resource-events.module-D7yC0Sqt.mjs} +55 -56
  10. package/fesm2022/posiwise-resource-module-resource-events.module-D7yC0Sqt.mjs.map +1 -0
  11. package/fesm2022/{posiwise-resource-module-resource-hub.module-2qzLV9I1.mjs → posiwise-resource-module-resource-hub.module-alVvQLvR.mjs} +145 -126
  12. package/fesm2022/posiwise-resource-module-resource-hub.module-alVvQLvR.mjs.map +1 -0
  13. package/fesm2022/{posiwise-resource-module-resource-integrations.module-DqDd_1U9.mjs → posiwise-resource-module-resource-integrations.module-G4XvMMYf.mjs} +133 -136
  14. package/fesm2022/posiwise-resource-module-resource-integrations.module-G4XvMMYf.mjs.map +1 -0
  15. package/fesm2022/posiwise-resource-module-resource-jobs.module-DOdaBrZi.mjs +399 -0
  16. package/fesm2022/posiwise-resource-module-resource-jobs.module-DOdaBrZi.mjs.map +1 -0
  17. package/fesm2022/{posiwise-resource-module-resource-post.module-BFuEjqA9.mjs → posiwise-resource-module-resource-post.module-CGxj27dN.mjs} +208 -214
  18. package/fesm2022/posiwise-resource-module-resource-post.module-CGxj27dN.mjs.map +1 -0
  19. package/fesm2022/{posiwise-resource-module-resource-release-notes.module-BbofH_0n.mjs → posiwise-resource-module-resource-release-notes.module-CLry1QNC.mjs} +63 -75
  20. package/fesm2022/posiwise-resource-module-resource-release-notes.module-CLry1QNC.mjs.map +1 -0
  21. package/fesm2022/{posiwise-resource-module-resource-root.module-C9c17Dhm.mjs → posiwise-resource-module-resource-root.module-x4TYntdq.mjs} +135 -138
  22. package/fesm2022/posiwise-resource-module-resource-root.module-x4TYntdq.mjs.map +1 -0
  23. package/fesm2022/{posiwise-resource-module-resource-videos.module-BsnB9vFd.mjs → posiwise-resource-module-resource-videos.module-2ugtK7wA.mjs} +54 -75
  24. package/fesm2022/posiwise-resource-module-resource-videos.module-2ugtK7wA.mjs.map +1 -0
  25. package/fesm2022/{posiwise-resource-module-resource-white-papers.module-BC-OyhAK.mjs → posiwise-resource-module-resource-white-papers.module-pn6rtDc3.mjs} +58 -72
  26. package/fesm2022/posiwise-resource-module-resource-white-papers.module-pn6rtDc3.mjs.map +1 -0
  27. package/fesm2022/{posiwise-resource-module-resource.service-IK3r0iUB.mjs → posiwise-resource-module-resource.service-DAXsq-WG.mjs} +7 -8
  28. package/fesm2022/posiwise-resource-module-resource.service-DAXsq-WG.mjs.map +1 -0
  29. package/fesm2022/posiwise-resource-module.mjs +254 -221
  30. package/fesm2022/posiwise-resource-module.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/types/posiwise-resource-module.d.ts +159 -168
  33. package/fesm2022/posiwise-resource-module-base-top-banner.component-CrdBpNSj.mjs.map +0 -1
  34. package/fesm2022/posiwise-resource-module-resource-blogs.module-hxktrj98.mjs.map +0 -1
  35. package/fesm2022/posiwise-resource-module-resource-cards.module-D3yf7FNt.mjs.map +0 -1
  36. package/fesm2022/posiwise-resource-module-resource-case-studies.module-CFcO0CI-.mjs.map +0 -1
  37. package/fesm2022/posiwise-resource-module-resource-events.module-0PDppSJ6.mjs.map +0 -1
  38. package/fesm2022/posiwise-resource-module-resource-hub.module-2qzLV9I1.mjs.map +0 -1
  39. package/fesm2022/posiwise-resource-module-resource-integrations.module-DqDd_1U9.mjs.map +0 -1
  40. package/fesm2022/posiwise-resource-module-resource-post.module-BFuEjqA9.mjs.map +0 -1
  41. package/fesm2022/posiwise-resource-module-resource-release-notes.module-BbofH_0n.mjs.map +0 -1
  42. package/fesm2022/posiwise-resource-module-resource-root.module-C9c17Dhm.mjs.map +0 -1
  43. package/fesm2022/posiwise-resource-module-resource-videos.module-BsnB9vFd.mjs.map +0 -1
  44. package/fesm2022/posiwise-resource-module-resource-white-papers.module-BC-OyhAK.mjs.map +0 -1
  45. package/fesm2022/posiwise-resource-module-resource.service-IK3r0iUB.mjs.map +0 -1
@@ -1,31 +1,27 @@
1
- import { t as ResourceService } from "./posiwise-resource-module-resource.service-IK3r0iUB.mjs";
1
+ import { t as ResourceService } from "./posiwise-resource-module-resource.service-DAXsq-WG.mjs";
2
2
  import * as i0 from "@angular/core";
3
- import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, NgModule, Output, ViewChild, ViewContainerRef } from "@angular/core";
3
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, NgModule, Output, ViewChild, ViewContainerRef, inject } from "@angular/core";
4
+ import { AuthService, TagService } from "@posiwise/common-services";
4
5
  import { HelperService } from "@posiwise/helper-service";
5
- import * as i2 from "@posiwise/common-services";
6
- import * as i4 from "@angular/router";
7
- import { RouterModule } from "@angular/router";
6
+ import { RouterLink, RouterModule } from "@angular/router";
8
7
  import { Trial4SharedContactUsModule } from "@posiwise/resource-contact-us";
9
- import * as i3 from "@angular/common";
10
- import { CommonModule } from "@angular/common";
11
- import * as i5 from "@angular/forms";
8
+ import { CommonModule, NgClass, NgTemplateOutlet } from "@angular/common";
9
+ import * as i1 from "@angular/forms";
12
10
  import { FormsModule, ReactiveFormsModule } from "@angular/forms";
13
11
  import { CoreTranslocoModule } from "@posiwise/core-transloco";
14
- import * as i8 from "@posiwise/directives";
15
- import { DirectivesModule } from "@posiwise/directives";
12
+ import { DirectivesModule, LazyImgDirective } from "@posiwise/directives";
16
13
  import { PipesModule } from "@posiwise/pipes";
17
- import * as i6 from "@posiwise/shared-components";
18
- import { ResourceSharedComponentsModule } from "@posiwise/shared-components";
19
- import * as i10 from "@jsverse/transloco";
20
- import { TranslocoModule } from "@jsverse/transloco";
14
+ import { NoDataComponent, ResourceSharedComponentsModule } from "@posiwise/shared-components";
15
+ import { TranslocoModule, TranslocoPipe } from "@jsverse/transloco";
21
16
  import { AppBaseComponent } from "@posiwise/app-base-component";
22
- import { forkJoin } from "rxjs";
17
+ import { Bind } from "primeng/bind";
23
18
  import { PaginatorModule } from "primeng/paginator";
19
+ import { forkJoin } from "rxjs";
24
20
  import { DragDropModule } from "@angular/cdk/drag-drop";
25
21
  import { NgxCaptchaModule } from "ngx-captcha";
26
22
  import { SelectModule } from "primeng/select";
27
- import * as i7 from "primeng/progressspinner";
28
- import * as i1 from "@angular/platform-browser";
23
+ import { ProgressSpinner } from "primeng/progressspinner";
24
+ import { DomSanitizer } from "@angular/platform-browser";
29
25
  var Trial4ContactUsModule = class Trial4ContactUsModule {
30
26
  static {
31
27
  this.ɵfac = i0.ɵɵngDeclareFactory({
@@ -71,8 +67,8 @@ i0.ɵɵngDeclareClassMetadata({
71
67
  }]
72
68
  });
73
69
  var ResourceEditCardLazyComponent = class ResourceEditCardLazyComponent {
74
- constructor(cdr) {
75
- this.cdr = cdr;
70
+ constructor() {
71
+ this.cdr = inject(ChangeDetectorRef);
76
72
  this.canEdit = false;
77
73
  this.updated = new EventEmitter();
78
74
  this.componentRef = null;
@@ -117,7 +113,7 @@ var ResourceEditCardLazyComponent = class ResourceEditCardLazyComponent {
117
113
  version: "22.2.3",
118
114
  ngImport: i0,
119
115
  type: ResourceEditCardLazyComponent,
120
- deps: [{ token: i0.ChangeDetectorRef }],
116
+ deps: [],
121
117
  target: i0.ɵɵFactoryTarget.Component
122
118
  });
123
119
  }
@@ -126,7 +122,7 @@ var ResourceEditCardLazyComponent = class ResourceEditCardLazyComponent {
126
122
  minVersion: "14.0.0",
127
123
  version: "22.2.3",
128
124
  type: ResourceEditCardLazyComponent,
129
- isStandalone: false,
125
+ isStandalone: true,
130
126
  selector: "pw-resource-edit-card-lazy",
131
127
  inputs: {
132
128
  id: "id",
@@ -161,10 +157,9 @@ i0.ɵɵngDeclareClassMetadata({
161
157
  selector: "pw-resource-edit-card-lazy",
162
158
  template: `<ng-container #editCardContainer></ng-container>`,
163
159
  changeDetection: ChangeDetectionStrategy.OnPush,
164
- standalone: false
160
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
165
161
  }]
166
162
  }],
167
- ctorParameters: () => [{ type: i0.ChangeDetectorRef }],
168
163
  propDecorators: {
169
164
  container: [{
170
165
  type: ViewChild,
@@ -193,6 +188,7 @@ var ResourcePager = class ResourcePager {
193
188
  this.items = [];
194
189
  this.isLoaded = false;
195
190
  this.isLoadingMore = false;
191
+ this.hasError = false;
196
192
  this.page = 0;
197
193
  this.fetched = 0;
198
194
  this.total = 0;
@@ -208,6 +204,9 @@ var ResourcePager = class ResourcePager {
208
204
  get hasMore() {
209
205
  return this.fetched < this.total;
210
206
  }
207
+ get totalCount() {
208
+ return this.total;
209
+ }
211
210
  reset() {
212
211
  this.generation += 1;
213
212
  this.items = [];
@@ -216,6 +215,7 @@ var ResourcePager = class ResourcePager {
216
215
  this.total = 0;
217
216
  this.isLoaded = false;
218
217
  this.isLoadingMore = false;
218
+ this.hasError = false;
219
219
  this.fetchNext(this.generation, 0);
220
220
  }
221
221
  loadMore() {
@@ -233,6 +233,7 @@ var ResourcePager = class ResourcePager {
233
233
  this.fetchPage(this.page, this.pageSize).subscribe({
234
234
  next: (response) => {
235
235
  if (generation !== this.generation) return;
236
+ this.hasError = false;
236
237
  const posts = response?.posts ?? [];
237
238
  this.fetched += posts.length;
238
239
  this.total = posts.length ? response.object_count ?? this.fetched : this.fetched;
@@ -248,6 +249,7 @@ var ResourcePager = class ResourcePager {
248
249
  error: () => {
249
250
  if (generation !== this.generation) return;
250
251
  this.page -= 1;
252
+ this.hasError = true;
251
253
  this.finish();
252
254
  }
253
255
  });
@@ -263,11 +265,11 @@ const RELEASE_TAG_NAMES = {
263
265
  press: "Press Release Notes"
264
266
  };
265
267
  var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseComponent {
266
- constructor(injector, resourceService, tagService, cdr) {
267
- super(injector);
268
- this.resourceService = resourceService;
269
- this.tagService = tagService;
270
- this.cdr = cdr;
268
+ constructor() {
269
+ super(...arguments);
270
+ this.resourceService = inject(ResourceService);
271
+ this.tagService = inject(TagService);
272
+ this.cdr = inject(ChangeDetectorRef);
271
273
  this.releaseHeader = false;
272
274
  this.isReleasePress = false;
273
275
  this.isResource = false;
@@ -364,12 +366,7 @@ var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseC
364
366
  version: "22.2.3",
365
367
  ngImport: i0,
366
368
  type: ResourceNoteCardComponent,
367
- deps: [
368
- { token: i0.Injector },
369
- { token: ResourceService },
370
- { token: i2.TagService },
371
- { token: i0.ChangeDetectorRef }
372
- ],
369
+ deps: null,
373
370
  target: i0.ɵɵFactoryTarget.Component
374
371
  });
375
372
  }
@@ -378,7 +375,7 @@ var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseC
378
375
  minVersion: "17.0.0",
379
376
  version: "22.2.3",
380
377
  type: ResourceNoteCardComponent,
381
- isStandalone: false,
378
+ isStandalone: true,
382
379
  selector: "pw-resource-note-card",
383
380
  inputs: {
384
381
  releaseHeader: "releaseHeader",
@@ -399,42 +396,27 @@ var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseC
399
396
  dependencies: [
400
397
  {
401
398
  kind: "directive",
402
- type: i3.NgClass,
399
+ type: NgClass,
403
400
  selector: "[ngClass]",
404
401
  inputs: ["class", "ngClass"]
405
402
  },
406
403
  {
407
- kind: "directive",
408
- type: i4.RouterLink,
409
- selector: "[routerLink]",
410
- inputs: [
411
- "target",
412
- "queryParams",
413
- "fragment",
414
- "queryParamsHandling",
415
- "state",
416
- "info",
417
- "relativeTo",
418
- "preserveFragment",
419
- "skipLocationChange",
420
- "replaceUrl",
421
- "browserUrl",
422
- "routerLink"
423
- ]
404
+ kind: "ngmodule",
405
+ type: FormsModule
424
406
  },
425
407
  {
426
408
  kind: "directive",
427
- type: i5.DefaultValueAccessor,
409
+ type: i1.DefaultValueAccessor,
428
410
  selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
429
411
  },
430
412
  {
431
413
  kind: "directive",
432
- type: i5.NgControlStatus,
414
+ type: i1.NgControlStatus,
433
415
  selector: "[formControlName],[ngModel],[formControl]"
434
416
  },
435
417
  {
436
418
  kind: "directive",
437
- type: i5.NgModel,
419
+ type: i1.NgModel,
438
420
  selector: "[ngModel]:not([formControlName]):not([formControl])",
439
421
  inputs: [
440
422
  "name",
@@ -446,18 +428,27 @@ var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseC
446
428
  exportAs: ["ngModel"]
447
429
  },
448
430
  {
449
- kind: "component",
450
- type: i6.NoDataComponent,
451
- selector: "pw-no-data",
431
+ kind: "directive",
432
+ type: RouterLink,
433
+ selector: "[routerLink]",
452
434
  inputs: [
453
- "message",
454
- "description",
455
- "withImage"
435
+ "target",
436
+ "queryParams",
437
+ "fragment",
438
+ "queryParamsHandling",
439
+ "state",
440
+ "info",
441
+ "relativeTo",
442
+ "preserveFragment",
443
+ "skipLocationChange",
444
+ "replaceUrl",
445
+ "browserUrl",
446
+ "routerLink"
456
447
  ]
457
448
  },
458
449
  {
459
450
  kind: "component",
460
- type: i7.ProgressSpinner,
451
+ type: ProgressSpinner,
461
452
  selector: "p-progress-spinner, p-progressspinner",
462
453
  inputs: [
463
454
  "value",
@@ -470,9 +461,14 @@ var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseC
470
461
  ]
471
462
  },
472
463
  {
473
- kind: "directive",
474
- type: i8.LazyImgDirective,
475
- selector: "img"
464
+ kind: "component",
465
+ type: NoDataComponent,
466
+ selector: "pw-no-data",
467
+ inputs: [
468
+ "message",
469
+ "description",
470
+ "withImage"
471
+ ]
476
472
  },
477
473
  {
478
474
  kind: "component",
@@ -485,9 +481,14 @@ var ResourceNoteCardComponent = class ResourceNoteCardComponent extends AppBaseC
485
481
  ],
486
482
  outputs: ["updated"]
487
483
  },
484
+ {
485
+ kind: "directive",
486
+ type: LazyImgDirective,
487
+ selector: "img"
488
+ },
488
489
  {
489
490
  kind: "pipe",
490
- type: i10.TranslocoPipe,
491
+ type: TranslocoPipe,
491
492
  name: "transloco"
492
493
  }
493
494
  ],
@@ -505,17 +506,22 @@ i0.ɵɵngDeclareClassMetadata({
505
506
  args: [{
506
507
  selector: "pw-resource-note-card",
507
508
  changeDetection: ChangeDetectionStrategy.OnPush,
508
- standalone: false,
509
+ imports: [
510
+ NgClass,
511
+ FormsModule,
512
+ RouterLink,
513
+ Bind,
514
+ ProgressSpinner,
515
+ NoDataComponent,
516
+ ResourceEditCardLazyComponent,
517
+ LazyImgDirective,
518
+ TranslocoPipe
519
+ ],
520
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
509
521
  template: "@if (hasReleases('product')) {\n<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (postTags['product']?.title) {\n <span [innerHTML]=\"postTags['product']?.title\"></span>\n } @else {\n Product Release Notes\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle('product')\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n @if (!postSlice) {\n <a class=\"view-all\" routerLink=\"/resources/release-notes\">VIEW ALL ></a>\n }\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (releasePosts['product']?.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (hasReleases('product')) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of releasePosts['product']; track post.id; let i = $index) {\n <div class=\"resource-blog-card p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadReleases('product')\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title\"></p>\n @if (!post.picture?.url?.includes('default-photo.jpg')) {\n <img\n src=\"{{ post.picture.url }}\"\n class=\"resource-image mt-auto\"\n alt=\"Product Resource Icon\"\n width=\"240\"\n height=\"240\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n } @else {\n <img\n src=\"assets/img/resource/rocket-box.png\"\n class=\"press-release-icon mt-auto\"\n alt=\"Product Resource Default Icon\"\n width=\"240\"\n height=\"240\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n }\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (postSlice && pagers['product']?.hasMore) {\n <button type=\"button\" class=\"resource-load-more\" [disabled]=\"isLoadingMore['product']\" (click)=\"pagers['product'].loadMore()\">\n {{ 'Resource.LoadMore' | transloco }}\n </button>\n }\n }\n </div>\n</section>\n}\n@if (isReleasePress && hasReleases('press')) {\n<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isPressEditingTitle }\">\n @if (!isPressEditingTitle) {\n @if (postTags['press']?.title) {\n <span [innerHTML]=\"postTags['press']?.title\"></span>\n } @else {\n Press Release Notes\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditPressTitle()\" (keydown.enter)=\"toggleEditPressTitle()\" (keydown.space)=\"toggleEditPressTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isPressEditingTitle }\" id=\"input_editedTitle_1600\" name=\"input_editedTitle_1600\"\n aria-label=\"Input Edited Title 1600\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle('press')\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isPressEditingTitle = false\">Cancel</button>\n }\n </h2>\n @if (!postSlice) {\n <a class=\"view-all\" routerLink=\"/resources/release-notes\">VIEW ALL ></a>\n }\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (releasePosts['press']?.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (hasReleases('press')) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of releasePosts['press']; track post.id; let i = $index) {\n <div class=\"resource-blog-card p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadReleases('press')\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title\"></p>\n @if (!post.picture?.url.includes('default-photo.jpg')) {\n <img\n src=\"{{ post.picture.url }}\"\n class=\"resource-image mt-auto\"\n alt=\"Press Resource Icon\"\n width=\"240\"\n height=\"240\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n } @else {\n <img\n src=\"assets/img/resource/rocket-box.png\"\n class=\"press-release-icon mt-auto\"\n alt=\"Press Resource Default Icon\"\n width=\"240\"\n height=\"240\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n }\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (postSlice && pagers['press']?.hasMore) {\n <button type=\"button\" class=\"resource-load-more\" [disabled]=\"isLoadingMore['press']\" (click)=\"pagers['press'].loadMore()\">\n {{ 'Resource.LoadMore' | transloco }}\n </button>\n }\n }\n </div>\n</section>\n}\n",
510
522
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n", ".resource-load-more{display:block;margin:4rem auto 0;padding:10px 32px;border-radius:24px;border:1px solid var(--text-color, black);background-color:var(--text-color, black);color:#fff;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease}.resource-load-more:hover:not(:disabled){background:#fff;color:var(--text-color, black)}.resource-load-more:disabled{opacity:.6;cursor:default}\n"]
511
523
  }]
512
524
  }],
513
- ctorParameters: () => [
514
- { type: i0.Injector },
515
- { type: ResourceService },
516
- { type: i2.TagService },
517
- { type: i0.ChangeDetectorRef }
518
- ],
519
525
  propDecorators: {
520
526
  releaseHeader: [{ type: Input }],
521
527
  categoryId: [{ type: Input }],
@@ -528,7 +534,20 @@ i0.ɵɵngDeclareClassMetadata({
528
534
  userLoggedIn: [{ type: Input }]
529
535
  }
530
536
  });
531
- var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseComponent {
537
+ var ResourceVideoCardComponent = class ResourceVideoCardComponent extends AppBaseComponent {
538
+ constructor() {
539
+ super(...arguments);
540
+ this.sanitizer = inject(DomSanitizer);
541
+ this.resourceService = inject(ResourceService);
542
+ this.tagService = inject(TagService);
543
+ this.cdr = inject(ChangeDetectorRef);
544
+ this.showVideoSection = false;
545
+ this.postSlice = false;
546
+ this.canEditResourcesValue = false;
547
+ this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
548
+ this.videoStates = {};
549
+ this.isEditingTitle = false;
550
+ }
532
551
  get posts() {
533
552
  return this.pager?.items ?? [];
534
553
  }
@@ -538,18 +557,6 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
538
557
  get isLoadingMore() {
539
558
  return this.pager?.isLoadingMore ?? false;
540
559
  }
541
- constructor(injector, resourceService, tagService, cdr) {
542
- super(injector);
543
- this.resourceService = resourceService;
544
- this.tagService = tagService;
545
- this.cdr = cdr;
546
- this.showCaseStudyHeader = false;
547
- this.postSlice = false;
548
- this.canEditResourcesValue = false;
549
- this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
550
- this.companyName = this.appConfig.company.name;
551
- this.isEditingTitle = false;
552
- }
553
560
  ngOnInit() {
554
561
  if (this.userLoggedIn) this.localStorage.getItem$("product").subscribe((res) => {
555
562
  const data = res ? JSON.parse(res) : null;
@@ -563,17 +570,35 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
563
570
  if (this.userLoggedIn && this.user) this.updateCanEditResourcesValue();
564
571
  }
565
572
  }
573
+ loadVideo(post) {
574
+ if (!post.external_url) return;
575
+ const slug = post.slug;
576
+ let externalUrl = post.external_url;
577
+ externalUrl += externalUrl.includes("?") ? "&autoplay=1" : "?autoplay=1";
578
+ this.videoStates[slug].url = this.sanitizer.bypassSecurityTrustResourceUrl(externalUrl);
579
+ }
566
580
  loadPosts() {
567
581
  this.pager = ResourcePager.forPublicPosts(this.resourceService, () => ({
568
582
  subscriptionId: this.getEffectiveSubscriptionId(),
569
583
  tagCategoryIds: this.categoryId
570
- }), () => this.cdr.markForCheck(), (post) => post.showcase === true, this.postSlice ? 15 : 3);
584
+ }), () => {
585
+ this.syncVideoStates();
586
+ this.cdr.markForCheck();
587
+ }, (post) => post.showcase === true, this.postSlice ? 15 : 3);
571
588
  this.pager.reset();
572
589
  }
573
590
  onWindowScroll() {
574
591
  if (this.postSlice) this.pager?.loadMoreIfNearBottom();
575
592
  }
576
- toggleEditTitle() {
593
+ syncVideoStates() {
594
+ this.posts.forEach((post) => {
595
+ if (post.external_url && !this.videoStates[post.slug]) this.videoStates[post.slug] = {
596
+ loaded: true,
597
+ url: this.sanitizer.bypassSecurityTrustResourceUrl(post.external_url)
598
+ };
599
+ });
600
+ }
601
+ toggleTagEditTitle() {
577
602
  this.isEditingTitle = true;
578
603
  this.editedTitle = this.resourceTitle;
579
604
  }
@@ -601,13 +626,8 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
601
626
  minVersion: "12.0.0",
602
627
  version: "22.2.3",
603
628
  ngImport: i0,
604
- type: CaseStudyCardComponent,
605
- deps: [
606
- { token: i0.Injector },
607
- { token: ResourceService },
608
- { token: i2.TagService },
609
- { token: i0.ChangeDetectorRef }
610
- ],
629
+ type: ResourceVideoCardComponent,
630
+ deps: null,
611
631
  target: i0.ɵɵFactoryTarget.Component
612
632
  });
613
633
  }
@@ -615,14 +635,14 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
615
635
  this.ɵcmp = i0.ɵɵngDeclareComponent({
616
636
  minVersion: "17.0.0",
617
637
  version: "22.2.3",
618
- type: CaseStudyCardComponent,
619
- isStandalone: false,
620
- selector: "pw-case-studies-card",
638
+ type: ResourceVideoCardComponent,
639
+ isStandalone: true,
640
+ selector: "pw-resource-video-card",
621
641
  inputs: {
622
- showCaseStudyHeader: "showCaseStudyHeader",
642
+ showVideoSection: "showVideoSection",
623
643
  categoryId: "categoryId",
624
- postSlice: "postSlice",
625
644
  tag: "tag",
645
+ postSlice: "postSlice",
626
646
  resourceTitle: "resourceTitle",
627
647
  user: "user",
628
648
  userLoggedIn: "userLoggedIn"
@@ -631,57 +651,32 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
631
651
  usesInheritance: true,
632
652
  usesOnChanges: true,
633
653
  ngImport: i0,
634
- template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\" id=\"case-studies\">\n <div class=\"container\">\n @if (showCaseStudyHeader) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n <a class=\"view-all\" routerLink=\"/resources/case-studies\">VIEW ALL ></a>\n </div>\n } @else {\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n </div>\n }\n\n\n <ng-template #caseStudyHeaderTemplate>\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span>\n <span [innerHTML]=\"resourceTitle\"></span>\n </span>\n } @else {\n Case Studies\n }\n @if (canEditResourcesValue) {\n <i\n class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\"\n (click)=\"toggleEditTitle()\"\n (keydown.enter)=\"toggleEditTitle()\"\n (keydown.space)=\"toggleEditTitle()\"\n title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n\n </h2>\n </ng-template>\n\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"testimonial-box\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <div>\n @if (!post.rectangular_picture.url.includes('default-photo.jpg') ) {\n <img [src]=\"post.rectangular_picture.url\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\"\n width=\"320\"\n height=\"180\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n }\n <p class=\"mb-4 mt-3 testimonial-section\">\n <span [innerHTML]=\"post.title\"></span>\n </p>\n </div>\n <!-- BOTTOM AVATAR -->\n <div class=\"avatar-container mt-5\">\n @if (post.picture.url && !post.picture.url.includes('default-photo.jpg')) {\n <img [src]=\"post.picture.url\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\"\n width=\"96\"\n height=\"96\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n @if (post?.external_url) {\n <a\n class=\"read-more-btn-overlay\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"read-more-btn-overlay\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
635
- styles: [".resource-vault-section{background:#fff;text-align:center;padding:3rem 0}.section-outer,.container{padding:0 15px}.d-md-flex{display:flex}.justify-content-between{justify-content:space-between}.align-items-start{align-items:flex-start}.vault-heading{font-size:2rem;font-weight:700}.video-row{margin-top:3rem;gap:5.5rem!important}.row{display:flex;flex-wrap:wrap}.col-md-6,.col-lg-4{flex:0 0 auto;width:100%}@media(width>=768px){.col-md-6,.col-lg-4{width:50%}}@media(width>=992px){.col-md-6,.col-lg-4{width:33.3333%}}.mb-4{margin-bottom:1.5rem}.testimonial-box{display:flex;flex-direction:column;justify-content:space-between;background:#fff;color:#000;border-radius:20px;box-shadow:0 0 20px #0000001a;text-align:center;width:338px;height:auto;padding:2.5rem 1.5rem;font-size:1.1rem;min-height:421.4px!important}.testimonial-box .testimonial-section{font-size:1.5rem;line-height:2rem;font-weight:400;color:var(--text-color, black)}.testimonial-box .testimonial-section strong{display:block}.testimonial-box .company-logo{width:100%!important;height:auto!important;max-width:150px!important;object-fit:contain;align-self:center}.testimonial-box .avatar-container{margin-top:auto;position:relative;display:inline-block}.testimonial-box .avatar-container .testimonial-avatar{width:60%;aspect-ratio:1/1;height:auto;border-radius:50%;object-fit:fill}.testimonial-box .avatar-container .read-more-btn-overlay{position:absolute;text-decoration:none!important;bottom:0;left:50%;transform:translate(-50%);background-color:var(--text-color, black);color:#fff;width:240px;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.testimonial-box .avatar-container .read-more-btn-overlay:hover{background:#fff;color:var(--text-color, black)!important}.testimonial-box .avatar-container .read-more-btn-overlay .arrow{margin-bottom:.3rem}\n"],
654
+ template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVideoSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n On-Demand Videos\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/videos\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"resource-blog-card\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p [innerHTML]=\"post.title\" class=\"mb-5\"></p>\n <a [href]=\" post.external_url\" target=\"_blank\">\n <img\n [src]=\"post.picture?.url\"\n class=\"img-fluid mb-3\"\n [alt]=\"post.title\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n </a>\n <a class=\"resource-btn mt-3\" [href]=\" post.external_url\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Watch now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n\n</section>\n",
655
+ styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"],
636
656
  dependencies: [
637
657
  {
638
658
  kind: "directive",
639
- type: i3.NgClass,
659
+ type: NgClass,
640
660
  selector: "[ngClass]",
641
661
  inputs: ["class", "ngClass"]
642
662
  },
643
663
  {
644
- kind: "directive",
645
- type: i3.NgTemplateOutlet,
646
- selector: "[ngTemplateOutlet]",
647
- inputs: [
648
- "ngTemplateOutletContext",
649
- "ngTemplateOutlet",
650
- "ngTemplateOutletInjector"
651
- ]
652
- },
653
- {
654
- kind: "directive",
655
- type: i4.RouterLink,
656
- selector: "[routerLink]",
657
- inputs: [
658
- "target",
659
- "queryParams",
660
- "fragment",
661
- "queryParamsHandling",
662
- "state",
663
- "info",
664
- "relativeTo",
665
- "preserveFragment",
666
- "skipLocationChange",
667
- "replaceUrl",
668
- "browserUrl",
669
- "routerLink"
670
- ]
664
+ kind: "ngmodule",
665
+ type: FormsModule
671
666
  },
672
667
  {
673
668
  kind: "directive",
674
- type: i5.DefaultValueAccessor,
669
+ type: i1.DefaultValueAccessor,
675
670
  selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
676
671
  },
677
672
  {
678
673
  kind: "directive",
679
- type: i5.NgControlStatus,
674
+ type: i1.NgControlStatus,
680
675
  selector: "[formControlName],[ngModel],[formControl]"
681
676
  },
682
677
  {
683
678
  kind: "directive",
684
- type: i5.NgModel,
679
+ type: i1.NgModel,
685
680
  selector: "[ngModel]:not([formControlName]):not([formControl])",
686
681
  inputs: [
687
682
  "name",
@@ -693,18 +688,27 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
693
688
  exportAs: ["ngModel"]
694
689
  },
695
690
  {
696
- kind: "component",
697
- type: i6.NoDataComponent,
698
- selector: "pw-no-data",
691
+ kind: "directive",
692
+ type: RouterLink,
693
+ selector: "[routerLink]",
699
694
  inputs: [
700
- "message",
701
- "description",
702
- "withImage"
695
+ "target",
696
+ "queryParams",
697
+ "fragment",
698
+ "queryParamsHandling",
699
+ "state",
700
+ "info",
701
+ "relativeTo",
702
+ "preserveFragment",
703
+ "skipLocationChange",
704
+ "replaceUrl",
705
+ "browserUrl",
706
+ "routerLink"
703
707
  ]
704
708
  },
705
709
  {
706
710
  kind: "component",
707
- type: i7.ProgressSpinner,
711
+ type: ProgressSpinner,
708
712
  selector: "p-progress-spinner, p-progressspinner",
709
713
  inputs: [
710
714
  "value",
@@ -717,9 +721,14 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
717
721
  ]
718
722
  },
719
723
  {
720
- kind: "directive",
721
- type: i8.LazyImgDirective,
722
- selector: "img"
724
+ kind: "component",
725
+ type: NoDataComponent,
726
+ selector: "pw-no-data",
727
+ inputs: [
728
+ "message",
729
+ "description",
730
+ "withImage"
731
+ ]
723
732
  },
724
733
  {
725
734
  kind: "component",
@@ -732,9 +741,14 @@ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseCompone
732
741
  ],
733
742
  outputs: ["updated"]
734
743
  },
744
+ {
745
+ kind: "directive",
746
+ type: LazyImgDirective,
747
+ selector: "img"
748
+ },
735
749
  {
736
750
  kind: "pipe",
737
- type: i10.TranslocoPipe,
751
+ type: TranslocoPipe,
738
752
  name: "transloco"
739
753
  }
740
754
  ],
@@ -746,28 +760,33 @@ i0.ɵɵngDeclareClassMetadata({
746
760
  minVersion: "12.0.0",
747
761
  version: "22.2.3",
748
762
  ngImport: i0,
749
- type: CaseStudyCardComponent,
763
+ type: ResourceVideoCardComponent,
750
764
  decorators: [{
751
765
  type: Component,
752
766
  args: [{
753
- selector: "pw-case-studies-card",
767
+ selector: "pw-resource-video-card",
754
768
  changeDetection: ChangeDetectionStrategy.OnPush,
755
- standalone: false,
756
- template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\" id=\"case-studies\">\n <div class=\"container\">\n @if (showCaseStudyHeader) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n <a class=\"view-all\" routerLink=\"/resources/case-studies\">VIEW ALL ></a>\n </div>\n } @else {\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n </div>\n }\n\n\n <ng-template #caseStudyHeaderTemplate>\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span>\n <span [innerHTML]=\"resourceTitle\"></span>\n </span>\n } @else {\n Case Studies\n }\n @if (canEditResourcesValue) {\n <i\n class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\"\n (click)=\"toggleEditTitle()\"\n (keydown.enter)=\"toggleEditTitle()\"\n (keydown.space)=\"toggleEditTitle()\"\n title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n\n </h2>\n </ng-template>\n\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"testimonial-box\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <div>\n @if (!post.rectangular_picture.url.includes('default-photo.jpg') ) {\n <img [src]=\"post.rectangular_picture.url\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\"\n width=\"320\"\n height=\"180\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n }\n <p class=\"mb-4 mt-3 testimonial-section\">\n <span [innerHTML]=\"post.title\"></span>\n </p>\n </div>\n <!-- BOTTOM AVATAR -->\n <div class=\"avatar-container mt-5\">\n @if (post.picture.url && !post.picture.url.includes('default-photo.jpg')) {\n <img [src]=\"post.picture.url\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\"\n width=\"96\"\n height=\"96\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n @if (post?.external_url) {\n <a\n class=\"read-more-btn-overlay\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"read-more-btn-overlay\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
757
- styles: [".resource-vault-section{background:#fff;text-align:center;padding:3rem 0}.section-outer,.container{padding:0 15px}.d-md-flex{display:flex}.justify-content-between{justify-content:space-between}.align-items-start{align-items:flex-start}.vault-heading{font-size:2rem;font-weight:700}.video-row{margin-top:3rem;gap:5.5rem!important}.row{display:flex;flex-wrap:wrap}.col-md-6,.col-lg-4{flex:0 0 auto;width:100%}@media(width>=768px){.col-md-6,.col-lg-4{width:50%}}@media(width>=992px){.col-md-6,.col-lg-4{width:33.3333%}}.mb-4{margin-bottom:1.5rem}.testimonial-box{display:flex;flex-direction:column;justify-content:space-between;background:#fff;color:#000;border-radius:20px;box-shadow:0 0 20px #0000001a;text-align:center;width:338px;height:auto;padding:2.5rem 1.5rem;font-size:1.1rem;min-height:421.4px!important}.testimonial-box .testimonial-section{font-size:1.5rem;line-height:2rem;font-weight:400;color:var(--text-color, black)}.testimonial-box .testimonial-section strong{display:block}.testimonial-box .company-logo{width:100%!important;height:auto!important;max-width:150px!important;object-fit:contain;align-self:center}.testimonial-box .avatar-container{margin-top:auto;position:relative;display:inline-block}.testimonial-box .avatar-container .testimonial-avatar{width:60%;aspect-ratio:1/1;height:auto;border-radius:50%;object-fit:fill}.testimonial-box .avatar-container .read-more-btn-overlay{position:absolute;text-decoration:none!important;bottom:0;left:50%;transform:translate(-50%);background-color:var(--text-color, black);color:#fff;width:240px;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.testimonial-box .avatar-container .read-more-btn-overlay:hover{background:#fff;color:var(--text-color, black)!important}.testimonial-box .avatar-container .read-more-btn-overlay .arrow{margin-bottom:.3rem}\n"]
769
+ imports: [
770
+ NgClass,
771
+ FormsModule,
772
+ RouterLink,
773
+ Bind,
774
+ ProgressSpinner,
775
+ NoDataComponent,
776
+ ResourceEditCardLazyComponent,
777
+ LazyImgDirective,
778
+ TranslocoPipe
779
+ ],
780
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
781
+ template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVideoSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n On-Demand Videos\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/videos\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"resource-blog-card\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p [innerHTML]=\"post.title\" class=\"mb-5\"></p>\n <a [href]=\" post.external_url\" target=\"_blank\">\n <img\n [src]=\"post.picture?.url\"\n class=\"img-fluid mb-3\"\n [alt]=\"post.title\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n </a>\n <a class=\"resource-btn mt-3\" [href]=\" post.external_url\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Watch now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n\n</section>\n",
782
+ styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"]
758
783
  }]
759
784
  }],
760
- ctorParameters: () => [
761
- { type: i0.Injector },
762
- { type: ResourceService },
763
- { type: i2.TagService },
764
- { type: i0.ChangeDetectorRef }
765
- ],
766
785
  propDecorators: {
767
- showCaseStudyHeader: [{ type: Input }],
786
+ showVideoSection: [{ type: Input }],
768
787
  categoryId: [{ type: Input }],
769
- postSlice: [{ type: Input }],
770
788
  tag: [{ type: Input }],
789
+ postSlice: [{ type: Input }],
771
790
  resourceTitle: [{ type: Input }],
772
791
  user: [{ type: Input }],
773
792
  userLoggedIn: [{ type: Input }],
@@ -777,17 +796,27 @@ i0.ɵɵngDeclareClassMetadata({
777
796
  }]
778
797
  }
779
798
  });
780
- var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent {
781
- constructor(injector, resourceService, tagService, cdr) {
782
- super(injector);
783
- this.resourceService = resourceService;
784
- this.tagService = tagService;
785
- this.cdr = cdr;
786
- this.isHeaderVisible = true;
787
- this.isRelated = false;
799
+ var CaseStudyCardComponent = class CaseStudyCardComponent extends AppBaseComponent {
800
+ constructor() {
801
+ super(...arguments);
802
+ this.resourceService = inject(ResourceService);
803
+ this.tagService = inject(TagService);
804
+ this.cdr = inject(ChangeDetectorRef);
805
+ this.showCaseStudyHeader = false;
788
806
  this.postSlice = false;
789
- this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
790
807
  this.canEditResourcesValue = false;
808
+ this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
809
+ this.companyName = this.appConfig.company.name;
810
+ this.isEditingTitle = false;
811
+ }
812
+ get posts() {
813
+ return this.pager?.items ?? [];
814
+ }
815
+ get isLoaded() {
816
+ return this.pager?.isLoaded ?? false;
817
+ }
818
+ get isLoadingMore() {
819
+ return this.pager?.isLoadingMore ?? false;
791
820
  }
792
821
  ngOnInit() {
793
822
  if (this.userLoggedIn) this.localStorage.getItem$("product").subscribe((res) => {
@@ -802,18 +831,6 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
802
831
  if (this.userLoggedIn && this.user) this.updateCanEditResourcesValue();
803
832
  }
804
833
  }
805
- get posts() {
806
- return this.pager?.items ?? [];
807
- }
808
- get isLoaded() {
809
- return this.pager?.isLoaded ?? false;
810
- }
811
- get isLoadingMore() {
812
- return this.pager?.isLoadingMore ?? false;
813
- }
814
- get hasMorePosts() {
815
- return this.postSlice && !!this.pager?.hasMore;
816
- }
817
834
  loadPosts() {
818
835
  this.pager = ResourcePager.forPublicPosts(this.resourceService, () => ({
819
836
  subscriptionId: this.getEffectiveSubscriptionId(),
@@ -824,7 +841,7 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
824
841
  onWindowScroll() {
825
842
  if (this.postSlice) this.pager?.loadMoreIfNearBottom();
826
843
  }
827
- toggleTagEditTitle() {
844
+ toggleEditTitle() {
828
845
  this.isEditingTitle = true;
829
846
  this.editedTitle = this.resourceTitle;
830
847
  }
@@ -844,18 +861,16 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
844
861
  canEditResources() {
845
862
  return this.canEditResourcesValue;
846
863
  }
864
+ trackByPostId(index, post) {
865
+ return post.id;
866
+ }
847
867
  static {
848
868
  this.ɵfac = i0.ɵɵngDeclareFactory({
849
869
  minVersion: "12.0.0",
850
870
  version: "22.2.3",
851
871
  ngImport: i0,
852
- type: ResourceCardComponent,
853
- deps: [
854
- { token: i0.Injector },
855
- { token: ResourceService },
856
- { token: i2.TagService },
857
- { token: i0.ChangeDetectorRef }
858
- ],
872
+ type: CaseStudyCardComponent,
873
+ deps: null,
859
874
  target: i0.ɵɵFactoryTarget.Component
860
875
  });
861
876
  }
@@ -863,18 +878,15 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
863
878
  this.ɵcmp = i0.ɵɵngDeclareComponent({
864
879
  minVersion: "17.0.0",
865
880
  version: "22.2.3",
866
- type: ResourceCardComponent,
867
- isStandalone: false,
868
- selector: "pw-resource-cards",
881
+ type: CaseStudyCardComponent,
882
+ isStandalone: true,
883
+ selector: "pw-case-studies-card",
869
884
  inputs: {
885
+ showCaseStudyHeader: "showCaseStudyHeader",
870
886
  categoryId: "categoryId",
871
- isHeaderVisible: "isHeaderVisible",
872
- isRelated: "isRelated",
873
- resourceTitle: "resourceTitle",
874
887
  postSlice: "postSlice",
875
- header: "header",
876
888
  tag: "tag",
877
- resourceLink: "resourceLink",
889
+ resourceTitle: "resourceTitle",
878
890
  user: "user",
879
891
  userLoggedIn: "userLoggedIn"
880
892
  },
@@ -882,18 +894,22 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
882
894
  usesInheritance: true,
883
895
  usesOnChanges: true,
884
896
  ngImport: i0,
885
- template: "<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n @if (isHeaderVisible) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Our team's articles\n }\n @if (!isRelated && canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9056\" name=\"input_editedTitle_9056\"\n aria-label=\"Input Edited Title 9056\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" [routerLink]=\"resourceLink\">VIEW ALL ></a>\n </div>\n }\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded && !hasMorePosts && !isLoadingMore) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post; let i = $index) {\n <div class=\"resource-blog-card p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title \"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\"\n /></a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n }\n </div>\n</section>",
886
- styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"],
897
+ template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\" id=\"case-studies\">\n <div class=\"container\">\n @if (showCaseStudyHeader) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n <a class=\"view-all\" routerLink=\"/resources/case-studies\">VIEW ALL ></a>\n </div>\n } @else {\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n </div>\n }\n\n\n <ng-template #caseStudyHeaderTemplate>\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span>\n <span [innerHTML]=\"resourceTitle\"></span>\n </span>\n } @else {\n Case Studies\n }\n @if (canEditResourcesValue) {\n <i\n class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\"\n (click)=\"toggleEditTitle()\"\n (keydown.enter)=\"toggleEditTitle()\"\n (keydown.space)=\"toggleEditTitle()\"\n title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n\n </h2>\n </ng-template>\n\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"testimonial-box\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <div>\n @if (!post.rectangular_picture.url.includes('default-photo.jpg') ) {\n <img [src]=\"post.rectangular_picture.url\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\"\n width=\"320\"\n height=\"180\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n }\n <p class=\"mb-4 mt-3 testimonial-section\">\n <span [innerHTML]=\"post.title\"></span>\n </p>\n </div>\n <!-- BOTTOM AVATAR -->\n <div class=\"avatar-container mt-5\">\n @if (post.picture.url && !post.picture.url.includes('default-photo.jpg')) {\n <img [src]=\"post.picture.url\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\"\n width=\"96\"\n height=\"96\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n @if (post?.external_url) {\n <a\n class=\"read-more-btn-overlay\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"read-more-btn-overlay\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
898
+ styles: [".resource-vault-section{background:#fff;text-align:center;padding:3rem 0}.section-outer,.container{padding:0 15px}.d-md-flex{display:flex}.justify-content-between{justify-content:space-between}.align-items-start{align-items:flex-start}.vault-heading{font-size:2rem;font-weight:700}.video-row{margin-top:3rem;gap:5.5rem!important}.row{display:flex;flex-wrap:wrap}.col-md-6,.col-lg-4{flex:0 0 auto;width:100%}@media(width>=768px){.col-md-6,.col-lg-4{width:50%}}@media(width>=992px){.col-md-6,.col-lg-4{width:33.3333%}}.mb-4{margin-bottom:1.5rem}.testimonial-box{display:flex;flex-direction:column;justify-content:space-between;background:#fff;color:#000;border-radius:20px;box-shadow:0 0 20px #0000001a;text-align:center;width:338px;height:auto;padding:2.5rem 1.5rem;font-size:1.1rem;min-height:421.4px!important}.testimonial-box .testimonial-section{font-size:1.5rem;line-height:2rem;font-weight:400;color:var(--text-color, black)}.testimonial-box .testimonial-section strong{display:block}.testimonial-box .company-logo{width:100%!important;height:auto!important;max-width:150px!important;object-fit:contain;align-self:center}.testimonial-box .avatar-container{margin-top:auto;position:relative;display:inline-block}.testimonial-box .avatar-container .testimonial-avatar{width:60%;aspect-ratio:1/1;height:auto;border-radius:50%;object-fit:fill}.testimonial-box .avatar-container .read-more-btn-overlay{position:absolute;text-decoration:none!important;bottom:0;left:50%;transform:translate(-50%);background-color:var(--text-color, black);color:#fff;width:240px;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.testimonial-box .avatar-container .read-more-btn-overlay:hover{background:#fff;color:var(--text-color, black)!important}.testimonial-box .avatar-container .read-more-btn-overlay .arrow{margin-bottom:.3rem}\n"],
887
899
  dependencies: [
888
900
  {
889
901
  kind: "directive",
890
- type: i3.NgClass,
891
- selector: "[ngClass]",
892
- inputs: ["class", "ngClass"]
902
+ type: NgTemplateOutlet,
903
+ selector: "[ngTemplateOutlet]",
904
+ inputs: [
905
+ "ngTemplateOutletContext",
906
+ "ngTemplateOutlet",
907
+ "ngTemplateOutletInjector"
908
+ ]
893
909
  },
894
910
  {
895
911
  kind: "directive",
896
- type: i4.RouterLink,
912
+ type: RouterLink,
897
913
  selector: "[routerLink]",
898
914
  inputs: [
899
915
  "target",
@@ -912,17 +928,27 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
912
928
  },
913
929
  {
914
930
  kind: "directive",
915
- type: i5.DefaultValueAccessor,
931
+ type: NgClass,
932
+ selector: "[ngClass]",
933
+ inputs: ["class", "ngClass"]
934
+ },
935
+ {
936
+ kind: "ngmodule",
937
+ type: FormsModule
938
+ },
939
+ {
940
+ kind: "directive",
941
+ type: i1.DefaultValueAccessor,
916
942
  selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
917
943
  },
918
944
  {
919
945
  kind: "directive",
920
- type: i5.NgControlStatus,
946
+ type: i1.NgControlStatus,
921
947
  selector: "[formControlName],[ngModel],[formControl]"
922
948
  },
923
949
  {
924
950
  kind: "directive",
925
- type: i5.NgModel,
951
+ type: i1.NgModel,
926
952
  selector: "[ngModel]:not([formControlName]):not([formControl])",
927
953
  inputs: [
928
954
  "name",
@@ -935,17 +961,254 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
935
961
  },
936
962
  {
937
963
  kind: "component",
938
- type: i6.NoDataComponent,
939
- selector: "pw-no-data",
964
+ type: ProgressSpinner,
965
+ selector: "p-progress-spinner, p-progressspinner",
940
966
  inputs: [
941
- "message",
942
- "description",
967
+ "value",
968
+ "strokeWidth",
969
+ "animationDuration",
970
+ "min",
971
+ "max",
972
+ "ariaLabel",
973
+ "fill"
974
+ ]
975
+ },
976
+ {
977
+ kind: "component",
978
+ type: NoDataComponent,
979
+ selector: "pw-no-data",
980
+ inputs: [
981
+ "message",
982
+ "description",
943
983
  "withImage"
944
984
  ]
945
985
  },
946
986
  {
947
987
  kind: "component",
948
- type: i7.ProgressSpinner,
988
+ type: ResourceEditCardLazyComponent,
989
+ selector: "pw-resource-edit-card-lazy",
990
+ inputs: [
991
+ "id",
992
+ "resourceData",
993
+ "canEdit"
994
+ ],
995
+ outputs: ["updated"]
996
+ },
997
+ {
998
+ kind: "directive",
999
+ type: LazyImgDirective,
1000
+ selector: "img"
1001
+ },
1002
+ {
1003
+ kind: "pipe",
1004
+ type: TranslocoPipe,
1005
+ name: "transloco"
1006
+ }
1007
+ ],
1008
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1009
+ });
1010
+ }
1011
+ };
1012
+ i0.ɵɵngDeclareClassMetadata({
1013
+ minVersion: "12.0.0",
1014
+ version: "22.2.3",
1015
+ ngImport: i0,
1016
+ type: CaseStudyCardComponent,
1017
+ decorators: [{
1018
+ type: Component,
1019
+ args: [{
1020
+ selector: "pw-case-studies-card",
1021
+ changeDetection: ChangeDetectionStrategy.OnPush,
1022
+ imports: [
1023
+ NgTemplateOutlet,
1024
+ RouterLink,
1025
+ NgClass,
1026
+ FormsModule,
1027
+ Bind,
1028
+ ProgressSpinner,
1029
+ NoDataComponent,
1030
+ ResourceEditCardLazyComponent,
1031
+ LazyImgDirective,
1032
+ ResourceVideoCardComponent,
1033
+ TranslocoPipe
1034
+ ],
1035
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
1036
+ template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\" id=\"case-studies\">\n <div class=\"container\">\n @if (showCaseStudyHeader) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n <a class=\"view-all\" routerLink=\"/resources/case-studies\">VIEW ALL ></a>\n </div>\n } @else {\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <ng-container *ngTemplateOutlet=\"caseStudyHeaderTemplate\"></ng-container>\n </div>\n }\n\n\n <ng-template #caseStudyHeaderTemplate>\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span>\n <span [innerHTML]=\"resourceTitle\"></span>\n </span>\n } @else {\n Case Studies\n }\n @if (canEditResourcesValue) {\n <i\n class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\"\n (click)=\"toggleEditTitle()\"\n (keydown.enter)=\"toggleEditTitle()\"\n (keydown.space)=\"toggleEditTitle()\"\n title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n\n </h2>\n </ng-template>\n\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"testimonial-box\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <div>\n @if (!post.rectangular_picture.url.includes('default-photo.jpg') ) {\n <img [src]=\"post.rectangular_picture.url\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\"\n width=\"320\"\n height=\"180\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n }\n <p class=\"mb-4 mt-3 testimonial-section\">\n <span [innerHTML]=\"post.title\"></span>\n </p>\n </div>\n <!-- BOTTOM AVATAR -->\n <div class=\"avatar-container mt-5\">\n @if (post.picture.url && !post.picture.url.includes('default-photo.jpg')) {\n <img [src]=\"post.picture.url\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\"\n width=\"96\"\n height=\"96\"\n loading=\"lazy\"\n decoding=\"async\" />\n }\n @if (post?.external_url) {\n <a\n class=\"read-more-btn-overlay\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"read-more-btn-overlay\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
1037
+ styles: [".resource-vault-section{background:#fff;text-align:center;padding:3rem 0}.section-outer,.container{padding:0 15px}.d-md-flex{display:flex}.justify-content-between{justify-content:space-between}.align-items-start{align-items:flex-start}.vault-heading{font-size:2rem;font-weight:700}.video-row{margin-top:3rem;gap:5.5rem!important}.row{display:flex;flex-wrap:wrap}.col-md-6,.col-lg-4{flex:0 0 auto;width:100%}@media(width>=768px){.col-md-6,.col-lg-4{width:50%}}@media(width>=992px){.col-md-6,.col-lg-4{width:33.3333%}}.mb-4{margin-bottom:1.5rem}.testimonial-box{display:flex;flex-direction:column;justify-content:space-between;background:#fff;color:#000;border-radius:20px;box-shadow:0 0 20px #0000001a;text-align:center;width:338px;height:auto;padding:2.5rem 1.5rem;font-size:1.1rem;min-height:421.4px!important}.testimonial-box .testimonial-section{font-size:1.5rem;line-height:2rem;font-weight:400;color:var(--text-color, black)}.testimonial-box .testimonial-section strong{display:block}.testimonial-box .company-logo{width:100%!important;height:auto!important;max-width:150px!important;object-fit:contain;align-self:center}.testimonial-box .avatar-container{margin-top:auto;position:relative;display:inline-block}.testimonial-box .avatar-container .testimonial-avatar{width:60%;aspect-ratio:1/1;height:auto;border-radius:50%;object-fit:fill}.testimonial-box .avatar-container .read-more-btn-overlay{position:absolute;text-decoration:none!important;bottom:0;left:50%;transform:translate(-50%);background-color:var(--text-color, black);color:#fff;width:240px;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.testimonial-box .avatar-container .read-more-btn-overlay:hover{background:#fff;color:var(--text-color, black)!important}.testimonial-box .avatar-container .read-more-btn-overlay .arrow{margin-bottom:.3rem}\n"]
1038
+ }]
1039
+ }],
1040
+ propDecorators: {
1041
+ showCaseStudyHeader: [{ type: Input }],
1042
+ categoryId: [{ type: Input }],
1043
+ postSlice: [{ type: Input }],
1044
+ tag: [{ type: Input }],
1045
+ resourceTitle: [{ type: Input }],
1046
+ user: [{ type: Input }],
1047
+ userLoggedIn: [{ type: Input }],
1048
+ onWindowScroll: [{
1049
+ type: HostListener,
1050
+ args: ["window:scroll"]
1051
+ }]
1052
+ }
1053
+ });
1054
+ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent {
1055
+ constructor() {
1056
+ super(...arguments);
1057
+ this.resourceService = inject(ResourceService);
1058
+ this.tagService = inject(TagService);
1059
+ this.cdr = inject(ChangeDetectorRef);
1060
+ this.isHeaderVisible = true;
1061
+ this.isRelated = false;
1062
+ this.postSlice = false;
1063
+ this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
1064
+ this.canEditResourcesValue = false;
1065
+ }
1066
+ ngOnInit() {
1067
+ if (this.userLoggedIn) this.localStorage.getItem$("product").subscribe((res) => {
1068
+ const data = res ? JSON.parse(res) : null;
1069
+ this.subscriptionId = data?.subscriptionId;
1070
+ this.cdr.markForCheck();
1071
+ });
1072
+ this.loadPosts();
1073
+ }
1074
+ ngOnChanges(changes) {
1075
+ if (changes["user"] || changes["userLoggedIn"]) {
1076
+ if (this.userLoggedIn && this.user) this.updateCanEditResourcesValue();
1077
+ }
1078
+ }
1079
+ get posts() {
1080
+ return this.pager?.items ?? [];
1081
+ }
1082
+ get isLoaded() {
1083
+ return this.pager?.isLoaded ?? false;
1084
+ }
1085
+ get isLoadingMore() {
1086
+ return this.pager?.isLoadingMore ?? false;
1087
+ }
1088
+ get hasMorePosts() {
1089
+ return this.postSlice && !!this.pager?.hasMore;
1090
+ }
1091
+ loadPosts() {
1092
+ this.pager = ResourcePager.forPublicPosts(this.resourceService, () => ({
1093
+ subscriptionId: this.getEffectiveSubscriptionId(),
1094
+ tagCategoryIds: this.categoryId
1095
+ }), () => this.cdr.markForCheck(), (post) => post.showcase === true, this.postSlice ? 15 : 3);
1096
+ this.pager.reset();
1097
+ }
1098
+ onWindowScroll() {
1099
+ if (this.postSlice) this.pager?.loadMoreIfNearBottom();
1100
+ }
1101
+ toggleTagEditTitle() {
1102
+ this.isEditingTitle = true;
1103
+ this.editedTitle = this.resourceTitle;
1104
+ }
1105
+ saveEditedTitle() {
1106
+ HelperService.updateTagTitle(this.tag, this.editedTitle, this.tagService, this.getEffectiveSubscriptionId(), this.toast).subscribe(() => {
1107
+ this.resourceTitle = this.editedTitle;
1108
+ this.isEditingTitle = false;
1109
+ this.cdr.markForCheck();
1110
+ });
1111
+ }
1112
+ getEffectiveSubscriptionId() {
1113
+ return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId);
1114
+ }
1115
+ updateCanEditResourcesValue() {
1116
+ this.canEditResourcesValue = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
1117
+ }
1118
+ canEditResources() {
1119
+ return this.canEditResourcesValue;
1120
+ }
1121
+ static {
1122
+ this.ɵfac = i0.ɵɵngDeclareFactory({
1123
+ minVersion: "12.0.0",
1124
+ version: "22.2.3",
1125
+ ngImport: i0,
1126
+ type: ResourceCardComponent,
1127
+ deps: null,
1128
+ target: i0.ɵɵFactoryTarget.Component
1129
+ });
1130
+ }
1131
+ static {
1132
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
1133
+ minVersion: "17.0.0",
1134
+ version: "22.2.3",
1135
+ type: ResourceCardComponent,
1136
+ isStandalone: true,
1137
+ selector: "pw-resource-cards",
1138
+ inputs: {
1139
+ categoryId: "categoryId",
1140
+ isHeaderVisible: "isHeaderVisible",
1141
+ isRelated: "isRelated",
1142
+ resourceTitle: "resourceTitle",
1143
+ postSlice: "postSlice",
1144
+ header: "header",
1145
+ tag: "tag",
1146
+ resourceLink: "resourceLink",
1147
+ user: "user",
1148
+ userLoggedIn: "userLoggedIn"
1149
+ },
1150
+ host: { listeners: { "window:scroll": "onWindowScroll()" } },
1151
+ usesInheritance: true,
1152
+ usesOnChanges: true,
1153
+ ngImport: i0,
1154
+ template: "<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n @if (isHeaderVisible) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Our team's articles\n }\n @if (!isRelated && canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9056\" name=\"input_editedTitle_9056\"\n aria-label=\"Input Edited Title 9056\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" [routerLink]=\"resourceLink\">VIEW ALL ></a>\n </div>\n }\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded && !hasMorePosts && !isLoadingMore) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post; let i = $index) {\n <div class=\"resource-blog-card p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title \"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\"\n /></a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n }\n </div>\n</section>",
1155
+ styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"],
1156
+ dependencies: [
1157
+ {
1158
+ kind: "directive",
1159
+ type: NgClass,
1160
+ selector: "[ngClass]",
1161
+ inputs: ["class", "ngClass"]
1162
+ },
1163
+ {
1164
+ kind: "ngmodule",
1165
+ type: FormsModule
1166
+ },
1167
+ {
1168
+ kind: "directive",
1169
+ type: i1.DefaultValueAccessor,
1170
+ selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
1171
+ },
1172
+ {
1173
+ kind: "directive",
1174
+ type: i1.NgControlStatus,
1175
+ selector: "[formControlName],[ngModel],[formControl]"
1176
+ },
1177
+ {
1178
+ kind: "directive",
1179
+ type: i1.NgModel,
1180
+ selector: "[ngModel]:not([formControlName]):not([formControl])",
1181
+ inputs: [
1182
+ "name",
1183
+ "disabled",
1184
+ "ngModel",
1185
+ "ngModelOptions"
1186
+ ],
1187
+ outputs: ["ngModelChange"],
1188
+ exportAs: ["ngModel"]
1189
+ },
1190
+ {
1191
+ kind: "directive",
1192
+ type: RouterLink,
1193
+ selector: "[routerLink]",
1194
+ inputs: [
1195
+ "target",
1196
+ "queryParams",
1197
+ "fragment",
1198
+ "queryParamsHandling",
1199
+ "state",
1200
+ "info",
1201
+ "relativeTo",
1202
+ "preserveFragment",
1203
+ "skipLocationChange",
1204
+ "replaceUrl",
1205
+ "browserUrl",
1206
+ "routerLink"
1207
+ ]
1208
+ },
1209
+ {
1210
+ kind: "component",
1211
+ type: ProgressSpinner,
949
1212
  selector: "p-progress-spinner, p-progressspinner",
950
1213
  inputs: [
951
1214
  "value",
@@ -958,9 +1221,14 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
958
1221
  ]
959
1222
  },
960
1223
  {
961
- kind: "directive",
962
- type: i8.LazyImgDirective,
963
- selector: "img"
1224
+ kind: "component",
1225
+ type: NoDataComponent,
1226
+ selector: "pw-no-data",
1227
+ inputs: [
1228
+ "message",
1229
+ "description",
1230
+ "withImage"
1231
+ ]
964
1232
  },
965
1233
  {
966
1234
  kind: "component",
@@ -973,9 +1241,14 @@ var ResourceCardComponent = class ResourceCardComponent extends AppBaseComponent
973
1241
  ],
974
1242
  outputs: ["updated"]
975
1243
  },
1244
+ {
1245
+ kind: "directive",
1246
+ type: LazyImgDirective,
1247
+ selector: "img"
1248
+ },
976
1249
  {
977
1250
  kind: "pipe",
978
- type: i10.TranslocoPipe,
1251
+ type: TranslocoPipe,
979
1252
  name: "transloco"
980
1253
  }
981
1254
  ],
@@ -993,17 +1266,23 @@ i0.ɵɵngDeclareClassMetadata({
993
1266
  args: [{
994
1267
  selector: "pw-resource-cards",
995
1268
  changeDetection: ChangeDetectionStrategy.OnPush,
996
- standalone: false,
1269
+ imports: [
1270
+ NgClass,
1271
+ FormsModule,
1272
+ RouterLink,
1273
+ Bind,
1274
+ ProgressSpinner,
1275
+ NoDataComponent,
1276
+ ResourceEditCardLazyComponent,
1277
+ LazyImgDirective,
1278
+ ResourceVideoCardComponent,
1279
+ TranslocoPipe
1280
+ ],
1281
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
997
1282
  template: "<section class=\"resource-vault-section bg-white\">\n <div class=\"container\">\n @if (isHeaderVisible) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Our team's articles\n }\n @if (!isRelated && canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9056\" name=\"input_editedTitle_9056\"\n aria-label=\"Input Edited Title 9056\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" [routerLink]=\"resourceLink\">VIEW ALL ></a>\n </div>\n }\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded && !hasMorePosts && !isLoadingMore) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post; let i = $index) {\n <div class=\"resource-blog-card p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"resource-title\" [innerHTML]=\"post.title \"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\"\n /></a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n }\n </div>\n</section>",
998
1283
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"]
999
1284
  }]
1000
1285
  }],
1001
- ctorParameters: () => [
1002
- { type: i0.Injector },
1003
- { type: ResourceService },
1004
- { type: i2.TagService },
1005
- { type: i0.ChangeDetectorRef }
1006
- ],
1007
1286
  propDecorators: {
1008
1287
  categoryId: [{ type: Input }],
1009
1288
  isHeaderVisible: [{ type: Input }],
@@ -1022,12 +1301,12 @@ i0.ɵɵngDeclareClassMetadata({
1022
1301
  }
1023
1302
  });
1024
1303
  var BaseResourceComponent = class BaseResourceComponent extends AppBaseComponent {
1025
- constructor(resourceService, tagService, authService, cdr, injector) {
1026
- super(injector);
1027
- this.resourceService = resourceService;
1028
- this.tagService = tagService;
1029
- this.authService = authService;
1030
- this.cdr = cdr;
1304
+ constructor() {
1305
+ super(...arguments);
1306
+ this.resourceService = inject(ResourceService);
1307
+ this.tagService = inject(TagService);
1308
+ this.authService = inject(AuthService);
1309
+ this.cdr = inject(ChangeDetectorRef);
1031
1310
  this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
1032
1311
  this.posts = [];
1033
1312
  this.testimonialsPosts = [];
@@ -1133,13 +1412,7 @@ var BaseResourceComponent = class BaseResourceComponent extends AppBaseComponent
1133
1412
  version: "22.2.3",
1134
1413
  ngImport: i0,
1135
1414
  type: BaseResourceComponent,
1136
- deps: [
1137
- { token: ResourceService },
1138
- { token: i2.TagService },
1139
- { token: i2.AuthService },
1140
- { token: i0.ChangeDetectorRef },
1141
- { token: i0.Injector }
1142
- ],
1415
+ deps: null,
1143
1416
  target: i0.ɵɵFactoryTarget.Component
1144
1417
  });
1145
1418
  }
@@ -1148,7 +1421,7 @@ var BaseResourceComponent = class BaseResourceComponent extends AppBaseComponent
1148
1421
  minVersion: "14.0.0",
1149
1422
  version: "22.2.3",
1150
1423
  type: BaseResourceComponent,
1151
- isStandalone: false,
1424
+ isStandalone: true,
1152
1425
  selector: "ng-component",
1153
1426
  usesInheritance: true,
1154
1427
  ngImport: i0,
@@ -1167,21 +1440,13 @@ i0.ɵɵngDeclareClassMetadata({
1167
1440
  type: Component,
1168
1441
  args: [{
1169
1442
  template: "",
1170
- changeDetection: ChangeDetectionStrategy.OnPush,
1171
- standalone: false
1443
+ changeDetection: ChangeDetectionStrategy.OnPush
1172
1444
  }]
1173
- }],
1174
- ctorParameters: () => [
1175
- { type: ResourceService },
1176
- { type: i2.TagService },
1177
- { type: i2.AuthService },
1178
- { type: i0.ChangeDetectorRef },
1179
- { type: i0.Injector }
1180
- ]
1445
+ }]
1181
1446
  });
1182
1447
  var ResourceVaultComponent = class ResourceVaultComponent extends BaseResourceComponent {
1183
- constructor(resourceService, tagService, authService, cdr, injector) {
1184
- super(resourceService, tagService, authService, cdr, injector);
1448
+ constructor() {
1449
+ super(...arguments);
1185
1450
  this.showVaultSection = false;
1186
1451
  this.postSlice = false;
1187
1452
  this.isLoadedChange = new EventEmitter();
@@ -1232,13 +1497,7 @@ var ResourceVaultComponent = class ResourceVaultComponent extends BaseResourceCo
1232
1497
  version: "22.2.3",
1233
1498
  ngImport: i0,
1234
1499
  type: ResourceVaultComponent,
1235
- deps: [
1236
- { token: ResourceService },
1237
- { token: i2.TagService },
1238
- { token: i2.AuthService },
1239
- { token: i0.ChangeDetectorRef },
1240
- { token: i0.Injector }
1241
- ],
1500
+ deps: null,
1242
1501
  target: i0.ɵɵFactoryTarget.Component
1243
1502
  });
1244
1503
  }
@@ -1247,319 +1506,45 @@ var ResourceVaultComponent = class ResourceVaultComponent extends BaseResourceCo
1247
1506
  minVersion: "17.0.0",
1248
1507
  version: "22.2.3",
1249
1508
  type: ResourceVaultComponent,
1250
- isStandalone: false,
1251
- selector: "pw-resource--vault",
1252
- inputs: {
1253
- showVaultSection: "showVaultSection",
1254
- postSlice: "postSlice",
1255
- categoryId: "categoryId",
1256
- resourceTitle: "resourceTitle",
1257
- tag: "tag"
1258
- },
1259
- outputs: { isLoadedChange: "isLoadedChange" },
1260
- host: { listeners: { "window:scroll": "onWindowScroll()" } },
1261
- usesInheritance: true,
1262
- ngImport: i0,
1263
- template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVaultSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap mb-5\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Whitepapers &amp; Tools\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/white-papers\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"d-flex mt-2 flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post) {\n <div class=\"resource-blog-card text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"mb-4\" [innerHTML]=\"post.title\"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n loading=\"lazy\"\n />\n </a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
1264
- styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"],
1265
- dependencies: [
1266
- {
1267
- kind: "directive",
1268
- type: i3.NgClass,
1269
- selector: "[ngClass]",
1270
- inputs: ["class", "ngClass"]
1271
- },
1272
- {
1273
- kind: "directive",
1274
- type: i4.RouterLink,
1275
- selector: "[routerLink]",
1276
- inputs: [
1277
- "target",
1278
- "queryParams",
1279
- "fragment",
1280
- "queryParamsHandling",
1281
- "state",
1282
- "info",
1283
- "relativeTo",
1284
- "preserveFragment",
1285
- "skipLocationChange",
1286
- "replaceUrl",
1287
- "browserUrl",
1288
- "routerLink"
1289
- ]
1290
- },
1291
- {
1292
- kind: "directive",
1293
- type: i5.DefaultValueAccessor,
1294
- selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
1295
- },
1296
- {
1297
- kind: "directive",
1298
- type: i5.NgControlStatus,
1299
- selector: "[formControlName],[ngModel],[formControl]"
1300
- },
1301
- {
1302
- kind: "directive",
1303
- type: i5.NgModel,
1304
- selector: "[ngModel]:not([formControlName]):not([formControl])",
1305
- inputs: [
1306
- "name",
1307
- "disabled",
1308
- "ngModel",
1309
- "ngModelOptions"
1310
- ],
1311
- outputs: ["ngModelChange"],
1312
- exportAs: ["ngModel"]
1313
- },
1314
- {
1315
- kind: "component",
1316
- type: i6.NoDataComponent,
1317
- selector: "pw-no-data",
1318
- inputs: [
1319
- "message",
1320
- "description",
1321
- "withImage"
1322
- ]
1323
- },
1324
- {
1325
- kind: "component",
1326
- type: i7.ProgressSpinner,
1327
- selector: "p-progress-spinner, p-progressspinner",
1328
- inputs: [
1329
- "value",
1330
- "strokeWidth",
1331
- "animationDuration",
1332
- "min",
1333
- "max",
1334
- "ariaLabel",
1335
- "fill"
1336
- ]
1337
- },
1338
- {
1339
- kind: "directive",
1340
- type: i8.LazyImgDirective,
1341
- selector: "img"
1342
- },
1343
- {
1344
- kind: "component",
1345
- type: ResourceEditCardLazyComponent,
1346
- selector: "pw-resource-edit-card-lazy",
1347
- inputs: [
1348
- "id",
1349
- "resourceData",
1350
- "canEdit"
1351
- ],
1352
- outputs: ["updated"]
1353
- },
1354
- {
1355
- kind: "pipe",
1356
- type: i10.TranslocoPipe,
1357
- name: "transloco"
1358
- }
1359
- ],
1360
- changeDetection: i0.ChangeDetectionStrategy.OnPush
1361
- });
1362
- }
1363
- };
1364
- i0.ɵɵngDeclareClassMetadata({
1365
- minVersion: "12.0.0",
1366
- version: "22.2.3",
1367
- ngImport: i0,
1368
- type: ResourceVaultComponent,
1369
- decorators: [{
1370
- type: Component,
1371
- args: [{
1372
- selector: "pw-resource--vault",
1373
- changeDetection: ChangeDetectionStrategy.OnPush,
1374
- standalone: false,
1375
- template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVaultSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap mb-5\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Whitepapers &amp; Tools\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/white-papers\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"d-flex mt-2 flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post) {\n <div class=\"resource-blog-card text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"mb-4\" [innerHTML]=\"post.title\"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n loading=\"lazy\"\n />\n </a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
1376
- styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"]
1377
- }]
1378
- }],
1379
- ctorParameters: () => [
1380
- { type: ResourceService },
1381
- { type: i2.TagService },
1382
- { type: i2.AuthService },
1383
- { type: i0.ChangeDetectorRef },
1384
- { type: i0.Injector }
1385
- ],
1386
- propDecorators: {
1387
- showVaultSection: [{ type: Input }],
1388
- postSlice: [{ type: Input }],
1389
- categoryId: [{ type: Input }],
1390
- resourceTitle: [{ type: Input }],
1391
- tag: [{ type: Input }],
1392
- isLoadedChange: [{ type: Output }],
1393
- onWindowScroll: [{
1394
- type: HostListener,
1395
- args: ["window:scroll"]
1396
- }]
1397
- }
1398
- });
1399
- var ResourceVideoCardComponent = class ResourceVideoCardComponent extends AppBaseComponent {
1400
- get posts() {
1401
- return this.pager?.items ?? [];
1402
- }
1403
- get isLoaded() {
1404
- return this.pager?.isLoaded ?? false;
1405
- }
1406
- get isLoadingMore() {
1407
- return this.pager?.isLoadingMore ?? false;
1408
- }
1409
- constructor(sanitizer, resourceService, tagService, cdr, injector) {
1410
- super(injector);
1411
- this.sanitizer = sanitizer;
1412
- this.resourceService = resourceService;
1413
- this.tagService = tagService;
1414
- this.cdr = cdr;
1415
- this.showVideoSection = false;
1416
- this.postSlice = false;
1417
- this.canEditResourcesValue = false;
1418
- this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
1419
- this.videoStates = {};
1420
- this.isEditingTitle = false;
1421
- }
1422
- ngOnInit() {
1423
- if (this.userLoggedIn) this.localStorage.getItem$("product").subscribe((res) => {
1424
- const data = res ? JSON.parse(res) : null;
1425
- this.subscriptionId = data?.subscriptionId;
1426
- this.cdr.markForCheck();
1427
- });
1428
- this.loadPosts();
1429
- }
1430
- ngOnChanges(changes) {
1431
- if (changes["user"] || changes["userLoggedIn"]) {
1432
- if (this.userLoggedIn && this.user) this.updateCanEditResourcesValue();
1433
- }
1434
- }
1435
- loadVideo(post) {
1436
- if (!post.external_url) return;
1437
- const slug = post.slug;
1438
- let externalUrl = post.external_url;
1439
- externalUrl += externalUrl.includes("?") ? "&autoplay=1" : "?autoplay=1";
1440
- this.videoStates[slug].url = this.sanitizer.bypassSecurityTrustResourceUrl(externalUrl);
1441
- }
1442
- loadPosts() {
1443
- this.pager = ResourcePager.forPublicPosts(this.resourceService, () => ({
1444
- subscriptionId: this.getEffectiveSubscriptionId(),
1445
- tagCategoryIds: this.categoryId
1446
- }), () => {
1447
- this.syncVideoStates();
1448
- this.cdr.markForCheck();
1449
- }, (post) => post.showcase === true, this.postSlice ? 15 : 3);
1450
- this.pager.reset();
1451
- }
1452
- onWindowScroll() {
1453
- if (this.postSlice) this.pager?.loadMoreIfNearBottom();
1454
- }
1455
- syncVideoStates() {
1456
- this.posts.forEach((post) => {
1457
- if (post.external_url && !this.videoStates[post.slug]) this.videoStates[post.slug] = {
1458
- loaded: true,
1459
- url: this.sanitizer.bypassSecurityTrustResourceUrl(post.external_url)
1460
- };
1461
- });
1462
- }
1463
- toggleTagEditTitle() {
1464
- this.isEditingTitle = true;
1465
- this.editedTitle = this.resourceTitle;
1466
- }
1467
- saveEditedTitle() {
1468
- HelperService.updateTagTitle(this.tag, this.editedTitle, this.tagService, this.getEffectiveSubscriptionId(), this.toast).subscribe(() => {
1469
- this.resourceTitle = this.editedTitle;
1470
- this.isEditingTitle = false;
1471
- this.cdr.markForCheck();
1472
- });
1473
- }
1474
- getEffectiveSubscriptionId() {
1475
- return HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId);
1476
- }
1477
- updateCanEditResourcesValue() {
1478
- this.canEditResourcesValue = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
1479
- }
1480
- canEditResources() {
1481
- return this.canEditResourcesValue;
1482
- }
1483
- trackByPostId(index, post) {
1484
- return post.id;
1485
- }
1486
- static {
1487
- this.ɵfac = i0.ɵɵngDeclareFactory({
1488
- minVersion: "12.0.0",
1489
- version: "22.2.3",
1490
- ngImport: i0,
1491
- type: ResourceVideoCardComponent,
1492
- deps: [
1493
- { token: i1.DomSanitizer },
1494
- { token: ResourceService },
1495
- { token: i2.TagService },
1496
- { token: i0.ChangeDetectorRef },
1497
- { token: i0.Injector }
1498
- ],
1499
- target: i0.ɵɵFactoryTarget.Component
1500
- });
1501
- }
1502
- static {
1503
- this.ɵcmp = i0.ɵɵngDeclareComponent({
1504
- minVersion: "17.0.0",
1505
- version: "22.2.3",
1506
- type: ResourceVideoCardComponent,
1507
- isStandalone: false,
1508
- selector: "pw-resource-video-card",
1509
- inputs: {
1510
- showVideoSection: "showVideoSection",
1511
- categoryId: "categoryId",
1512
- tag: "tag",
1509
+ isStandalone: true,
1510
+ selector: "pw-resource--vault",
1511
+ inputs: {
1512
+ showVaultSection: "showVaultSection",
1513
1513
  postSlice: "postSlice",
1514
+ categoryId: "categoryId",
1514
1515
  resourceTitle: "resourceTitle",
1515
- user: "user",
1516
- userLoggedIn: "userLoggedIn"
1516
+ tag: "tag"
1517
1517
  },
1518
+ outputs: { isLoadedChange: "isLoadedChange" },
1518
1519
  host: { listeners: { "window:scroll": "onWindowScroll()" } },
1519
1520
  usesInheritance: true,
1520
- usesOnChanges: true,
1521
1521
  ngImport: i0,
1522
- template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVideoSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n On-Demand Videos\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/videos\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"resource-blog-card\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p [innerHTML]=\"post.title\" class=\"mb-5\"></p>\n <a [href]=\" post.external_url\" target=\"_blank\">\n <img\n [src]=\"post.picture?.url\"\n class=\"img-fluid mb-3\"\n [alt]=\"post.title\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n </a>\n <a class=\"resource-btn mt-3\" [href]=\" post.external_url\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Watch now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n\n</section>\n",
1522
+ template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVaultSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap mb-5\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Whitepapers &amp; Tools\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/white-papers\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"d-flex mt-2 flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post) {\n <div class=\"resource-blog-card text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"mb-4\" [innerHTML]=\"post.title\"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n loading=\"lazy\"\n />\n </a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
1523
1523
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"],
1524
1524
  dependencies: [
1525
1525
  {
1526
1526
  kind: "directive",
1527
- type: i3.NgClass,
1527
+ type: NgClass,
1528
1528
  selector: "[ngClass]",
1529
1529
  inputs: ["class", "ngClass"]
1530
1530
  },
1531
1531
  {
1532
- kind: "directive",
1533
- type: i4.RouterLink,
1534
- selector: "[routerLink]",
1535
- inputs: [
1536
- "target",
1537
- "queryParams",
1538
- "fragment",
1539
- "queryParamsHandling",
1540
- "state",
1541
- "info",
1542
- "relativeTo",
1543
- "preserveFragment",
1544
- "skipLocationChange",
1545
- "replaceUrl",
1546
- "browserUrl",
1547
- "routerLink"
1548
- ]
1532
+ kind: "ngmodule",
1533
+ type: FormsModule
1549
1534
  },
1550
1535
  {
1551
1536
  kind: "directive",
1552
- type: i5.DefaultValueAccessor,
1537
+ type: i1.DefaultValueAccessor,
1553
1538
  selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
1554
1539
  },
1555
1540
  {
1556
1541
  kind: "directive",
1557
- type: i5.NgControlStatus,
1542
+ type: i1.NgControlStatus,
1558
1543
  selector: "[formControlName],[ngModel],[formControl]"
1559
1544
  },
1560
1545
  {
1561
1546
  kind: "directive",
1562
- type: i5.NgModel,
1547
+ type: i1.NgModel,
1563
1548
  selector: "[ngModel]:not([formControlName]):not([formControl])",
1564
1549
  inputs: [
1565
1550
  "name",
@@ -1571,18 +1556,27 @@ var ResourceVideoCardComponent = class ResourceVideoCardComponent extends AppBas
1571
1556
  exportAs: ["ngModel"]
1572
1557
  },
1573
1558
  {
1574
- kind: "component",
1575
- type: i6.NoDataComponent,
1576
- selector: "pw-no-data",
1559
+ kind: "directive",
1560
+ type: RouterLink,
1561
+ selector: "[routerLink]",
1577
1562
  inputs: [
1578
- "message",
1579
- "description",
1580
- "withImage"
1563
+ "target",
1564
+ "queryParams",
1565
+ "fragment",
1566
+ "queryParamsHandling",
1567
+ "state",
1568
+ "info",
1569
+ "relativeTo",
1570
+ "preserveFragment",
1571
+ "skipLocationChange",
1572
+ "replaceUrl",
1573
+ "browserUrl",
1574
+ "routerLink"
1581
1575
  ]
1582
1576
  },
1583
1577
  {
1584
1578
  kind: "component",
1585
- type: i7.ProgressSpinner,
1579
+ type: ProgressSpinner,
1586
1580
  selector: "p-progress-spinner, p-progressspinner",
1587
1581
  inputs: [
1588
1582
  "value",
@@ -1595,9 +1589,14 @@ var ResourceVideoCardComponent = class ResourceVideoCardComponent extends AppBas
1595
1589
  ]
1596
1590
  },
1597
1591
  {
1598
- kind: "directive",
1599
- type: i8.LazyImgDirective,
1600
- selector: "img"
1592
+ kind: "component",
1593
+ type: NoDataComponent,
1594
+ selector: "pw-no-data",
1595
+ inputs: [
1596
+ "message",
1597
+ "description",
1598
+ "withImage"
1599
+ ]
1601
1600
  },
1602
1601
  {
1603
1602
  kind: "component",
@@ -1610,9 +1609,14 @@ var ResourceVideoCardComponent = class ResourceVideoCardComponent extends AppBas
1610
1609
  ],
1611
1610
  outputs: ["updated"]
1612
1611
  },
1612
+ {
1613
+ kind: "directive",
1614
+ type: LazyImgDirective,
1615
+ selector: "img"
1616
+ },
1613
1617
  {
1614
1618
  kind: "pipe",
1615
- type: i10.TranslocoPipe,
1619
+ type: TranslocoPipe,
1616
1620
  name: "transloco"
1617
1621
  }
1618
1622
  ],
@@ -1624,32 +1628,36 @@ i0.ɵɵngDeclareClassMetadata({
1624
1628
  minVersion: "12.0.0",
1625
1629
  version: "22.2.3",
1626
1630
  ngImport: i0,
1627
- type: ResourceVideoCardComponent,
1631
+ type: ResourceVaultComponent,
1628
1632
  decorators: [{
1629
1633
  type: Component,
1630
1634
  args: [{
1631
- selector: "pw-resource-video-card",
1635
+ selector: "pw-resource--vault",
1632
1636
  changeDetection: ChangeDetectionStrategy.OnPush,
1633
- standalone: false,
1634
- template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVideoSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n On-Demand Videos\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleTagEditTitle()\" (keydown.enter)=\"toggleTagEditTitle()\" (keydown.space)=\"toggleTagEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/videos\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center video-row\">\n @for (post of posts; track trackByPostId($index, post); let i = $index) {\n <div class=\"resource-blog-card\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p [innerHTML]=\"post.title\" class=\"mb-5\"></p>\n <a [href]=\" post.external_url\" target=\"_blank\">\n <img\n [src]=\"post.picture?.url\"\n class=\"img-fluid mb-3\"\n [alt]=\"post.title\"\n width=\"640\"\n height=\"360\"\n [attr.loading]=\"i === 0 ? 'eager' : 'lazy'\"\n [attr.fetchpriority]=\"i === 0 ? 'high' : null\"\n decoding=\"async\" />\n </a>\n <a class=\"resource-btn mt-3\" [href]=\" post.external_url\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Watch now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n\n</section>\n",
1637
+ imports: [
1638
+ NgClass,
1639
+ FormsModule,
1640
+ RouterLink,
1641
+ Bind,
1642
+ ProgressSpinner,
1643
+ NoDataComponent,
1644
+ ResourceEditCardLazyComponent,
1645
+ LazyImgDirective,
1646
+ ResourceVideoCardComponent,
1647
+ TranslocoPipe
1648
+ ],
1649
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
1650
+ template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showVaultSection) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap mb-5\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Whitepapers &amp; Tools\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_9216\" name=\"input_editedTitle_9216\"\n aria-label=\"Input Edited Title 9216\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/white-papers\">VIEW ALL ></a>\n </div>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"d-flex mt-2 flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post) {\n <div class=\"resource-blog-card text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\">\n </pw-resource-edit-card-lazy>\n <p class=\"mb-4\" [innerHTML]=\"post.title\"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n loading=\"lazy\"\n />\n </a>\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n }\n @if (isLoadingMore) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n </div>\n</section>\n",
1635
1651
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n"]
1636
1652
  }]
1637
1653
  }],
1638
- ctorParameters: () => [
1639
- { type: i1.DomSanitizer },
1640
- { type: ResourceService },
1641
- { type: i2.TagService },
1642
- { type: i0.ChangeDetectorRef },
1643
- { type: i0.Injector }
1644
- ],
1645
1654
  propDecorators: {
1646
- showVideoSection: [{ type: Input }],
1647
- categoryId: [{ type: Input }],
1648
- tag: [{ type: Input }],
1655
+ showVaultSection: [{ type: Input }],
1649
1656
  postSlice: [{ type: Input }],
1657
+ categoryId: [{ type: Input }],
1650
1658
  resourceTitle: [{ type: Input }],
1651
- user: [{ type: Input }],
1652
- userLoggedIn: [{ type: Input }],
1659
+ tag: [{ type: Input }],
1660
+ isLoadedChange: [{ type: Output }],
1653
1661
  onWindowScroll: [{
1654
1662
  type: HostListener,
1655
1663
  args: ["window:scroll"]
@@ -1657,11 +1665,11 @@ i0.ɵɵngDeclareClassMetadata({
1657
1665
  }
1658
1666
  });
1659
1667
  var ReplayEventCardComponent = class ReplayEventCardComponent extends AppBaseComponent {
1660
- constructor(resourceService, tagService, cdr, injector) {
1661
- super(injector);
1662
- this.resourceService = resourceService;
1663
- this.tagService = tagService;
1664
- this.cdr = cdr;
1668
+ constructor() {
1669
+ super(...arguments);
1670
+ this.resourceService = inject(ResourceService);
1671
+ this.tagService = inject(TagService);
1672
+ this.cdr = inject(ChangeDetectorRef);
1665
1673
  this.showEventContent = false;
1666
1674
  this.canEditResourcesValue = false;
1667
1675
  this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
@@ -1720,12 +1728,7 @@ var ReplayEventCardComponent = class ReplayEventCardComponent extends AppBaseCom
1720
1728
  version: "22.2.3",
1721
1729
  ngImport: i0,
1722
1730
  type: ReplayEventCardComponent,
1723
- deps: [
1724
- { token: ResourceService },
1725
- { token: i2.TagService },
1726
- { token: i0.ChangeDetectorRef },
1727
- { token: i0.Injector }
1728
- ],
1731
+ deps: null,
1729
1732
  target: i0.ɵɵFactoryTarget.Component
1730
1733
  });
1731
1734
  }
@@ -1734,7 +1737,7 @@ var ReplayEventCardComponent = class ReplayEventCardComponent extends AppBaseCom
1734
1737
  minVersion: "17.0.0",
1735
1738
  version: "22.2.3",
1736
1739
  type: ReplayEventCardComponent,
1737
- isStandalone: false,
1740
+ isStandalone: true,
1738
1741
  selector: "pw-replay-event-card",
1739
1742
  inputs: {
1740
1743
  showEventContent: "showEventContent",
@@ -1749,38 +1752,9 @@ var ReplayEventCardComponent = class ReplayEventCardComponent extends AppBaseCom
1749
1752
  template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n @if (resourceTitle) {\n <h2 class=\"vault-heading\">{{resourceTitle}} Replays</h2>\n } @else {\n <h2 class=\"vault-heading\">Events &amp; Webinars Replays</h2>\n }\n </div>\n </div>\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post) {\n <div class=\"resource-blog-card vault-card text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadReplays()\">\n </pw-resource-edit-card-lazy>\n <h5 class=\"badge-title fw-bold\">REPLAY:</h5>\n <p class=\"event-title mb-4\" [innerHtml]=\"post?.title\"></p>\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\" />\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (pager?.hasMore) {\n <button type=\"button\" class=\"resource-load-more\" [disabled]=\"isLoadingMore\" (click)=\"pager.loadMore()\">\n {{ 'Resource.LoadMore' | transloco }}\n </button>\n }\n }\n </div>\n</section>\n",
1750
1753
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n", ".resource-load-more{display:block;margin:4rem auto 0;padding:10px 32px;border-radius:24px;border:1px solid var(--text-color, black);background-color:var(--text-color, black);color:#fff;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease}.resource-load-more:hover:not(:disabled){background:#fff;color:var(--text-color, black)}.resource-load-more:disabled{opacity:.6;cursor:default}\n"],
1751
1754
  dependencies: [
1752
- {
1753
- kind: "directive",
1754
- type: i4.RouterLink,
1755
- selector: "[routerLink]",
1756
- inputs: [
1757
- "target",
1758
- "queryParams",
1759
- "fragment",
1760
- "queryParamsHandling",
1761
- "state",
1762
- "info",
1763
- "relativeTo",
1764
- "preserveFragment",
1765
- "skipLocationChange",
1766
- "replaceUrl",
1767
- "browserUrl",
1768
- "routerLink"
1769
- ]
1770
- },
1771
- {
1772
- kind: "component",
1773
- type: i6.NoDataComponent,
1774
- selector: "pw-no-data",
1775
- inputs: [
1776
- "message",
1777
- "description",
1778
- "withImage"
1779
- ]
1780
- },
1781
1755
  {
1782
1756
  kind: "component",
1783
- type: i7.ProgressSpinner,
1757
+ type: ProgressSpinner,
1784
1758
  selector: "p-progress-spinner, p-progressspinner",
1785
1759
  inputs: [
1786
1760
  "value",
@@ -1793,9 +1767,14 @@ var ReplayEventCardComponent = class ReplayEventCardComponent extends AppBaseCom
1793
1767
  ]
1794
1768
  },
1795
1769
  {
1796
- kind: "directive",
1797
- type: i8.LazyImgDirective,
1798
- selector: "img"
1770
+ kind: "component",
1771
+ type: NoDataComponent,
1772
+ selector: "pw-no-data",
1773
+ inputs: [
1774
+ "message",
1775
+ "description",
1776
+ "withImage"
1777
+ ]
1799
1778
  },
1800
1779
  {
1801
1780
  kind: "component",
@@ -1808,9 +1787,33 @@ var ReplayEventCardComponent = class ReplayEventCardComponent extends AppBaseCom
1808
1787
  ],
1809
1788
  outputs: ["updated"]
1810
1789
  },
1790
+ {
1791
+ kind: "directive",
1792
+ type: LazyImgDirective,
1793
+ selector: "img"
1794
+ },
1795
+ {
1796
+ kind: "directive",
1797
+ type: RouterLink,
1798
+ selector: "[routerLink]",
1799
+ inputs: [
1800
+ "target",
1801
+ "queryParams",
1802
+ "fragment",
1803
+ "queryParamsHandling",
1804
+ "state",
1805
+ "info",
1806
+ "relativeTo",
1807
+ "preserveFragment",
1808
+ "skipLocationChange",
1809
+ "replaceUrl",
1810
+ "browserUrl",
1811
+ "routerLink"
1812
+ ]
1813
+ },
1811
1814
  {
1812
1815
  kind: "pipe",
1813
- type: i10.TranslocoPipe,
1816
+ type: TranslocoPipe,
1814
1817
  name: "transloco"
1815
1818
  }
1816
1819
  ],
@@ -1828,17 +1831,19 @@ i0.ɵɵngDeclareClassMetadata({
1828
1831
  args: [{
1829
1832
  selector: "pw-replay-event-card",
1830
1833
  changeDetection: ChangeDetectionStrategy.OnPush,
1831
- standalone: false,
1834
+ imports: [
1835
+ Bind,
1836
+ ProgressSpinner,
1837
+ NoDataComponent,
1838
+ ResourceEditCardLazyComponent,
1839
+ LazyImgDirective,
1840
+ RouterLink,
1841
+ TranslocoPipe
1842
+ ],
1832
1843
  template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n @if (resourceTitle) {\n <h2 class=\"vault-heading\">{{resourceTitle}} Replays</h2>\n } @else {\n <h2 class=\"vault-heading\">Events &amp; Webinars Replays</h2>\n }\n </div>\n </div>\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track post) {\n <div class=\"resource-blog-card vault-card text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadReplays()\">\n </pw-resource-edit-card-lazy>\n <h5 class=\"badge-title fw-bold\">REPLAY:</h5>\n <p class=\"event-title mb-4\" [innerHtml]=\"post?.title\"></p>\n <img\n [src]=\"post.picture.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\" />\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [href]=\"post.external_url\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (pager?.hasMore) {\n <button type=\"button\" class=\"resource-load-more\" [disabled]=\"isLoadingMore\" (click)=\"pager.loadMore()\">\n {{ 'Resource.LoadMore' | transloco }}\n </button>\n }\n }\n </div>\n</section>\n",
1833
1844
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n", ".resource-load-more{display:block;margin:4rem auto 0;padding:10px 32px;border-radius:24px;border:1px solid var(--text-color, black);background-color:var(--text-color, black);color:#fff;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease}.resource-load-more:hover:not(:disabled){background:#fff;color:var(--text-color, black)}.resource-load-more:disabled{opacity:.6;cursor:default}\n"]
1834
1845
  }]
1835
1846
  }],
1836
- ctorParameters: () => [
1837
- { type: ResourceService },
1838
- { type: i2.TagService },
1839
- { type: i0.ChangeDetectorRef },
1840
- { type: i0.Injector }
1841
- ],
1842
1847
  propDecorators: {
1843
1848
  showEventContent: [{ type: Input }],
1844
1849
  categoryId: [{ type: Input }],
@@ -1848,11 +1853,11 @@ i0.ɵɵngDeclareClassMetadata({
1848
1853
  }
1849
1854
  });
1850
1855
  var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBaseComponent {
1851
- constructor(resourceService, tagService, cdr, injector) {
1852
- super(injector);
1853
- this.resourceService = resourceService;
1854
- this.tagService = tagService;
1855
- this.cdr = cdr;
1856
+ constructor() {
1857
+ super(...arguments);
1858
+ this.resourceService = inject(ResourceService);
1859
+ this.tagService = inject(TagService);
1860
+ this.cdr = inject(ChangeDetectorRef);
1856
1861
  this.showEventContent = false;
1857
1862
  this.postSlice = false;
1858
1863
  this.canEditResourcesValue = false;
@@ -1944,12 +1949,7 @@ var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBas
1944
1949
  version: "22.2.3",
1945
1950
  ngImport: i0,
1946
1951
  type: UpcomingEventCardComponent,
1947
- deps: [
1948
- { token: ResourceService },
1949
- { token: i2.TagService },
1950
- { token: i0.ChangeDetectorRef },
1951
- { token: i0.Injector }
1952
- ],
1952
+ deps: null,
1953
1953
  target: i0.ɵɵFactoryTarget.Component
1954
1954
  });
1955
1955
  }
@@ -1958,7 +1958,7 @@ var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBas
1958
1958
  minVersion: "17.0.0",
1959
1959
  version: "22.2.3",
1960
1960
  type: UpcomingEventCardComponent,
1961
- isStandalone: false,
1961
+ isStandalone: true,
1962
1962
  selector: "pw-upcoming-event-card",
1963
1963
  inputs: {
1964
1964
  showEventContent: "showEventContent",
@@ -1977,42 +1977,27 @@ var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBas
1977
1977
  dependencies: [
1978
1978
  {
1979
1979
  kind: "directive",
1980
- type: i3.NgClass,
1980
+ type: NgClass,
1981
1981
  selector: "[ngClass]",
1982
1982
  inputs: ["class", "ngClass"]
1983
1983
  },
1984
1984
  {
1985
- kind: "directive",
1986
- type: i4.RouterLink,
1987
- selector: "[routerLink]",
1988
- inputs: [
1989
- "target",
1990
- "queryParams",
1991
- "fragment",
1992
- "queryParamsHandling",
1993
- "state",
1994
- "info",
1995
- "relativeTo",
1996
- "preserveFragment",
1997
- "skipLocationChange",
1998
- "replaceUrl",
1999
- "browserUrl",
2000
- "routerLink"
2001
- ]
1985
+ kind: "ngmodule",
1986
+ type: FormsModule
2002
1987
  },
2003
1988
  {
2004
1989
  kind: "directive",
2005
- type: i5.DefaultValueAccessor,
1990
+ type: i1.DefaultValueAccessor,
2006
1991
  selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]"
2007
1992
  },
2008
1993
  {
2009
1994
  kind: "directive",
2010
- type: i5.NgControlStatus,
1995
+ type: i1.NgControlStatus,
2011
1996
  selector: "[formControlName],[ngModel],[formControl]"
2012
1997
  },
2013
1998
  {
2014
1999
  kind: "directive",
2015
- type: i5.NgModel,
2000
+ type: i1.NgModel,
2016
2001
  selector: "[ngModel]:not([formControlName]):not([formControl])",
2017
2002
  inputs: [
2018
2003
  "name",
@@ -2024,18 +2009,27 @@ var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBas
2024
2009
  exportAs: ["ngModel"]
2025
2010
  },
2026
2011
  {
2027
- kind: "component",
2028
- type: i6.NoDataComponent,
2029
- selector: "pw-no-data",
2012
+ kind: "directive",
2013
+ type: RouterLink,
2014
+ selector: "[routerLink]",
2030
2015
  inputs: [
2031
- "message",
2032
- "description",
2033
- "withImage"
2016
+ "target",
2017
+ "queryParams",
2018
+ "fragment",
2019
+ "queryParamsHandling",
2020
+ "state",
2021
+ "info",
2022
+ "relativeTo",
2023
+ "preserveFragment",
2024
+ "skipLocationChange",
2025
+ "replaceUrl",
2026
+ "browserUrl",
2027
+ "routerLink"
2034
2028
  ]
2035
2029
  },
2036
2030
  {
2037
2031
  kind: "component",
2038
- type: i7.ProgressSpinner,
2032
+ type: ProgressSpinner,
2039
2033
  selector: "p-progress-spinner, p-progressspinner",
2040
2034
  inputs: [
2041
2035
  "value",
@@ -2047,21 +2041,14 @@ var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBas
2047
2041
  "fill"
2048
2042
  ]
2049
2043
  },
2050
- {
2051
- kind: "directive",
2052
- type: i8.LazyImgDirective,
2053
- selector: "img"
2054
- },
2055
2044
  {
2056
2045
  kind: "component",
2057
- type: ReplayEventCardComponent,
2058
- selector: "pw-replay-event-card",
2046
+ type: NoDataComponent,
2047
+ selector: "pw-no-data",
2059
2048
  inputs: [
2060
- "showEventContent",
2061
- "categoryId",
2062
- "resourceTitle",
2063
- "user",
2064
- "userLoggedIn"
2049
+ "message",
2050
+ "description",
2051
+ "withImage"
2065
2052
  ]
2066
2053
  },
2067
2054
  {
@@ -2075,9 +2062,26 @@ var UpcomingEventCardComponent = class UpcomingEventCardComponent extends AppBas
2075
2062
  ],
2076
2063
  outputs: ["updated"]
2077
2064
  },
2065
+ {
2066
+ kind: "directive",
2067
+ type: LazyImgDirective,
2068
+ selector: "img"
2069
+ },
2070
+ {
2071
+ kind: "component",
2072
+ type: ReplayEventCardComponent,
2073
+ selector: "pw-replay-event-card",
2074
+ inputs: [
2075
+ "showEventContent",
2076
+ "categoryId",
2077
+ "resourceTitle",
2078
+ "user",
2079
+ "userLoggedIn"
2080
+ ]
2081
+ },
2078
2082
  {
2079
2083
  kind: "pipe",
2080
- type: i10.TranslocoPipe,
2084
+ type: TranslocoPipe,
2081
2085
  name: "transloco"
2082
2086
  }
2083
2087
  ],
@@ -2095,17 +2099,23 @@ i0.ɵɵngDeclareClassMetadata({
2095
2099
  args: [{
2096
2100
  selector: "pw-upcoming-event-card",
2097
2101
  changeDetection: ChangeDetectionStrategy.OnPush,
2098
- standalone: false,
2102
+ imports: [
2103
+ NgClass,
2104
+ FormsModule,
2105
+ RouterLink,
2106
+ Bind,
2107
+ ProgressSpinner,
2108
+ NoDataComponent,
2109
+ ResourceEditCardLazyComponent,
2110
+ LazyImgDirective,
2111
+ ReplayEventCardComponent,
2112
+ TranslocoPipe
2113
+ ],
2114
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
2099
2115
  template: "<section class=\"resource-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n @if (showEventContent) {\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Events &amp; Webinars\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_7936\" name=\"input_editedTitle_7936\"\n aria-label=\"Input Edited Title 7936\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n <a class=\"view-all\" routerLink=\"/resources/events\">VIEW ALL ></a>\n </div>\n }\n @if (!showEventContent) {\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <h2 class=\"section-heading d-flex align-items-center\" [ngClass]=\"{ 'w-50': isEditingTitle }\">\n @if (!isEditingTitle) {\n @if (resourceTitle) {\n <span [innerHTML]=\"resourceTitle\"></span>\n } @else {\n Upcoming Events\n }\n @if (canEditResourcesValue) {\n <i class=\"fa fa-edit in-page-edit-icon ms-3 cursor-pointer\" (click)=\"toggleEditTitle()\" (keydown.enter)=\"toggleEditTitle()\" (keydown.space)=\"toggleEditTitle()\" title=\"Edit Title\"></i>\n }\n } @else {\n <input [(ngModel)]=\"editedTitle\" class=\"form-control d-inline w-auto me-2\" [ngClass]=\"{ 'w-100': isEditingTitle }\" id=\"input_editedTitle_7936\" name=\"input_editedTitle_7936\"\n aria-label=\"Input Edited Title 7936\" />\n <button class=\"btn btn-sm btn-primary me-1\" (click)=\"saveEditedTitle()\">Save</button>\n <button class=\"btn btn-sm btn-secondary\" (click)=\"isEditingTitle = false\">Cancel</button>\n }\n </h2>\n </div>\n }\n\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (posts.length === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n\n @if (posts.length !== 0 && isLoaded) {\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n @for (post of posts; track trackByPostId($index, post)) {\n <div class=\"resource-blog-card d text-center p-4\">\n <pw-resource-edit-card-lazy\n [canEdit]=\"canEditResourcesValue\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"refresh()\">\n </pw-resource-edit-card-lazy>\n @if (postSlice) {\n <h5 class=\"badge-title fw-bold\">UPCOMING:</h5>\n } @else {\n <h5 class=\"badge-title fw-bold\">\n {{ isUpcoming(post) ? 'UPCOMING:' : 'REPLAY:' }}\n </h5>\n }\n\n <p class=\"event-title mb-4\" [innerHtml]=\"post?.title\"></p>\n <a\n [href]=\"post.external_url || ('/resources/view/' + post?.slug)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [attr.aria-label]=\"'Open resource card: ' + (post?.title || 'article')\"\n >\n <img\n [src]=\"post.picture?.url\"\n class=\"img-fluid my-3 mt-auto\"\n alt=\"Webinar\"\n loading=\"lazy\"\n />\n </a>\n\n @if (post?.external_url) {\n <a\n class=\"resource-btn mt-3\"\n [attr.aria-label]=\"'Open external: ' + (post?.title || 'article')\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">external</span>\n <span class=\"arrow\">→</span>\n </a>\n } @else {\n <a class=\"resource-btn mt-3\" [attr.aria-label]=\"'Read resource: ' + (post?.title || 'article')\" [href]=\"'/resources/view/' + post?.slug\" target=\"_blank\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"visually-hidden\">on site</span>\n <span class=\"arrow\">→</span>\n </a>\n }\n </div>\n }\n </div>\n @if (postSlice && pager?.hasMore) {\n <button type=\"button\" class=\"resource-load-more\" [disabled]=\"isLoadingMore\" (click)=\"pager.loadMore()\">\n {{ 'Resource.LoadMore' | transloco }}\n </button>\n }\n }\n </div>\n</section>\n\n\n@if (!showEventContent) {\n<section class=\"bg-white\">\n <pw-replay-event-card [resourceTitle]=\"resourceTitle\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-replay-event-card>\n</section>\n}\n",
2100
2116
  styles: [".bold{font-weight:700}.resource-heading{margin-bottom:2rem}.resource-note{margin-top:1rem;font-size:.85rem;color:#555}.resource-divider{border:0;height:40px;width:100%;background:linear-gradient(to bottom,#0000,#00000026);margin:0}.press-release-icon{height:auto!important;margin:0 11px 1.9rem;display:block;align-self:center;width:auto!important;aspect-ratio:0!important;object-fit:cover;margin-top:auto;margin-right:0!important}.resource-vault-section{padding:60px 0;background:#fff;padding-bottom:9rem!important;padding-top:7rem!important;box-shadow:0 4px 32px -14px #40576d4d!important}.resource-vault-section .vault-heading{font-size:3rem;font-weight:300}.resource-vault-section .explore-link{color:#000;font-weight:400;text-decoration:none;font-size:1.5rem}.resource-vault-section .resource-blog-card{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff;border-radius:30px;box-shadow:0 20px 40px #00000014;padding:25px;text-align:center;width:338px;height:auto!important}.resource-vault-section .resource-blog-card h5{font-size:1.5rem;font-weight:400;margin-bottom:.5rem;color:var(--text-color, black)}.resource-vault-section .resource-blog-card p{font-size:1.5rem;color:var(--text-color, black);line-height:2rem}.resource-vault-section .resource-blog-card img{width:100%;border-radius:10px;aspect-ratio:1/1;object-fit:cover;margin-top:auto;margin-right:0!important;max-width:250px!important;align-self:center!important}.resource-vault-section .resource-blog-card iframe{height:210px;border-radius:10px;object-fit:cover;margin-right:0!important;max-width:280px!important}.resource-vault-section .resource-blog-card .resource-btn{background-color:var(--text-color, black);color:#fff;margin-top:auto;padding:10px 24px;border-radius:24px;font-size:1.5rem;font-weight:500;width:100%;max-width:240px;cursor:pointer;transition:background .3s ease;display:flex;justify-content:space-between;align-self:center;align-items:center;text-align:left;text-decoration:none;border:1px solid;box-shadow:none!important;border-color:var(--text-color, black)}.resource-vault-section .resource-blog-card .resource-btn:hover{background:#fff;color:var(--text-color, black)!important}.resource-vault-section .vault-description{text-align:left;max-width:657px;color:#182527;line-height:2.3rem!important;font-size:1.65rem}@media(width<=1200px){.resource-vault-section .vault-heading{font-size:3.5rem}.resource-vault-section .vault-description{margin-top:1.35rem}.resource-vault-section .resource-btn{margin-left:0!important}}.video-row{gap:5.5rem!important;margin-top:3rem!important}@media(width>=991px){section.bg-white.text-center.extra-top-padding{position:relative;overflow:hidden}section.bg-white.text-center.extra-top-padding .banner-header{margin-bottom:4rem!important}}.vault-header{text-align:left}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}}@media(width<=768px){.video-row{gap:3rem!important}}@media(max-width:768px){.resource-vault-section{padding-bottom:6rem!important}.resource-vault-section .container{padding-top:0rem!important;padding-bottom:0rem!important}.vault-header{text-align:center!important}.vault-heading{font-size:3rem!important}}@media(width<=1200px){.container{padding:7rem 3rem 1rem!important}}\n", ".resource-load-more{display:block;margin:4rem auto 0;padding:10px 32px;border-radius:24px;border:1px solid var(--text-color, black);background-color:var(--text-color, black);color:#fff;font-size:1.5rem;font-weight:500;cursor:pointer;transition:background .3s ease}.resource-load-more:hover:not(:disabled){background:#fff;color:var(--text-color, black)}.resource-load-more:disabled{opacity:.6;cursor:default}\n"]
2101
2117
  }]
2102
2118
  }],
2103
- ctorParameters: () => [
2104
- { type: ResourceService },
2105
- { type: i2.TagService },
2106
- { type: i0.ChangeDetectorRef },
2107
- { type: i0.Injector }
2108
- ],
2109
2119
  propDecorators: {
2110
2120
  showEventContent: [{ type: Input }],
2111
2121
  categoryId: [{ type: Input }],
@@ -2133,16 +2143,6 @@ var ResourceCardsModule = class ResourceCardsModule {
2133
2143
  version: "22.2.3",
2134
2144
  ngImport: i0,
2135
2145
  type: ResourceCardsModule,
2136
- declarations: [
2137
- ResourceVideoCardComponent,
2138
- UpcomingEventCardComponent,
2139
- ReplayEventCardComponent,
2140
- ResourceCardComponent,
2141
- CaseStudyCardComponent,
2142
- ResourceNoteCardComponent,
2143
- ResourceVaultComponent,
2144
- ResourceEditCardLazyComponent
2145
- ],
2146
2146
  imports: [
2147
2147
  CommonModule,
2148
2148
  RouterModule,
@@ -2157,7 +2157,15 @@ var ResourceCardsModule = class ResourceCardsModule {
2157
2157
  DirectivesModule,
2158
2158
  DragDropModule,
2159
2159
  NgxCaptchaModule,
2160
- Trial4ContactUsModule
2160
+ Trial4ContactUsModule,
2161
+ ResourceVideoCardComponent,
2162
+ UpcomingEventCardComponent,
2163
+ ReplayEventCardComponent,
2164
+ ResourceCardComponent,
2165
+ CaseStudyCardComponent,
2166
+ ResourceNoteCardComponent,
2167
+ ResourceVaultComponent,
2168
+ ResourceEditCardLazyComponent
2161
2169
  ],
2162
2170
  exports: [
2163
2171
  ResourceVideoCardComponent,
@@ -2193,6 +2201,13 @@ var ResourceCardsModule = class ResourceCardsModule {
2193
2201
  DragDropModule,
2194
2202
  NgxCaptchaModule,
2195
2203
  Trial4ContactUsModule,
2204
+ ResourceVideoCardComponent,
2205
+ UpcomingEventCardComponent,
2206
+ ReplayEventCardComponent,
2207
+ ResourceCardComponent,
2208
+ CaseStudyCardComponent,
2209
+ ResourceNoteCardComponent,
2210
+ ResourceVaultComponent,
2196
2211
  Trial4ContactUsModule,
2197
2212
  PaginatorModule
2198
2213
  ]
@@ -2207,16 +2222,6 @@ i0.ɵɵngDeclareClassMetadata({
2207
2222
  decorators: [{
2208
2223
  type: NgModule,
2209
2224
  args: [{
2210
- declarations: [
2211
- ResourceVideoCardComponent,
2212
- UpcomingEventCardComponent,
2213
- ReplayEventCardComponent,
2214
- ResourceCardComponent,
2215
- CaseStudyCardComponent,
2216
- ResourceNoteCardComponent,
2217
- ResourceVaultComponent,
2218
- ResourceEditCardLazyComponent
2219
- ],
2220
2225
  imports: [
2221
2226
  CommonModule,
2222
2227
  RouterModule,
@@ -2231,7 +2236,15 @@ i0.ɵɵngDeclareClassMetadata({
2231
2236
  DirectivesModule,
2232
2237
  DragDropModule,
2233
2238
  NgxCaptchaModule,
2234
- Trial4ContactUsModule
2239
+ Trial4ContactUsModule,
2240
+ ResourceVideoCardComponent,
2241
+ UpcomingEventCardComponent,
2242
+ ReplayEventCardComponent,
2243
+ ResourceCardComponent,
2244
+ CaseStudyCardComponent,
2245
+ ResourceNoteCardComponent,
2246
+ ResourceVaultComponent,
2247
+ ResourceEditCardLazyComponent
2235
2248
  ],
2236
2249
  exports: [
2237
2250
  ResourceVideoCardComponent,
@@ -2248,6 +2261,6 @@ i0.ɵɵngDeclareClassMetadata({
2248
2261
  }]
2249
2262
  }]
2250
2263
  });
2251
- export { BaseResourceComponent as a, ResourceNoteCardComponent as c, ResourceVaultComponent as i, ResourceEditCardLazyComponent as l, UpcomingEventCardComponent as n, ResourceCardComponent as o, ResourceVideoCardComponent as r, CaseStudyCardComponent as s, ResourceCardsModule as t, Trial4ContactUsModule as u };
2264
+ export { ResourceCardComponent as a, ResourceNoteCardComponent as c, Trial4ContactUsModule as d, BaseResourceComponent as i, ResourcePager as l, UpcomingEventCardComponent as n, CaseStudyCardComponent as o, ResourceVaultComponent as r, ResourceVideoCardComponent as s, ResourceCardsModule as t, ResourceEditCardLazyComponent as u };
2252
2265
 
2253
- //# sourceMappingURL=posiwise-resource-module-resource-cards.module-D3yf7FNt.mjs.map
2266
+ //# sourceMappingURL=posiwise-resource-module-resource-cards.module-BSJpkk9V.mjs.map