@posiwise/resource-module 0.0.201 → 0.0.203

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-mSKg7oDE.mjs} +52 -70
  4. package/fesm2022/posiwise-resource-module-resource-blogs.module-mSKg7oDE.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-rCEpwQ4J.mjs} +62 -61
  8. package/fesm2022/posiwise-resource-module-resource-case-studies.module-rCEpwQ4J.mjs.map +1 -0
  9. package/fesm2022/{posiwise-resource-module-resource-events.module-0PDppSJ6.mjs → posiwise-resource-module-resource-events.module-Djau8zuG.mjs} +53 -54
  10. package/fesm2022/posiwise-resource-module-resource-events.module-Djau8zuG.mjs.map +1 -0
  11. package/fesm2022/{posiwise-resource-module-resource-hub.module-2qzLV9I1.mjs → posiwise-resource-module-resource-hub.module-CQtyBld2.mjs} +141 -122
  12. package/fesm2022/posiwise-resource-module-resource-hub.module-CQtyBld2.mjs.map +1 -0
  13. package/fesm2022/{posiwise-resource-module-resource-integrations.module-DqDd_1U9.mjs → posiwise-resource-module-resource-integrations.module-BXyPZf3W.mjs} +129 -132
  14. package/fesm2022/posiwise-resource-module-resource-integrations.module-BXyPZf3W.mjs.map +1 -0
  15. package/fesm2022/posiwise-resource-module-resource-jobs.module-B53AOs8y.mjs +399 -0
  16. package/fesm2022/posiwise-resource-module-resource-jobs.module-B53AOs8y.mjs.map +1 -0
  17. package/fesm2022/{posiwise-resource-module-resource-post.module-BFuEjqA9.mjs → posiwise-resource-module-resource-post.module-DIaB5kyW.mjs} +206 -212
  18. package/fesm2022/posiwise-resource-module-resource-post.module-DIaB5kyW.mjs.map +1 -0
  19. package/fesm2022/{posiwise-resource-module-resource-release-notes.module-BbofH_0n.mjs → posiwise-resource-module-resource-release-notes.module-Btxs8la7.mjs} +59 -71
  20. package/fesm2022/posiwise-resource-module-resource-release-notes.module-Btxs8la7.mjs.map +1 -0
  21. package/fesm2022/{posiwise-resource-module-resource-root.module-C9c17Dhm.mjs → posiwise-resource-module-resource-root.module-BukwL-wp.mjs} +129 -132
  22. package/fesm2022/posiwise-resource-module-resource-root.module-BukwL-wp.mjs.map +1 -0
  23. package/fesm2022/{posiwise-resource-module-resource-videos.module-BsnB9vFd.mjs → posiwise-resource-module-resource-videos.module-CFkPbXn3.mjs} +50 -71
  24. package/fesm2022/posiwise-resource-module-resource-videos.module-CFkPbXn3.mjs.map +1 -0
  25. package/fesm2022/{posiwise-resource-module-resource-white-papers.module-BC-OyhAK.mjs → posiwise-resource-module-resource-white-papers.module-DBjSfwx4.mjs} +54 -68
  26. package/fesm2022/posiwise-resource-module-resource-white-papers.module-DBjSfwx4.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 +252 -219
  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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posiwise-resource-module-resource-integrations.module-BXyPZf3W.mjs","names":["i1"],"sources":["../../../../libs/resource-module/src/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-integration/integration-top-banner/integration-top-banner.component.html","../../../../libs/resource-module/src/lib/public/components/resource-integration/resource-integration.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-integration/resource-integration.component.html","../../../../libs/resource-module/src/lib/public/modules/integrations/resource-integrations.module.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { LazyImgDirective } from '@posiwise/directives';\n\nimport { BaseTopBannerComponent } from '../../base/base-top-banner.component';\nimport { ResourceTopBannerEditComponent } from '../../resource-top-banner-edit/resource-top-banner-edit.component';\n\n@Component({\n selector: 'pw-integration-top-banner',\n templateUrl: './integration-top-banner.component.html',\n styleUrls: [\n '../../resource-case-studies/resource-case-studies.component.scss',\n '../../resources/resources-shared.component.scss',\n '../../resource-post/related-resources/related-resources.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ResourceTopBannerEditComponent, LazyImgDirective]\n})\nexport class IntegrationTopBannerComponent extends BaseTopBannerComponent {\n contactUsUrl = this.appConfig?.pages_config?.contact_us?.url;\n\n protected getSearchTerm(): string {\n return 'Integrations';\n }\n}\n","<section class=\"bg-white pricing-section\">\n <div class=\"resource-banner\">\n @if (isLoaded) {\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n <div class=\"text-content\">\n <div class=\"resource-heading\">\n <h1 class=\"resource-header-text mb-4\">\n <span class=\"d-inline-flex align-items-center gap-2 flex-wrap\">\n <span [innerHTML]=\"blogPostTag?.title || 'Integrated vendors'\"></span>\n @if (canEditResourcesValue) {\n <pw-resource-top-banner-edit\n [blogPostTag]=\"blogPostTag\"\n [user]=\"user\"\n [userLoggedIn]=\"userLoggedIn\"\n (getUpdatedTag)=\"getTags()\"\n ></pw-resource-top-banner-edit>\n }\n </span>\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n <div class=\"text-extension mt-4\">\n <div class=\"cta-buttons d-flex flex-column justify-between h-100\">\n <div class=\"flex-grow-1\">\n @if (blogPostTag?.description && blogPostTag.description !== 'null' ) {\n <p class=\"intro\" [innerHTML]=\"blogPostTag.description\"></p>\n } @else {\n <p class=\"intro\">\n Browse below the vendor integrations<br />\n we support.\n </p>\n }\n </div>\n <div class=\"d-flex gap-3 flex-wrap mt-3\">\n <a [href]=\"contactUsUrl\" target=\"_blank\" rel=\"noopener noreferrer\"\n class=\"cta-btn filled\">Talk to us <i class=\"fa fa-chevron-right cta-btn__icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <div class=\"resource-math-img\"></div>\n <img class=\"resource-laptop-img dyn-img\"\n [src]=\"(blogPostTag?.image?.url && !(blogPostTag?.image?.url.includes('no_image_uploaded_squared'))) ? blogPostTag?.image?.url : '/assets/img/resource/men.png'\"\n alt=\"Integrated vendors banner\"\n width=\"600\"\n height=\"450\"\n loading=\"eager\"\n fetchpriority=\"high\" />\n </div>\n </div>\n }\n </div>\n</section>\n","import {\n CdkDrag,\n CdkDragDrop,\n CdkDragHandle,\n CdkDropList,\n moveItemInArray\n} from '@angular/cdk/drag-drop';\nimport { DOCUMENT, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AuthService, TagService } from '@posiwise/common-services';\nimport { CompanyData, Resource, User } from '@posiwise/common-utilities';\nimport { LazyImgDirective } from '@posiwise/directives';\nimport { HelperService } from '@posiwise/helper-service';\nimport { Trial4ContactUsComponent } from '@posiwise/resource-contact-us';\nimport { NoDataComponent } from '@posiwise/shared-components';\nimport { CustomUploaderComponent, ResourceHeaderComponent } from '@posiwise/utils';\n\nimport { Bind } from 'primeng/bind';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { forkJoin } from 'rxjs';\n\nimport { TranslocoPipe } from '@jsverse/transloco';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ResourceService } from '../../../resource.service';\nimport { ResourceNoteCardComponent } from '../reslease-note-card/release-note-card.component';\nimport { ResourceCompanyCardComponent } from '../resource-company-card/resource-company-card.component';\n\nimport { IntegrationTopBannerComponent } from './integration-top-banner/integration-top-banner.component';\n\n@Component({\n selector: 'pw-resource-integration',\n templateUrl: './resource-integration.component.html',\n styleUrls: [\n './resource-integration.component.scss',\n '../resources/resources-shared.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ResourceHeaderComponent,\n IntegrationTopBannerComponent,\n ResourceCompanyCardComponent,\n Bind,\n ProgressSpinner,\n NoDataComponent,\n NgClass,\n LazyImgDirective,\n ResourceNoteCardComponent,\n Trial4ContactUsComponent,\n FormsModule,\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n TranslocoPipe\n ]\n})\nexport class ResourceIntegrationComponent extends AppBaseComponent implements OnInit {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly resourceService = inject(ResourceService);\n private readonly modalService = inject(NgbModal);\n private readonly tagService = inject(TagService);\n private readonly authService = inject(AuthService);\n private readonly adminService = inject(AdminService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n private readonly doc = inject(DOCUMENT);\n\n @ViewChild('editIntegrationsModal') editIntegrationsModal: TemplateRef<CustomUploaderComponent>;\n editingIntegrations;\n distributorsData = CompanyData?.distributorsData;\n vendorsData = CompanyData?.vendorsData;\n\n textColor = this.appConfig?.color_codes?.text;\n\n subscriptionId: number;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n posts: Resource[] = [];\n distributerPosts = [];\n userLoggedIn: boolean;\n blogPostTag;\n isLoaded = false;\n resourcePostTag;\n blogPostVendorTag;\n isMasterSubscription;\n\n integrations = this.appConfig?.pages_config?.integrations;\n\n releaseNotesLink = '/resources/product-release-notes';\n q1NotesLink = '/resources/product-release-q1-2025';\n q3NotesLink = '/resources/product-release-q3-2024';\n q4NotesLink = '/resources/product-release-q4-2024';\n companyName;\n\n videoWebinarLoaded = false;\n videoDemoLoaded = false;\n youtubeVideoId = 'R7Vk219zbhA';\n videoTitle = 'CloudOlive Overview';\n sanitizedMicrosoftVideoUrl: SafeResourceUrl;\n sanitizedKesyaVideoUrl: SafeResourceUrl;\n integrationCountDisplay: number;\n contactUsUrl = this.appConfig?.pages_config?.contact_us?.url;\n tagCategory;\n totalPosts: number;\n\n guideData = this.appConfig?.pages_config?.guides;\n editingGuides = { items: [] };\n user: User;\n\n canEditResourcesValue = false;\n domainId = this.appConfig.domain_id;\n\n ngOnInit() {\n this.companyName = this.appConfig.company.name;\n\n this.doc.documentElement.style.setProperty('--text-color', this.textColor);\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n this.cdr.markForCheck();\n });\n this.authService.getToken$().subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n this.cdr.markForCheck();\n });\n this.userService.getUserInfo().subscribe(data => {\n this.user = data;\n\n this.getTags();\n this.updateCanEditResourcesValue();\n this.cdr.markForCheck();\n });\n } else {\n this.getTags();\n }\n this.cdr.markForCheck();\n });\n }\n\n private getTags() {\n this.isLoaded = false;\n this.tagService\n .getAllTagCategories({ search: 'Integrations' }, this.getEffectiveSubscriptionId())\n .subscribe(response => {\n this.tagCategory = response?.tag_categories?.[0];\n this.getPostTags();\n this.cdr.markForCheck();\n });\n }\n\n openEditIntegrationsModal(modalRef) {\n this.editingIntegrations = structuredClone(this.integrations);\n this.modalService.open(modalRef, {\n size: 'lg',\n centered: true,\n windowClass: 'modal-holder'\n });\n }\n\n showIntegrations(): boolean {\n if (this.userLoggedIn) {\n return true;\n }\n\n if (Array.isArray(this.guideData?.items) && this.guideData.items.length) {\n const item = this.guideData.items[0];\n return (\n !!item?.title ||\n !!item?.description ||\n !!item?.guide_url ||\n (!!item?.image_url && !item.image_url.includes('default-image.png'))\n );\n }\n\n return false;\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.getEffectiveSubscriptionId())\n .subscribe(response => {\n this.resourcePostTag = response.tags.find(\n tag => tag.name === 'Product Release Notes'\n );\n this.blogPostTag = response.tags.find(\n tag =>\n tag.name === 'Integrated Distributors' &&\n tag.tag_category_id === this.tagCategory?.id\n );\n this.blogPostVendorTag = response.tags.find(\n tag =>\n tag.name === 'Integrated Vendors' &&\n tag.tag_category_id === this.tagCategory?.id\n );\n\n // use forkJoin to fetch both sets of posts in parallel\n forkJoin({\n vendorResponse: this.resourceService.getPublicPosts(\n this.getEffectiveSubscriptionId(),\n 1,\n 100,\n '',\n '',\n this.blogPostVendorTag?.id\n ),\n distributorResponse: this.resourceService.getPublicPosts(\n this.getEffectiveSubscriptionId(),\n 1,\n 100,\n '',\n '',\n this.blogPostTag?.id\n )\n }).subscribe(({ vendorResponse, distributorResponse }) => {\n const sortedVendors = vendorResponse.posts.sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n );\n const sortedDistributors = distributorResponse.posts.sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n );\n\n // Show only integrations that have an image; count still includes all\n this.posts = sortedVendors.filter(post => this.hasDisplayableImage(post));\n this.distributerPosts = sortedDistributors.filter(post =>\n this.hasDisplayableImage(post)\n );\n\n const vendorCount = vendorResponse?.object_count ?? 0;\n const distributorCount = distributorResponse?.object_count ?? 0;\n const total = vendorCount + distributorCount;\n\n this.integrationCountDisplay = total === 0 ? 0 : Math.ceil(total / 10) * 10;\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n this.cdr.markForCheck();\n });\n }\n\n loadMicrosoftVideo(videoUrl) {\n window.open(videoUrl, '_blank', 'noopener,noreferrer');\n }\n\n loadKeseyaVideo(): void {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedKesyaVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoWebinarLoaded = true;\n }\n\n addIntegrationItem() {\n this.editingIntegrations.items.push({\n title: '',\n description: '',\n blog_url: '',\n image_url: '',\n video_url: ''\n });\n }\n\n removeIntegrationItem(index: number) {\n this.editingIntegrations.items.splice(index, 1);\n }\n\n dropIntegrationItems(event) {\n moveItemInArray(this.editingIntegrations.items, event.previousIndex, event.currentIndex);\n }\n\n saveIntegrations(modalRef) {\n const updatedIntegrations = {\n ...this.editingIntegrations\n };\n\n this.adminService\n .updateDomainConfig(this.domainId, {\n integrations: updatedIntegrations,\n subscription_id: this.getEffectiveSubscriptionId()\n })\n .subscribe(() => {\n this.integrations = updatedIntegrations;\n this.toast.success('Integrations updated');\n modalRef.close();\n this.cdr.markForCheck();\n });\n }\n\n saveGuides(modalRef) {\n const updatedGuides = {\n ...this.editingGuides\n };\n\n this.adminService\n .updateDomainConfig(this.domainId, {\n guides: updatedGuides,\n subscription_id: this.getEffectiveSubscriptionId()\n })\n .subscribe(() => {\n this.guideData = updatedGuides;\n this.toast.success('Guides updated');\n modalRef.close();\n this.cdr.markForCheck();\n });\n }\n\n openGuidesModal(template) {\n this.editingGuides = structuredClone(this.guideData ?? { items: [] });\n this.modalService.open(template, { size: 'xl' });\n }\n\n addGuide() {\n this.editingGuides.items.push({\n title: '',\n button_text: '',\n image_url: '',\n guide_url: '',\n description: ''\n });\n }\n\n removeGuide(index: number) {\n this.editingGuides.items.splice(index, 1);\n }\n\n dropGuides(event: CdkDragDrop<string[]>) {\n moveItemInArray(this.editingGuides.items, event.previousIndex, event.currentIndex);\n }\n\n private hasDisplayableImage(post: {\n companyImg?: string;\n rectangular_picture?: { url?: string };\n }): boolean {\n if (post?.companyImg) {\n return true;\n }\n const url = post?.rectangular_picture?.url;\n return !!url && !url.includes('default-photo');\n }\n\n /** Helper method to get effective subscription ID */\n private getEffectiveSubscriptionId(): number {\n return HelperService.getEffectiveSubscriptionId(\n this.user,\n this.subscriptionId,\n this.masterSubscriptionId\n );\n }\n\n private updateCanEditResourcesValue(): void {\n if (this.userLoggedIn && this.user) {\n this.canEditResourcesValue = HelperService.canEditResources(\n this.user,\n this.userLoggedIn,\n this.permissionService\n );\n } else {\n this.canEditResourcesValue = false;\n }\n }\n\n canEditResources(): boolean {\n return this.canEditResourcesValue;\n }\n}\n","<pw-resource-header [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-resource-header>\n<pw-integration-top-banner></pw-integration-top-banner>\n<div class=\"bg-white\">\n <section class=\"guide-section bg-white py-5 section-outer\">\n <div class=\"container sec-container\">\n @if (isLoaded && (posts.length + distributerPosts.length) > 0) {\n <div>\n <h1 class=\"int-title mb-0\">{{ integrationCountDisplay }}+ integrations <span class=\"int-title__sub\">(&amp; counting)</span></h1>\n <p class=\"int-text\">Search the current list of {{ companyName }} vendor and distributor integrations below.</p>\n </div>\n }\n @if (isLoaded) {\n <pw-resource-company-card [header]=\"'integrated vendors'\"\n (getPosts)=\"getPostTags()\"\n [integrationCountDisplay]=\"integrationCountDisplay\"\n [data]=\"posts\"\n [user]=\"user\"\n [userLoggedIn]=\"userLoggedIn\"></pw-resource-company-card>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (integrationCountDisplay === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n @if (isLoaded && (posts.length + distributerPosts.length) > 0) {\n <div class=\"text-center pt-3 mt-4\">\n <p class=\"see-span\">Don&rsquo;t see what you&rsquo;re after? <a [href]=\"contactUsUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"int-span team-span\">Speak with our team to request a connection <i class=\"fa fa-chevron-right team-span__icon\" aria-hidden=\"true\"></i></a>\n </p>\n </div>\n }\n </div>\n\n</section>\n<section class=\"guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n @if (isLoaded) {\n <pw-resource-company-card [header]=\"'integrated Distributors'\"\n [integrationCountDisplay]=\"integrationCountDisplay\"\n [vendor]=\"true\"\n (getPosts)=\"getPostTags()\"\n [data]=\"distributerPosts\"\n [user]=\"user\"\n [userLoggedIn]=\"userLoggedIn\"></pw-resource-company-card>\n }\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (integrationCountDisplay === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.NoDataMessage' | transloco\"/>\n </div>\n }\n </div>\n\n</section>\n@if (integrations) {\n <section class=\"guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <div class=\"how-it-works-wrapper\">\n <div class=\"d-flex\">\n <h2 class=\"it-works-title mb-0\">{{ integrations?.title || 'How it works' }}</h2>\n @if (canEditResourcesValue) {\n <i\n class=\"fa fa-edit in-page-edit-icon text-black ms-4 mt-3 cursor-pointer\"\n (click)=\"openEditIntegrationsModal(editIntegrationsModal)\"\n (keydown.enter)=\"openEditIntegrationsModal(editIntegrationsModal)\"\n (keydown.space)=\"openEditIntegrationsModal(editIntegrationsModal)\"\n title=\"Edit Integrations Section\"></i>\n }\n </div>\n <p class=\"pb-20\" [innerHTML]=\"integrations?.description || 'View short example videos to understand how these integrations can work for you:'\"></p>\n <div class=\"row section-row\" [ngClass]=\"{ 'justify-content-center': integrations?.items?.length === 1 }\">\n @if (integrations?.items?.length > 0) {\n @for (integration of integrations?.items; track integration) {\n @if (integration?.image_url || integration?.title || integration?.description) {\n <div\n class=\"col-md-6\"\n >\n @if (integration?.video_url && integration?.video_url.includes('https')) {\n <div class=\"d-flex justify-content-center cursor-pointer\">\n @if (integration?.video_url) {\n <img\n [src]=\"integration?.image_url\"\n (click)=\"loadMicrosoftVideo(integration?.video_url)\"\n (keydown.enter)=\"loadMicrosoftVideo(integration?.video_url)\"\n class=\"how-it-works-img\"\n alt=\"Integration Video Thumbnail\"\n />\n }\n </div>\n } @else {\n <div class=\"d-flex justify-content-center\">\n <div class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'No video found' | transloco\">\n </pw-no-data>\n </div>\n </div>\n }\n </div>\n }\n }\n } @else {\n <div class=\"w-100 text-center\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Integration.NoDataMessage' | transloco\"></pw-no-data>\n </div>\n }\n </div>\n </div>\n </div>\n </section>\n}\n@if (showIntegrations()) {\n <section class=\"guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <div class=\"row align-items-start\">\n <div class=\"col-md-6 text-md-start text-center\">\n <div class=\"d-flex\">\n <h2 class=\"guide-title mb-3\">{{ guideData?.items?.[0]?.title || 'Featured guide' }}</h2>\n @if (canEditResourcesValue) {\n <button type=\"button\"\n class=\"in-page-edit-icon text-black ms-4 mt-3 cursor-pointer\"\n (click)=\"openGuidesModal(guidesEditModal)\"\n title=\"Edit featured guide\"\n aria-label=\"Edit featured guide\">\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n <p class=\"guide-subtext\"\n [innerHTML]=\"guideData?.items?.[0]?.description || (canEditResourcesValue ? 'Add a featured guide via Admin &rarr; Domain config &rarr; Integrations.' : 'A practical walkthrough of how to get the most from your integrations.')\">\n </p>\n @if (guideData?.items?.[0]?.guide_url) {\n <a class=\"vault-btn\"\n [href]=\"guideData?.items?.[0]?.guide_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {{ guideData?.items?.[0]?.button_text || 'View the guide' }} <i class=\"fa fa-chevron-right vault-btn__icon\" aria-hidden=\"true\"></i>\n </a>\n }\n </div>\n <div class=\"col-md-6 text-center\">\n @if (guideData?.items?.[0]?.image_url && !guideData?.items?.[0]?.image_url?.includes('default-photo.jpg')) {\n <img\n [src]=\"guideData?.items?.[0]?.image_url\"\n alt=\"\"\n class=\"guide-img\"\n loading=\"lazy\" />\n }\n </div>\n </div>\n </div>\n </section>\n}\n</div>\n\n@if (resourcePostTag?.tag_category_id) {\n <pw-resource-note-card [categoryId]=\"resourcePostTag?.tag_category_id\" [tag]=\"resourcePostTag\" [releaseHeader]=\"true\" [resourceTitle]=\"resourcePostTag?.title\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-resource-note-card>\n}\n\n<pw-trial-4-contact-us [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-trial-4-contact-us>\n\n\n\n<ng-template #editIntegrationsModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Integrations Section</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"integration-title\">Title</label>\n <input class=\"form-control\" id=\"integration-title\" [(ngModel)]=\"editingIntegrations.title\"\n aria-label=\"Integration Title\" />\n </div>\n\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"integration-description\">Description</label>\n <textarea class=\"form-control\" id=\"integration-description\" rows=\"3\" [(ngModel)]=\"editingIntegrations.description\"\n aria-label=\"Integration Description\"></textarea>\n </div>\n\n <div cdkDropList (cdkDropListDropped)=\"dropIntegrationItems($event)\">\n @for (integration of editingIntegrations.items; track integration; let i = $index) {\n <div class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <span class=\"pw-label-style form-label mb-0\" id=\"integration-item-label\">Integration Item</span>\n <i class=\"fa fa-bars cursor-move in-page-bars-icon\" cdkDragHandle></i>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-title-' + i\">Title</label>\n <input class=\"form-control\" [id]=\"'integration-item-title-' + i\" [(ngModel)]=\"integration.title\" id=\"input_integration.title_7712\" name=\"input_integration.title_7712\"\n aria-label=\"Input Integration.title 7712\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-description-' + i\">Description</label>\n <input class=\"form-control\" [id]=\"'integration-item-description-' + i\" [(ngModel)]=\"integration.description\" id=\"input_integration.description_9056\" name=\"input_integration.description_9056\"\n aria-label=\"Input Integration.description 9056\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-blog-url-' + i\">Blog URL</label>\n <input class=\"form-control\" [id]=\"'integration-item-blog-url-' + i\" [(ngModel)]=\"integration.blog_url\" id=\"input_integration.blog_url_7856\" name=\"input_integration.blog_url_7856\"\n aria-label=\"Input Integration.blog Url 7856\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-image-url-' + i\">Image URL</label>\n <input class=\"form-control\" [id]=\"'integration-item-image-url-' + i\" [(ngModel)]=\"integration.image_url\" id=\"input_integration.image_url_9056\" name=\"input_integration.image_url_9056\"\n aria-label=\"Input Integration.image Url 9056\" />\n </div>\n <div class=\"col-md-12 mb-2\">\n <label class=\"form-label\" [for]=\"'integration-item-video-url-' + i\">Video URL</label>\n <input class=\"form-control\" [id]=\"'integration-item-video-url-' + i\" [(ngModel)]=\"integration.video_url\" id=\"input_integration.video_url_9056\" name=\"input_integration.video_url_9056\"\n aria-label=\"Input Integration.video Url 9056\" />\n </div>\n </div>\n <div class=\"d-flex justify-content-end\">\n <i class=\"fa fa-trash text-danger cursor-pointer\" (click)=\"removeIntegrationItem(i)\" (keydown.enter)=\"removeIntegrationItem(i)\"\n (keydown.space)=\"removeIntegrationItem(i)\"></i>\n </div>\n </div>\n }\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm\" (click)=\"addIntegrationItem()\">+ Add Integration</button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveIntegrations(modal)\">Save</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #guidesEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Guides</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Guides Section</h4>\n\n <div cdkDropList (cdkDropListDropped)=\"dropGuides($event)\">\n @for (guide of editingGuides.items; track guide; let i = $index) {\n <div class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-title-' + i\">Title</label>\n <input class=\"form-control\" [id]=\"'guide-title-' + i\" [(ngModel)]=\"guide.title\" id=\"input_guide.title_7072\" name=\"input_guide.title_7072\"\n aria-label=\"Input Guide.title 7072\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-button-text-' + i\">Button Text</label>\n <input class=\"form-control\" [id]=\"'guide-button-text-' + i\" [(ngModel)]=\"guide.button_text\" id=\"input_guide.button_text_7712\" name=\"input_guide.button_text_7712\"\n aria-label=\"Input Guide.button Text 7712\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-image-url-' + i\">Image URL</label>\n <input class=\"form-control\" [id]=\"'guide-image-url-' + i\" [(ngModel)]=\"guide.image_url\" id=\"input_guide.image_url_7856\" name=\"input_guide.image_url_7856\"\n aria-label=\"Input Guide.image Url 7856\" />\n </div>\n <div class=\"col-md-6 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-url-' + i\">Guide URL</label>\n <input class=\"form-control\" [id]=\"'guide-url-' + i\" [(ngModel)]=\"guide.guide_url\" id=\"input_guide.guide_url_6944\" name=\"input_guide.guide_url_6944\"\n aria-label=\"Input Guide.guide Url 6944\" />\n </div>\n <div class=\"col-12 mb-2\">\n <label class=\"form-label\" [for]=\"'guide-description-' + i\">Description</label>\n <textarea class=\"form-control\" [id]=\"'guide-description-' + i\" [name]=\"'guide-description-' + i\" rows=\"3\" [(ngModel)]=\"guide.description\"></textarea>\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <i class=\"fa fa-trash text-danger cursor-pointer\" (click)=\"removeGuide(i)\" (keydown.enter)=\"removeGuide(i)\" (keydown.space)=\"removeGuide(i)\"></i>\n <i class=\"fa fa-bars cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n }\n </div>\n\n <button class=\"btn btn-primary mt-2\" (click)=\"addGuide()\">+ Add Guide</button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveGuides(modal)\">Save</button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { IntegrationTopBannerComponent } from '../../components/resource-integration/integration-top-banner/integration-top-banner.component';\nimport { ResourceIntegrationComponent } from '../../components/resource-integration/resource-integration.component';\nimport { ResourceSharedModule } from '../../shared/resource-shared.module';\n\nconst routes: Routes = [\n {\n path: '',\n component: ResourceIntegrationComponent,\n data: {\n title: 'Resources - Integrations',\n permission: 'Pages.Blog',\n preload: false\n }\n }\n];\n\n@NgModule({\n imports: [\n ResourceSharedModule,\n RouterModule.forChild(routes),\n ResourceIntegrationComponent,\n IntegrationTopBannerComponent\n ]\n})\nexport class ResourceIntegrationsModule {}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAa,gCAAb,MAAa,sCAAsC,uBAAsB;CAXzE,cAAA;;EAYI,KAAA,eAAe,KAAK,WAAW,cAAc,YAAY;CAK5D;CAHa,gBAAa;EACnB,OAAO;CACX;CALS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA6B,MAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA7B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA6B,cAAA;GAAA,UAAA;GAAA,iBAAA;GAAA,UAAA;GAAA,UClB1C;GAsDA,QAAA;IAAA;IAAA;IAAA;GAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MDtCc;IAA8B,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,eAAA;GAAA,GAAA;IAAA,MAAA;IAAA,MAAE;IAAgB,UAAA;GAAA,CAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAEjD,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA6B,YAAA,CAAA;EAXzC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAA2B,iBAOpB,wBAAwB;GAAM,SACtC,CAAC,gCAAgC,gBAAgB;GAAC,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;;;AEqD/D,IAAa,+BAAb,MAAa,qCAAqC,iBAAgB;CA1BlE,cAAA;;EA2BqB,KAAA,YAAY,OAAO,YAAY;EAC/B,KAAA,kBAAkB,OAAO,eAAe;EACxC,KAAA,eAAe,OAAO,QAAQ;EAC9B,KAAA,aAAa,OAAO,UAAU;EAC9B,KAAA,cAAc,OAAO,WAAW;EAChC,KAAA,eAAe,OAAO,YAAY;EAClC,KAAA,MAAM,OAAO,iBAAiB;EAE9B,KAAA,MAAM,OAAO,QAAQ;EAItC,KAAA,mBAAmB,aAAa;EAChC,KAAA,cAAc,aAAa;EAE3B,KAAA,YAAY,KAAK,WAAW,aAAa;EAGzC,KAAA,uBAAuB,KAAK,UAAU,oBAAoB;EAC1D,KAAA,QAAoB,CAAA;EACpB,KAAA,mBAAmB,CAAA;EAGnB,KAAA,WAAW;EAKX,KAAA,eAAe,KAAK,WAAW,cAAc;EAE7C,KAAA,mBAAmB;EACnB,KAAA,cAAc;EACd,KAAA,cAAc;EACd,KAAA,cAAc;EAGd,KAAA,qBAAqB;EACrB,KAAA,kBAAkB;EAClB,KAAA,iBAAiB;EACjB,KAAA,aAAa;EAIb,KAAA,eAAe,KAAK,WAAW,cAAc,YAAY;EAIzD,KAAA,YAAY,KAAK,WAAW,cAAc;EAC1C,KAAA,gBAAgB,EAAE,OAAO,CAAA,EAAE;EAG3B,KAAA,wBAAwB;EACxB,KAAA,WAAW,KAAK,UAAU;CAiQ7B;CA/PG,WAAQ;EACJ,KAAK,cAAc,KAAK,UAAU,QAAQ;EAE1C,KAAK,IAAI,gBAAgB,MAAM,YAAY,gBAAgB,KAAK,SAAS;EACzE,KAAK,sBAAqB,CAAE,CAAC,WAAU,aAAW;GAC9C,KAAK,iBAAiB;GACtB,KAAK,IAAI,aAAY;EACzB,CAAC;EACD,KAAK,YAAY,UAAS,CAAE,CAAC,WAAU,QAAM;GACzC,KAAK,eAAe,CAAC,CAAC;GACtB,IAAI,KAAK,cAAc;IACnB,KAAK,aAAa,SAAS,SAAS,CAAC,CAAC,WAAU,QAAM;KAClD,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI;KACrC,KAAK,iBAAiB,MAAM;KAC5B,KAAK,IAAI,aAAY;IACzB,CAAC;IACD,KAAK,YAAY,YAAW,CAAE,CAAC,WAAU,SAAO;KAC5C,KAAK,OAAO;KAEZ,KAAK,QAAO;KACZ,KAAK,4BAA2B;KAChC,KAAK,IAAI,aAAY;IACzB,CAAC;GACL,OACI,KAAK,QAAO;GAEhB,KAAK,IAAI,aAAY;EACzB,CAAC;CACL;CAEQ,UAAO;EACX,KAAK,WAAW;EAChB,KAAK,WACA,oBAAoB,EAAE,QAAQ,eAAc,GAAI,KAAK,2BAA0B,CAAE,CAAC,CAClF,WAAU,aAAW;GAClB,KAAK,cAAc,UAAU,iBAAiB;GAC9C,KAAK,YAAW;GAChB,KAAK,IAAI,aAAY;EACzB,CAAC;CACT;CAEA,0BAA0B,UAAQ;EAC9B,KAAK,sBAAsB,gBAAgB,KAAK,YAAY;EAC5D,KAAK,aAAa,KAAK,UAAU;GAC7B,MAAM;GACN,UAAU;GACV,aAAa;EAChB,CAAA;CACL;CAEA,mBAAgB;EACZ,IAAI,KAAK,cACL,OAAO;EAGX,IAAI,MAAM,QAAQ,KAAK,WAAW,KAAK,KAAK,KAAK,UAAU,MAAM,QAAQ;GACrE,MAAM,OAAO,KAAK,UAAU,MAAM;GAClC,OACI,CAAC,CAAC,MAAM,SACR,CAAC,CAAC,MAAM,eACR,CAAC,CAAC,MAAM,aACP,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,UAAU,SAAS,mBAAmB;EAE1E;EAEA,OAAO;CACX;CAEQ,cAAW;EACf,KAAK,WACA,cAAc,mBAAmB,CAAA,GAAI,KAAK,2BAA0B,CAAE,CAAC,CACvE,WAAU,aAAW;GAClB,KAAK,kBAAkB,SAAS,KAAK,MACjC,QAAO,IAAI,SAAS,uBAAuB;GAE/C,KAAK,cAAc,SAAS,KAAK,MAC7B,QACI,IAAI,SAAS,6BACb,IAAI,oBAAoB,KAAK,aAAa,EAAE;GAEpD,KAAK,oBAAoB,SAAS,KAAK,MACnC,QACI,IAAI,SAAS,wBACb,IAAI,oBAAoB,KAAK,aAAa,EAAE;GAIpD,SAAS;IACL,gBAAgB,KAAK,gBAAgB,eACjC,KAAK,2BAA0B,GAC/B,GACA,KACA,IACA,IACA,KAAK,mBAAmB,EAAE;IAE9B,qBAAqB,KAAK,gBAAgB,eACtC,KAAK,2BAA0B,GAC/B,GACA,KACA,IACA,IACA,KAAK,aAAa,EAAE;GAE3B,CAAA,CAAC,CAAC,WAAW,EAAE,gBAAgB,0BAAyB;IACrD,MAAM,gBAAgB,eAAe,MAAM,MACtC,GAAG,MACA,IAAI,KAAK,EAAE,YAAY,CAAC,CAAC,QAAO,IAAK,IAAI,KAAK,EAAE,YAAY,CAAC,CAAC,QAAO,CAAE;IAE/E,MAAM,qBAAqB,oBAAoB,MAAM,MAChD,GAAG,MACA,IAAI,KAAK,EAAE,YAAY,CAAC,CAAC,QAAO,IAAK,IAAI,KAAK,EAAE,YAAY,CAAC,CAAC,QAAO,CAAE;IAI/E,KAAK,QAAQ,cAAc,QAAO,SAAQ,KAAK,oBAAoB,IAAI,CAAC;IACxE,KAAK,mBAAmB,mBAAmB,QAAO,SAC9C,KAAK,oBAAoB,IAAI,CAAC;IAKlC,MAAM,SAFc,gBAAgB,gBAAgB,MAC3B,qBAAqB,gBAAgB;IAG9D,KAAK,0BAA0B,UAAU,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE,IAAI;IACzE,KAAK,WAAW;IAChB,KAAK,IAAI,aAAY;GACzB,CAAC;GACD,KAAK,IAAI,aAAY;EACzB,CAAC;CACT;CAEA,mBAAmB,UAAQ;EACvB,OAAO,KAAK,UAAU,UAAU,qBAAqB;CACzD;CAEA,kBAAe;EACX,MAAM,UAAU,iCAAiC,KAAK,eAAc;EAEpE,KAAK,yBAAyB,KAAK,UAAU,+BAA+B,OAAO;EACnF,KAAK,qBAAqB;CAC9B;CAEA,qBAAkB;EACd,KAAK,oBAAoB,MAAM,KAAK;GAChC,OAAO;GACP,aAAa;GACb,UAAU;GACV,WAAW;GACX,WAAW;EACd,CAAA;CACL;CAEA,sBAAsB,OAAa;EAC/B,KAAK,oBAAoB,MAAM,OAAO,OAAO,CAAC;CAClD;CAEA,qBAAqB,OAAK;EACtB,gBAAgB,KAAK,oBAAoB,OAAO,MAAM,eAAe,MAAM,YAAY;CAC3F;CAEA,iBAAiB,UAAQ;EACrB,MAAM,sBAAsB,EACxB,GAAG,KAAK,oBACX;EAED,KAAK,aACA,mBAAmB,KAAK,UAAU;GAC/B,cAAc;GACd,iBAAiB,KAAK,2BAA0B;EACnD,CAAA,CAAC,CACD,gBAAe;GACZ,KAAK,eAAe;GACpB,KAAK,MAAM,QAAQ,sBAAsB;GACzC,SAAS,MAAK;GACd,KAAK,IAAI,aAAY;EACzB,CAAC;CACT;CAEA,WAAW,UAAQ;EACf,MAAM,gBAAgB,EAClB,GAAG,KAAK,cACX;EAED,KAAK,aACA,mBAAmB,KAAK,UAAU;GAC/B,QAAQ;GACR,iBAAiB,KAAK,2BAA0B;EACnD,CAAA,CAAC,CACD,gBAAe;GACZ,KAAK,YAAY;GACjB,KAAK,MAAM,QAAQ,gBAAgB;GACnC,SAAS,MAAK;GACd,KAAK,IAAI,aAAY;EACzB,CAAC;CACT;CAEA,gBAAgB,UAAQ;EACpB,KAAK,gBAAgB,gBAAgB,KAAK,aAAa,EAAE,OAAO,CAAA,EAAE,CAAE;EACpE,KAAK,aAAa,KAAK,UAAU,EAAE,MAAM,KAAI,CAAE;CACnD;CAEA,WAAQ;EACJ,KAAK,cAAc,MAAM,KAAK;GAC1B,OAAO;GACP,aAAa;GACb,WAAW;GACX,WAAW;GACX,aAAa;EAChB,CAAA;CACL;CAEA,YAAY,OAAa;EACrB,KAAK,cAAc,MAAM,OAAO,OAAO,CAAC;CAC5C;CAEA,WAAW,OAA4B;EACnC,gBAAgB,KAAK,cAAc,OAAO,MAAM,eAAe,MAAM,YAAY;CACrF;CAEQ,oBAAoB,MAG3B;EACG,IAAI,MAAM,YACN,OAAO;EAEX,MAAM,MAAM,MAAM,qBAAqB;EACvC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,eAAe;CACjD;CAGQ,6BAA0B;EAC9B,OAAO,cAAc,2BACjB,KAAK,MACL,KAAK,gBACL,KAAK,oBAAoB;CAEjC;CAEQ,8BAA2B;EAC/B,IAAI,KAAK,gBAAgB,KAAK,MAC1B,KAAK,wBAAwB,cAAc,iBACvC,KAAK,MACL,KAAK,cACL,KAAK,iBAAiB;OAG1B,KAAK,wBAAwB;CAErC;CAEA,mBAAgB;EACZ,OAAO,KAAK;CAChB;CArTS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA4B,MAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA5B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA4B,cAAA;GAAA,UAAA;GAAA,aAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,uBAAA;IAAA,aAAA;GAAA,CAAA;GAAA,iBAAA;GAAA,UAAA;GAAA,UCrEzC;GA6SA,QAAA,CAAA,grHAAA,0sGAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDzPQ;KAAuB,UAAA;KAAA,QAAA,CAAA,QAAA,cAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACvB;KAA6B,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAC7B;KAA4B,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAE5B;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACf;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACf;KAAO,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACP;KAAgB,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAChB;KAAyB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACzB;KAAwB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACxB;IAAW;IAAA;KAAA,MAAA;KAAA,MAAAA,KAAA;KAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAAA,KAAA;KAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAAA,KAAA;KAAA,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,eAAA;KAAA,UAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACX;KAAW,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,UAAA,CAAA,aAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACX;KAAO,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,UAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACP;KAAa,UAAA;KAAA,QAAA,CAAA,uBAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACb;KAAa,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAGR,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA4B,YAAA,CAAA;EA1BxC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAyB,iBAMlB,wBAAwB;GAAM,SACtC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACH;GAAA,UAAA;GAAA,QAAA,CAAA,grHAAA,0sGAAA;EAAA,CAAA;;;EAaA,MAAA;EAAU,MAAA,CAAA,uBAAuB;;;AEzEtC,MAAM,SAAiB,CACnB;CACI,MAAM;CACN,WAAW;CACX,MAAM;EACF,OAAO;EACP,YAAY;EACZ,SAAS;CACZ;AACJ,CACJ;AAUD,IAAa,6BAAb,MAAa,2BAA0B;CAA1B;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA0B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA1B;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA0B,SAAA;IAN/B;IAAoB,GAAA;IAEpB;IACA;GAA6B;EAAA,CAAA;CAAA;CAGxB;EAAA,KAAA,OAAA,GAAA,oBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA0B,SAAA;IAN/B;IACA,aAAa,SAAS,MAAM;IAC5B;IACA;GAA6B;EAAA,CAAA;CAAA;;AAGxB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA0B,YAAA,CAAA;EARtC,MAAA;EAAS,MAAA,CAAA,EACN,SAAS;GACL;GACA,aAAa,SAAS,MAAM;GAC5B;GACA;EACH,EACJ,CAAA"}
@@ -0,0 +1,399 @@
1
+ import { t as ResourceService } from "./posiwise-resource-module-resource.service-DAXsq-WG.mjs";
2
+ import { i as BaseResourceComponent, l as ResourcePager, u as ResourceEditCardLazyComponent } from "./posiwise-resource-module-resource-cards.module-BSJpkk9V.mjs";
3
+ import { ResourceSharedModule, ResourceTopBannerEditComponent } from "./posiwise-resource-module.mjs";
4
+ import { t as BaseTopBannerComponent } from "./posiwise-resource-module-base-top-banner.component-BwujN_up.mjs";
5
+ import * as i0 from "@angular/core";
6
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Input, NgModule, inject } from "@angular/core";
7
+ import { HelperService } from "@posiwise/helper-service";
8
+ import * as i1 from "@angular/router";
9
+ import { RouterModule } from "@angular/router";
10
+ import { Trial4ContactUsComponent } from "@posiwise/resource-contact-us";
11
+ import { DateFormatPipe } from "@posiwise/pipes";
12
+ import { TranslocoPipe } from "@jsverse/transloco";
13
+ import { AppBaseComponent } from "@posiwise/app-base-component";
14
+ import { ResourceHeaderComponent } from "@posiwise/utils";
15
+ import { AppLoaderComponent } from "@posiwise/app-loader";
16
+ var ResourceJobCardsComponent = class ResourceJobCardsComponent extends AppBaseComponent {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.resourceService = inject(ResourceService);
20
+ this.cdr = inject(ChangeDetectorRef);
21
+ this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;
22
+ this.canEdit = false;
23
+ }
24
+ ngOnInit() {
25
+ if (this.userLoggedIn) this.localStorage.getItem$("product").subscribe((res) => {
26
+ this.subscriptionId = res ? JSON.parse(res)?.subscriptionId : void 0;
27
+ this.cdr.markForCheck();
28
+ });
29
+ this.loadPosts();
30
+ }
31
+ ngOnChanges(changes) {
32
+ if ((changes["user"] || changes["userLoggedIn"]) && this.userLoggedIn && this.user) this.canEdit = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
33
+ }
34
+ get posts() {
35
+ return this.pager?.items ?? [];
36
+ }
37
+ get isLoaded() {
38
+ return this.pager?.isLoaded ?? false;
39
+ }
40
+ get isLoadingMore() {
41
+ return this.pager?.isLoadingMore ?? false;
42
+ }
43
+ get hasError() {
44
+ return !!this.pager?.hasError && this.posts.length === 0;
45
+ }
46
+ get total() {
47
+ return this.pager?.totalCount ?? 0;
48
+ }
49
+ loadPosts() {
50
+ this.pager = ResourcePager.forPublicPosts(this.resourceService, () => ({
51
+ subscriptionId: HelperService.getEffectiveSubscriptionId(this.user, this.subscriptionId, this.masterSubscriptionId),
52
+ tagCategoryIds: String(this.categoryId)
53
+ }), () => this.cdr.markForCheck(), () => true);
54
+ this.pager.reset();
55
+ }
56
+ onWindowScroll() {
57
+ this.pager?.loadMoreIfNearBottom();
58
+ }
59
+ jobLink(post) {
60
+ return post.external_url || `/resources/view/${post.slug}`;
61
+ }
62
+ static {
63
+ this.ɵfac = i0.ɵɵngDeclareFactory({
64
+ minVersion: "12.0.0",
65
+ version: "22.2.3",
66
+ ngImport: i0,
67
+ type: ResourceJobCardsComponent,
68
+ deps: null,
69
+ target: i0.ɵɵFactoryTarget.Component
70
+ });
71
+ }
72
+ static {
73
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
74
+ minVersion: "17.0.0",
75
+ version: "22.2.3",
76
+ type: ResourceJobCardsComponent,
77
+ isStandalone: true,
78
+ selector: "pw-resource-job-cards",
79
+ inputs: {
80
+ categoryId: "categoryId",
81
+ user: "user",
82
+ userLoggedIn: "userLoggedIn"
83
+ },
84
+ host: { listeners: { "window:scroll": "onWindowScroll()" } },
85
+ usesInheritance: true,
86
+ usesOnChanges: true,
87
+ ngImport: i0,
88
+ template: "<section class=\"jobs-section\">\n <div class=\"container\">\n @if (!isLoaded) {\n <div class=\"jobs-loading\">\n <pw-loader [isVisible]=\"true\" />\n </div>\n } @else if (hasError) {\n <div class=\"jobs-state jobs-error\" role=\"alert\">\n <p class=\"jobs-state__message\">{{ 'Resource.Jobs.LoadError' | transloco }}</p>\n <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"loadPosts()\">\n {{ 'Resource.Jobs.Retry' | transloco }}\n </button>\n </div>\n } @else if (posts.length === 0) {\n <div class=\"jobs-state jobs-empty\">\n <span class=\"jobs-state__icon\" aria-hidden=\"true\"><i class=\"fa fa-briefcase\"></i></span>\n <p class=\"jobs-state__message\">{{ 'Resource.Jobs.Empty' | transloco }}</p>\n </div>\n } @else {\n <p class=\"jobs-count\">\n {{ (total === 1 ? 'Resource.Jobs.CountOne' : 'Resource.Jobs.CountMany') | transloco: { count: total } }}\n </p>\n <ul class=\"jobs-grid\">\n @for (post of posts; track post.id) {\n <li class=\"job-card\">\n <pw-resource-edit-card-lazy\n class=\"job-card__edit\"\n [canEdit]=\"canEdit\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\" />\n <span class=\"job-card__icon\" aria-hidden=\"true\"><i class=\"fa fa-briefcase\"></i></span>\n <h2 class=\"job-card__title\">\n <a\n class=\"job-card__link\"\n [href]=\"jobLink(post)\"\n [attr.target]=\"post.external_url ? '_blank' : null\"\n [attr.rel]=\"post.external_url ? 'noopener noreferrer' : null\">\n {{ post.title }}\n @if (post.external_url) {\n <span class=\"visually-hidden\">{{ 'Resource.Jobs.OpensInNewTab' | transloco }}</span>\n }\n </a>\n </h2>\n @if (post.blurb) {\n <p class=\"job-card__blurb\">{{ post.blurb }}</p>\n }\n <div class=\"job-card__footer\">\n @if (post.published_at) {\n <span class=\"job-card__date\">\n {{ 'Resource.Jobs.Posted' | transloco: { date: (post.published_at | dateFormat) } }}\n </span>\n }\n <span class=\"job-card__cta\" aria-hidden=\"true\">\n {{ post.cta_text || ('Resource.Jobs.ViewRole' | transloco) }}\n <i class=\"fa fa-arrow-right\"></i>\n </span>\n </div>\n </li>\n }\n </ul>\n @if (isLoadingMore) {\n <div class=\"jobs-loading jobs-loading--more\">\n <pw-loader [isVisible]=\"true\" />\n </div>\n }\n }\n </div>\n</section>\n",
89
+ styles: [":host{--jobs-line: rgb(226, 229, 234);--jobs-line-strong: rgb(207, 216, 220);--jobs-ink: rgb(33, 33, 33);--jobs-ink-2: rgb(97, 97, 97);--jobs-ink-3: rgb(117, 117, 117);--jobs-tint: rgb(250, 250, 250);--jobs-surface: rgb(255, 255, 255);--jobs-shadow: rgba(0, 0, 0, .08);display:block}.jobs-section{background:var(--jobs-surface);padding:48px 0 64px}.jobs-count{margin:0 0 24px;color:var(--jobs-ink-2);font-size:1.375rem;font-weight:500;font-variant-numeric:tabular-nums}.jobs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr));gap:32px;margin:0;padding:0;list-style:none}.job-card{position:relative;display:flex;flex-direction:column;min-height:280px;padding:32px;background:var(--jobs-surface);border:1px solid var(--jobs-line);border-radius:8px;transition:border-color .15s ease-out,box-shadow .15s ease-out,transform .15s ease-out}.job-card:hover{border-color:var(--jobs-line-strong);box-shadow:0 8px 24px var(--jobs-shadow);transform:translateY(-2px)}.job-card:focus-within{outline:2px solid var(--first);outline-offset:2px}.job-card__edit{position:absolute;top:12px;right:12px;z-index:2}.job-card__icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:20px;font-size:1.5rem;color:var(--jobs-ink-2);background:var(--jobs-tint);border:1px solid var(--jobs-line);border-radius:8px}.job-card__title{margin:0 0 12px;font-size:1.875rem;font-weight:600;line-height:1.3;color:var(--jobs-ink)}.job-card__link{color:inherit;text-decoration:none}.job-card__link:after{content:\"\";position:absolute;inset:0;z-index:1;border-radius:8px}.job-card__link:focus-visible{outline:none}.job-card__blurb{display:-webkit-box;margin:0 0 24px;overflow:hidden;color:var(--jobs-ink-2);font-size:1.375rem;line-height:1.55;-webkit-line-clamp:4;-webkit-box-orient:vertical}.job-card__footer{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:auto;padding-top:20px;border-top:1px solid var(--jobs-line)}.job-card__date{color:var(--jobs-ink-3);font-size:1.125rem;font-variant-numeric:tabular-nums}.job-card__cta{display:inline-flex;gap:8px;align-items:center;margin-left:auto;color:var(--first);font-size:1.25rem;font-weight:600}.job-card__cta i{transition:transform .15s ease-out}.job-card:hover .job-card__cta i{transform:translate(3px)}@media(prefers-reduced-motion:reduce){.job-card,.job-card__cta i{transition:none}.job-card:hover{transform:none}}\n", ".jobs-loading{position:relative;min-height:160px}.jobs-loading--more{min-height:96px}.jobs-state{display:flex;flex-direction:column;gap:16px;align-items:center;padding:48px 16px;text-align:center;border:1px dashed var(--jobs-line-strong);border-radius:8px}.jobs-state__icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;color:var(--jobs-ink-3);background:var(--jobs-tint);border-radius:9999px}.jobs-state__message{margin:0;color:var(--jobs-ink-2);font-size:1rem}\n"],
90
+ dependencies: [
91
+ {
92
+ kind: "component",
93
+ type: AppLoaderComponent,
94
+ selector: "pw-loader",
95
+ inputs: [
96
+ "isVisible",
97
+ "closeOnOutsideClick",
98
+ "autoCloseTimeOut"
99
+ ]
100
+ },
101
+ {
102
+ kind: "component",
103
+ type: ResourceEditCardLazyComponent,
104
+ selector: "pw-resource-edit-card-lazy",
105
+ inputs: [
106
+ "id",
107
+ "resourceData",
108
+ "canEdit"
109
+ ],
110
+ outputs: ["updated"]
111
+ },
112
+ {
113
+ kind: "pipe",
114
+ type: DateFormatPipe,
115
+ name: "dateFormat"
116
+ },
117
+ {
118
+ kind: "pipe",
119
+ type: TranslocoPipe,
120
+ name: "transloco"
121
+ }
122
+ ],
123
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
124
+ });
125
+ }
126
+ };
127
+ i0.ɵɵngDeclareClassMetadata({
128
+ minVersion: "12.0.0",
129
+ version: "22.2.3",
130
+ ngImport: i0,
131
+ type: ResourceJobCardsComponent,
132
+ decorators: [{
133
+ type: Component,
134
+ args: [{
135
+ selector: "pw-resource-job-cards",
136
+ changeDetection: ChangeDetectionStrategy.OnPush,
137
+ imports: [
138
+ DateFormatPipe,
139
+ TranslocoPipe,
140
+ AppLoaderComponent,
141
+ ResourceEditCardLazyComponent
142
+ ],
143
+ template: "<section class=\"jobs-section\">\n <div class=\"container\">\n @if (!isLoaded) {\n <div class=\"jobs-loading\">\n <pw-loader [isVisible]=\"true\" />\n </div>\n } @else if (hasError) {\n <div class=\"jobs-state jobs-error\" role=\"alert\">\n <p class=\"jobs-state__message\">{{ 'Resource.Jobs.LoadError' | transloco }}</p>\n <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"loadPosts()\">\n {{ 'Resource.Jobs.Retry' | transloco }}\n </button>\n </div>\n } @else if (posts.length === 0) {\n <div class=\"jobs-state jobs-empty\">\n <span class=\"jobs-state__icon\" aria-hidden=\"true\"><i class=\"fa fa-briefcase\"></i></span>\n <p class=\"jobs-state__message\">{{ 'Resource.Jobs.Empty' | transloco }}</p>\n </div>\n } @else {\n <p class=\"jobs-count\">\n {{ (total === 1 ? 'Resource.Jobs.CountOne' : 'Resource.Jobs.CountMany') | transloco: { count: total } }}\n </p>\n <ul class=\"jobs-grid\">\n @for (post of posts; track post.id) {\n <li class=\"job-card\">\n <pw-resource-edit-card-lazy\n class=\"job-card__edit\"\n [canEdit]=\"canEdit\"\n [id]=\"post.id\"\n [resourceData]=\"post\"\n (updated)=\"loadPosts()\" />\n <span class=\"job-card__icon\" aria-hidden=\"true\"><i class=\"fa fa-briefcase\"></i></span>\n <h2 class=\"job-card__title\">\n <a\n class=\"job-card__link\"\n [href]=\"jobLink(post)\"\n [attr.target]=\"post.external_url ? '_blank' : null\"\n [attr.rel]=\"post.external_url ? 'noopener noreferrer' : null\">\n {{ post.title }}\n @if (post.external_url) {\n <span class=\"visually-hidden\">{{ 'Resource.Jobs.OpensInNewTab' | transloco }}</span>\n }\n </a>\n </h2>\n @if (post.blurb) {\n <p class=\"job-card__blurb\">{{ post.blurb }}</p>\n }\n <div class=\"job-card__footer\">\n @if (post.published_at) {\n <span class=\"job-card__date\">\n {{ 'Resource.Jobs.Posted' | transloco: { date: (post.published_at | dateFormat) } }}\n </span>\n }\n <span class=\"job-card__cta\" aria-hidden=\"true\">\n {{ post.cta_text || ('Resource.Jobs.ViewRole' | transloco) }}\n <i class=\"fa fa-arrow-right\"></i>\n </span>\n </div>\n </li>\n }\n </ul>\n @if (isLoadingMore) {\n <div class=\"jobs-loading jobs-loading--more\">\n <pw-loader [isVisible]=\"true\" />\n </div>\n }\n }\n </div>\n</section>\n",
144
+ styles: [":host{--jobs-line: rgb(226, 229, 234);--jobs-line-strong: rgb(207, 216, 220);--jobs-ink: rgb(33, 33, 33);--jobs-ink-2: rgb(97, 97, 97);--jobs-ink-3: rgb(117, 117, 117);--jobs-tint: rgb(250, 250, 250);--jobs-surface: rgb(255, 255, 255);--jobs-shadow: rgba(0, 0, 0, .08);display:block}.jobs-section{background:var(--jobs-surface);padding:48px 0 64px}.jobs-count{margin:0 0 24px;color:var(--jobs-ink-2);font-size:1.375rem;font-weight:500;font-variant-numeric:tabular-nums}.jobs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr));gap:32px;margin:0;padding:0;list-style:none}.job-card{position:relative;display:flex;flex-direction:column;min-height:280px;padding:32px;background:var(--jobs-surface);border:1px solid var(--jobs-line);border-radius:8px;transition:border-color .15s ease-out,box-shadow .15s ease-out,transform .15s ease-out}.job-card:hover{border-color:var(--jobs-line-strong);box-shadow:0 8px 24px var(--jobs-shadow);transform:translateY(-2px)}.job-card:focus-within{outline:2px solid var(--first);outline-offset:2px}.job-card__edit{position:absolute;top:12px;right:12px;z-index:2}.job-card__icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:20px;font-size:1.5rem;color:var(--jobs-ink-2);background:var(--jobs-tint);border:1px solid var(--jobs-line);border-radius:8px}.job-card__title{margin:0 0 12px;font-size:1.875rem;font-weight:600;line-height:1.3;color:var(--jobs-ink)}.job-card__link{color:inherit;text-decoration:none}.job-card__link:after{content:\"\";position:absolute;inset:0;z-index:1;border-radius:8px}.job-card__link:focus-visible{outline:none}.job-card__blurb{display:-webkit-box;margin:0 0 24px;overflow:hidden;color:var(--jobs-ink-2);font-size:1.375rem;line-height:1.55;-webkit-line-clamp:4;-webkit-box-orient:vertical}.job-card__footer{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:auto;padding-top:20px;border-top:1px solid var(--jobs-line)}.job-card__date{color:var(--jobs-ink-3);font-size:1.125rem;font-variant-numeric:tabular-nums}.job-card__cta{display:inline-flex;gap:8px;align-items:center;margin-left:auto;color:var(--first);font-size:1.25rem;font-weight:600}.job-card__cta i{transition:transform .15s ease-out}.job-card:hover .job-card__cta i{transform:translate(3px)}@media(prefers-reduced-motion:reduce){.job-card,.job-card__cta i{transition:none}.job-card:hover{transform:none}}\n", ".jobs-loading{position:relative;min-height:160px}.jobs-loading--more{min-height:96px}.jobs-state{display:flex;flex-direction:column;gap:16px;align-items:center;padding:48px 16px;text-align:center;border:1px dashed var(--jobs-line-strong);border-radius:8px}.jobs-state__icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;color:var(--jobs-ink-3);background:var(--jobs-tint);border-radius:9999px}.jobs-state__message{margin:0;color:var(--jobs-ink-2);font-size:1rem}\n"]
145
+ }]
146
+ }],
147
+ propDecorators: {
148
+ categoryId: [{
149
+ type: Input,
150
+ args: [{ required: true }]
151
+ }],
152
+ user: [{ type: Input }],
153
+ userLoggedIn: [{ type: Input }],
154
+ onWindowScroll: [{
155
+ type: HostListener,
156
+ args: ["window:scroll"]
157
+ }]
158
+ }
159
+ });
160
+ const FALLBACK_IMAGE = "/assets/img/resource/careers-team.svg";
161
+ const FALLBACK_IMAGE_STILL = "/assets/img/resource/careers-team-static.svg";
162
+ var ResourceJobsTopBannerComponent = class ResourceJobsTopBannerComponent extends BaseTopBannerComponent {
163
+ constructor() {
164
+ super(...arguments);
165
+ this.stillBannerImage = FALLBACK_IMAGE_STILL;
166
+ }
167
+ get bannerImage() {
168
+ return this.hasUploadedImage ? this.blogPostTag.image.url : FALLBACK_IMAGE;
169
+ }
170
+ get hasUploadedImage() {
171
+ const url = this.blogPostTag?.image?.url;
172
+ return !!url && !url.includes("no_image_uploaded_squared");
173
+ }
174
+ get hasDescription() {
175
+ const description = this.blogPostTag?.description;
176
+ return !!description && description !== "null";
177
+ }
178
+ getSearchTerm() {
179
+ return "Jobs";
180
+ }
181
+ static {
182
+ this.ɵfac = i0.ɵɵngDeclareFactory({
183
+ minVersion: "12.0.0",
184
+ version: "22.2.3",
185
+ ngImport: i0,
186
+ type: ResourceJobsTopBannerComponent,
187
+ deps: null,
188
+ target: i0.ɵɵFactoryTarget.Component
189
+ });
190
+ }
191
+ static {
192
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
193
+ minVersion: "17.0.0",
194
+ version: "22.2.3",
195
+ type: ResourceJobsTopBannerComponent,
196
+ isStandalone: true,
197
+ selector: "pw-resource-jobs-top-banner",
198
+ usesInheritance: true,
199
+ ngImport: i0,
200
+ template: "<section class=\"bg-white pricing-section\">\n <div class=\"resource-banner\">\n @if (isLoaded) {\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n <div class=\"text-content\">\n <div class=\"resource-heading\">\n <h1 class=\"resource-header-text mb-4\">\n <span class=\"d-inline-flex align-items-center gap-2 flex-wrap\">\n @if (blogPostTag?.title) {\n <span>{{ blogPostTag.title }}</span>\n } @else {\n <span>{{ 'Resource.Jobs.DefaultTitle' | transloco }}</span>\n }\n @if (canEditResourcesValue && blogPostTag) {\n <pw-resource-top-banner-edit\n [blogPostTag]=\"blogPostTag\"\n [user]=\"user\"\n [userLoggedIn]=\"userLoggedIn\"\n (getUpdatedTag)=\"getTags()\"\n ></pw-resource-top-banner-edit>\n }\n </span>\n </h1>\n </div>\n </div>\n <div class=\"text-extension mt-4\">\n @if (hasDescription) {\n <p class=\"intro jobs-banner-intro\">{{ blogPostTag.description }}</p>\n } @else {\n <p class=\"intro\">{{ 'Resource.Jobs.DefaultIntro' | transloco }}</p>\n }\n </div>\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <div class=\"resource-math-img\"></div>\n <picture class=\"jobs-banner-picture\">\n @if (!hasUploadedImage) {\n <source media=\"(prefers-reduced-motion: reduce)\" [srcset]=\"stillBannerImage\" />\n }\n <img class=\"resource-laptop-img dyn-img jobs-banner-art\"\n [src]=\"bannerImage\"\n [alt]=\"'Resource.Jobs.BannerAlt' | transloco\"\n width=\"600\"\n height=\"450\"\n loading=\"eager\"\n fetchpriority=\"high\" />\n </picture>\n </div>\n </div>\n }\n </div>\n</section>\n",
201
+ styles: [
202
+ "@charset \"UTF-8\";.cta-btn{display:inline-flex;align-items:center;gap:.6rem;background:var(--text-color, currentcolor);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem;border:1px solid var(--text-color, currentcolor);box-shadow:none!important;transition:background .15s ease,color .15s ease,transform .15s ease}.cta-btn:hover{background-color:#fff!important;color:var(--text-color, currentcolor)!important;transform:translateY(-1px)}.cta-btn:focus-visible{outline:2px solid var(--text-color, currentcolor);outline-offset:3px}.cta-btn__icon{font-size:1.1rem;line-height:1}@media(width<=768px){.dyn-img{top:-3rem!important}}.text-extension{max-width:560px}.text-extension .intro{font-size:2rem;line-height:3rem;font-weight:400;color:var(--text-color, currentColor);margin-bottom:1rem}.text-extension .cta-buttons{margin-top:2rem!important}.text-extension .note{font-size:1.2rem;color:#000;margin-top:1rem;margin-left:3rem}.resource-banner{box-shadow:0 4px 32px -14px #40576d4d!important;position:relative;padding:5rem 0;color:#fff;background:linear-gradient(90deg,var(--first) 0%,#a8e1fb 100%);overflow:hidden;z-index:2}@media(width<=1200px){.resource-banner .container{padding:7rem 3rem 0rem!important}}.resource-banner:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:61%;background:#fff;clip-path:polygon(0 18%,100% 0%,100% 100%,0% 100%)}.resource-banner .container{position:relative;z-index:2}.resource-banner .text-content{max-width:500px;text-align:left;margin-bottom:75rem}.resource-banner .text-content h1{margin-bottom:1.5rem;line-height:1.2}.resource-banner .text-content .intro{font-size:1.2rem;margin:1rem 0;color:#000}.resource-banner .text-content .cta-btn{display:inline-block;background:#000;color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem}.resource-banner .text-content .cta-buttons{margin-top:2rem}.resource-banner .text-content .note{margin-top:1rem;margin-left:5.6rem;font-size:.9rem;color:#555}.resource-banner .resource-header-text{max-width:500px;font-weight:500;color:#fff!important;font-size:4.5rem!important}.resource-banner .blue-text{font-weight:100}@media(width<=991px){.resource-banner .text-content{margin-top:1.5rem;margin-bottom:0;text-align:center;max-width:360px}.resource-banner .text-content h1{margin-bottom:6.5rem!important}.resource-banner .resource-header-text{font-size:2.5rem!important}.resource-banner .cta-buttons{margin-top:0rem!important;justify-content:center!important}.resource-banner .note{margin-left:8rem!important}.resource-banner .image-content{position:relative;margin-bottom:3rem;height:230px}.resource-banner .image-content .floating-box{position:absolute;top:25px;left:3rem;transform:translate(-50%) rotate(-10deg);background:#fff;padding:.75rem 1rem;border-radius:20px;box-shadow:0 8px 30px #00000026;text-align:center;z-index:3;display:inline-block;width:auto}.resource-banner .image-content .floating-box img{width:24px;margin-bottom:.4rem}.resource-banner .image-content .floating-box .label{font-size:.75rem;color:#333;margin:0;line-height:1.2}.resource-banner .image-content .floating-box .count{font-size:1.2rem;font-weight:700;color:#000;margin-top:.25rem}.resource-banner .image-content .screen-img{max-width:280px;position:absolute;bottom:0;left:3rem;z-index:2;transform:rotate(-1deg);box-shadow:0 8px 15px #0003}.resource-banner .image-content .person-img{max-width:170px;width:100%;position:relative;z-index:3;left:13rem;top:-11.35rem}.resource-banner .image-content .resource-laptop-img{max-width:300px;width:100%;position:relative;z-index:3;margin-top:3rem;left:2%;height:auto!important;top:4rem}}@media(width>=991px){.resource-banner .text-content{position:absolute;width:760px}}.white-content{background:#fff;color:#000}.white-content .intro{font-size:1.2rem;color:#000}.white-content .note{font-size:.85rem;margin-top:1rem;color:#555}@media(width>=991px){.section-outer{padding-top:7rem!important}}@media(width>=768px)and (width<=991px){.resource-math-img{left:36%!important;top:22rem!important}}@media(width>=991px)and (width<=1200px){.text-extension{max-width:760px;position:absolute;margin-bottom:23rem!important}.resource-divider{top:63.5rem;position:absolute!important}.resource-banner{padding-bottom:90px!important}}@media(width>=1200px){.text-extension{max-width:500px;position:absolute;margin-bottom:31rem!important}.resource-laptop-img{width:100%;max-width:800px!important;max-height:800px!important;height:auto}}@media(width>=1200px){.resource-divider{top:59.5rem;position:absolute!important}.cta-tab{margin-bottom:5rem!important}}@media(width>=1200px){.image-content{margin-top:0;display:flex;align-items:flex-end;gap:1.5rem;height:0}.image-content .floating-box{position:absolute;top:25px;transform:translate(-50%) rotate(-10deg);background:#fff;padding:1rem;border-radius:20px;box-shadow:0 8px 30px #00000026;text-align:center;width:170px;z-index:3}.image-content .floating-box img{width:30px;margin-bottom:.5rem}.image-content .floating-box .label{font-size:.85rem;color:#333;margin:0}.image-content .floating-box .count{font-size:1.5rem;font-weight:700;color:#000;margin:.25rem 0 0}.image-content .screen-img{width:100%;position:absolute;bottom:5rem;left:3rem;z-index:2;transform:rotate(-1deg);box-shadow:0 8px 15px #0003;max-width:400px;margin-bottom:4rem}.image-content .person-img{max-width:800px;width:100%;position:relative;z-index:3;min-width:420px;margin-bottom:0;bottom:7rem;left:4rem}.image-content .resource-laptop-img{top:4rem;left:2rem;position:relative}.image-content .resource-math-img{bottom:9rem;left:61rem;position:relative;height:312px;margin-right:1rem;min-width:450px!important}}@media(width<=786px){.text-extension{position:absolute;margin:3rem;margin-top:11rem!important}}@media(width>=786px)and (width<=991px){.text-extension{position:absolute;margin:3rem;margin-top:24rem!important}}@media(width>=704px)and (width<=768px){.resource-laptop-img{top:18rem!important;right:30%!important;left:auto!important}}@media(width>=786px)and (width<=991px){.resource-laptop-img{max-width:250px!important;top:18rem!important;right:30%!important;left:auto!important}}@media(width>=991px)and (width<=1200px){.resource-laptop-img{top:7rem;left:3%;position:relative;width:100%;max-width:600px!important;height:auto}}@media(width>=786px)and (width<=1200px){.image-content{margin-top:0;display:flex;align-items:flex-end;gap:1.5rem;height:0}.image-content .floating-box{position:absolute;top:25px;transform:translate(-50%) rotate(-10deg);background:#fff;padding:1rem;border-radius:20px;box-shadow:0 8px 30px #00000026;text-align:center;width:170px;z-index:3}.image-content .floating-box img{width:30px;margin-bottom:.5rem}.image-content .floating-box .label{font-size:.85rem;color:#333;margin:0}.image-content .floating-box .count{font-size:1.5rem;font-weight:700;color:#000;margin:.25rem 0 0}.image-content .screen-img{width:100%;position:absolute;bottom:5rem;left:3rem;z-index:2;transform:rotate(-1deg);box-shadow:0 8px 15px #0003;max-width:400px;margin-bottom:4rem}.image-content .person-img{max-width:800px;width:100%;position:relative;z-index:3;min-width:420px;margin-bottom:0;bottom:7rem;left:4rem}.image-content .resource-math-img{height:243px!important;min-width:350px;bottom:9rem;left:34rem;position:relative;width:350px!important}}@media(width<=991px){.resource-banner{padding-bottom:15rem}}@media(width<=768px){.resource-math-img{top:18rem}.cta-btn{justify-content:center}.resource-divider{margin-top:49rem!important}.intro{font-size:1.7rem!important}}@media(width>=768px)and (width<=991px){.cta-btn{justify-content:center}.resource-divider{margin-top:36rem!important}}@media(width>=991px){.resource-banner{padding-top:768px;padding-bottom:42px;overflow:hidden}.section-fadeout{height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.resource-heading{width:700px!important}::ng-deep .vault-section{max-width:1580px!important;padding-left:48px!important;padding-top:130px!important}}@media(width<=991px){.billing-section{flex-direction:column!important;gap:3rem}.billing-section .billing-section1,.billing-section .billing-section2{width:90%!important}.billing-section .billing-section1{margin-left:1.5rem;margin-top:4rem}}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}.outer-section-fadeout{top:62rem!important}}@media(max-width:991px){.resource-banner .container{display:flex;flex-direction:column;align-items:flex-start;min-height:auto}.resource-banner .text-content,.resource-banner .text-extension,.resource-banner .image-content{position:static!important;left:auto;top:auto;max-width:100%;margin:0!important}.resource-banner .text-content{margin-bottom:0!important}.text-extension{margin-top:1rem!important}.resource-banner .image-content{width:100%;height:auto;align-self:center;margin-top:auto!important}.resource-banner .resource-laptop-img{position:static!important;max-width:260px;width:100%;height:auto!important}.resource-banner{padding:2rem 0 0rem!important}}@media(max-width:575px){.resource-banner:after{height:45%}}\n",
203
+ "@media(width<=768px){.dyn-img{top:6rem!important}}\n",
204
+ ".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",
205
+ "textarea{font-size:1rem!important}.resource-body-section{background-color:#fff}.resource-body-section .container{padding:3rem 1.5rem 4rem!important;max-width:850px!important;margin:0 auto;text-align:left}.user-not-logged-in{background:#fafbfc;border:1px solid #e2e5ea;border-radius:8px;font-size:14px;font-weight:400;color:#5a6473;padding:1rem 1.5rem;box-shadow:none!important;margin-bottom:2rem!important}.user-not-logged-in a{color:#1a1d21!important;text-decoration:none;font-weight:600;transition:color .15s ease-out}.user-not-logged-in a:hover,.user-not-logged-in a:focus-visible{color:var(--first)!important}.user-not-logged-in a:focus-visible{outline:2px solid var(--first);outline-offset:2px;border-radius:2px}.resource-book-section{background:#fff;padding-top:4rem;padding-bottom:0}.resource-book-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem!important;text-align:left}.resource-book-section .resource-contact{line-height:1.6;font-size:1rem;color:#3d4654}.resource-book-section .resource-contact a{text-decoration:underline;color:#1a1d21;margin:0 .2rem;transition:color .15s ease-out}.resource-book-section .resource-contact a:hover{color:var(--first)!important}.resource-offer-section{background:#fff;padding-top:1rem}.resource-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.resource-divider{border:0;border-top:1px solid #e2e5ea;margin:2rem auto;max-width:850px;height:0;background:none}::ng-deep .body-quill{border-width:0!important;max-width:850px;display:block;margin-left:auto;margin-right:auto}::ng-deep .ql-snow .ql-editor.post-body-text blockquote{font-size:22px;line-height:1.45;font-weight:600;color:#1a1d21;border-left:4px solid var(--first);padding:6px 0 6px 22px;margin:8px 0}::ng-deep .ql-snow .ql-editor.post-body-text mark{background:linear-gradient(transparent 55%,color-mix(in srgb,var(--first) 22%,transparent) 55%);color:inherit;padding:0 2px}::ng-deep .p-textarea{border-radius:8px;border:1px solid #e2e5ea;font-size:1rem!important}.card{background-color:#fff;border-radius:12px}.comment-row{gap:1.5rem;padding-bottom:3rem;max-width:850px;display:block;margin-left:auto;margin-right:auto}.comment-label{font-size:14px!important;font-weight:600!important;letter-spacing:.04em;text-transform:uppercase;color:#5a6473}.response-row{max-width:850px;display:block;margin-left:auto;margin-right:auto;margin-top:2rem!important}@media(width<=768px){.resource-body-section .container{padding:2rem 1rem 3rem}.resource-book-section{padding-top:2rem!important}.resource-book-section .resource-contact{font-size:.9375rem!important}}\n",
206
+ ".jobs-banner-intro{white-space:pre-line}.jobs-banner-picture{display:contents}@media(width>=1200px){.resource-laptop-img.jobs-banner-art{max-width:min(600px,44vw)!important}}@media(width>=992px)and (width<1200px){.text-extension{max-width:500px!important}.image-content{margin-left:auto!important}.image-content .resource-math-img{display:none}.resource-laptop-img.jobs-banner-art{left:0!important;max-width:380px!important}}@media(width<=991px){.resource-laptop-img.jobs-banner-art{flex-shrink:1;min-width:0;max-width:min(600px,100%)!important}}\n"
207
+ ],
208
+ dependencies: [{
209
+ kind: "component",
210
+ type: ResourceTopBannerEditComponent,
211
+ selector: "pw-resource-top-banner-edit",
212
+ inputs: [
213
+ "blogPostTag",
214
+ "user",
215
+ "userLoggedIn"
216
+ ],
217
+ outputs: ["getUpdatedTag"]
218
+ }, {
219
+ kind: "pipe",
220
+ type: TranslocoPipe,
221
+ name: "transloco"
222
+ }],
223
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
224
+ });
225
+ }
226
+ };
227
+ i0.ɵɵngDeclareClassMetadata({
228
+ minVersion: "12.0.0",
229
+ version: "22.2.3",
230
+ ngImport: i0,
231
+ type: ResourceJobsTopBannerComponent,
232
+ decorators: [{
233
+ type: Component,
234
+ args: [{
235
+ selector: "pw-resource-jobs-top-banner",
236
+ changeDetection: ChangeDetectionStrategy.OnPush,
237
+ imports: [ResourceTopBannerEditComponent, TranslocoPipe],
238
+ template: "<section class=\"bg-white pricing-section\">\n <div class=\"resource-banner\">\n @if (isLoaded) {\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n <div class=\"text-content\">\n <div class=\"resource-heading\">\n <h1 class=\"resource-header-text mb-4\">\n <span class=\"d-inline-flex align-items-center gap-2 flex-wrap\">\n @if (blogPostTag?.title) {\n <span>{{ blogPostTag.title }}</span>\n } @else {\n <span>{{ 'Resource.Jobs.DefaultTitle' | transloco }}</span>\n }\n @if (canEditResourcesValue && blogPostTag) {\n <pw-resource-top-banner-edit\n [blogPostTag]=\"blogPostTag\"\n [user]=\"user\"\n [userLoggedIn]=\"userLoggedIn\"\n (getUpdatedTag)=\"getTags()\"\n ></pw-resource-top-banner-edit>\n }\n </span>\n </h1>\n </div>\n </div>\n <div class=\"text-extension mt-4\">\n @if (hasDescription) {\n <p class=\"intro jobs-banner-intro\">{{ blogPostTag.description }}</p>\n } @else {\n <p class=\"intro\">{{ 'Resource.Jobs.DefaultIntro' | transloco }}</p>\n }\n </div>\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <div class=\"resource-math-img\"></div>\n <picture class=\"jobs-banner-picture\">\n @if (!hasUploadedImage) {\n <source media=\"(prefers-reduced-motion: reduce)\" [srcset]=\"stillBannerImage\" />\n }\n <img class=\"resource-laptop-img dyn-img jobs-banner-art\"\n [src]=\"bannerImage\"\n [alt]=\"'Resource.Jobs.BannerAlt' | transloco\"\n width=\"600\"\n height=\"450\"\n loading=\"eager\"\n fetchpriority=\"high\" />\n </picture>\n </div>\n </div>\n }\n </div>\n</section>\n",
239
+ styles: [
240
+ "@charset \"UTF-8\";.cta-btn{display:inline-flex;align-items:center;gap:.6rem;background:var(--text-color, currentcolor);color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem;border:1px solid var(--text-color, currentcolor);box-shadow:none!important;transition:background .15s ease,color .15s ease,transform .15s ease}.cta-btn:hover{background-color:#fff!important;color:var(--text-color, currentcolor)!important;transform:translateY(-1px)}.cta-btn:focus-visible{outline:2px solid var(--text-color, currentcolor);outline-offset:3px}.cta-btn__icon{font-size:1.1rem;line-height:1}@media(width<=768px){.dyn-img{top:-3rem!important}}.text-extension{max-width:560px}.text-extension .intro{font-size:2rem;line-height:3rem;font-weight:400;color:var(--text-color, currentColor);margin-bottom:1rem}.text-extension .cta-buttons{margin-top:2rem!important}.text-extension .note{font-size:1.2rem;color:#000;margin-top:1rem;margin-left:3rem}.resource-banner{box-shadow:0 4px 32px -14px #40576d4d!important;position:relative;padding:5rem 0;color:#fff;background:linear-gradient(90deg,var(--first) 0%,#a8e1fb 100%);overflow:hidden;z-index:2}@media(width<=1200px){.resource-banner .container{padding:7rem 3rem 0rem!important}}.resource-banner:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:61%;background:#fff;clip-path:polygon(0 18%,100% 0%,100% 100%,0% 100%)}.resource-banner .container{position:relative;z-index:2}.resource-banner .text-content{max-width:500px;text-align:left;margin-bottom:75rem}.resource-banner .text-content h1{margin-bottom:1.5rem;line-height:1.2}.resource-banner .text-content .intro{font-size:1.2rem;margin:1rem 0;color:#000}.resource-banner .text-content .cta-btn{display:inline-block;background:#000;color:#fff;padding:1rem 2rem;border-radius:40px;font-weight:500;text-decoration:none;font-size:1.4rem}.resource-banner .text-content .cta-buttons{margin-top:2rem}.resource-banner .text-content .note{margin-top:1rem;margin-left:5.6rem;font-size:.9rem;color:#555}.resource-banner .resource-header-text{max-width:500px;font-weight:500;color:#fff!important;font-size:4.5rem!important}.resource-banner .blue-text{font-weight:100}@media(width<=991px){.resource-banner .text-content{margin-top:1.5rem;margin-bottom:0;text-align:center;max-width:360px}.resource-banner .text-content h1{margin-bottom:6.5rem!important}.resource-banner .resource-header-text{font-size:2.5rem!important}.resource-banner .cta-buttons{margin-top:0rem!important;justify-content:center!important}.resource-banner .note{margin-left:8rem!important}.resource-banner .image-content{position:relative;margin-bottom:3rem;height:230px}.resource-banner .image-content .floating-box{position:absolute;top:25px;left:3rem;transform:translate(-50%) rotate(-10deg);background:#fff;padding:.75rem 1rem;border-radius:20px;box-shadow:0 8px 30px #00000026;text-align:center;z-index:3;display:inline-block;width:auto}.resource-banner .image-content .floating-box img{width:24px;margin-bottom:.4rem}.resource-banner .image-content .floating-box .label{font-size:.75rem;color:#333;margin:0;line-height:1.2}.resource-banner .image-content .floating-box .count{font-size:1.2rem;font-weight:700;color:#000;margin-top:.25rem}.resource-banner .image-content .screen-img{max-width:280px;position:absolute;bottom:0;left:3rem;z-index:2;transform:rotate(-1deg);box-shadow:0 8px 15px #0003}.resource-banner .image-content .person-img{max-width:170px;width:100%;position:relative;z-index:3;left:13rem;top:-11.35rem}.resource-banner .image-content .resource-laptop-img{max-width:300px;width:100%;position:relative;z-index:3;margin-top:3rem;left:2%;height:auto!important;top:4rem}}@media(width>=991px){.resource-banner .text-content{position:absolute;width:760px}}.white-content{background:#fff;color:#000}.white-content .intro{font-size:1.2rem;color:#000}.white-content .note{font-size:.85rem;margin-top:1rem;color:#555}@media(width>=991px){.section-outer{padding-top:7rem!important}}@media(width>=768px)and (width<=991px){.resource-math-img{left:36%!important;top:22rem!important}}@media(width>=991px)and (width<=1200px){.text-extension{max-width:760px;position:absolute;margin-bottom:23rem!important}.resource-divider{top:63.5rem;position:absolute!important}.resource-banner{padding-bottom:90px!important}}@media(width>=1200px){.text-extension{max-width:500px;position:absolute;margin-bottom:31rem!important}.resource-laptop-img{width:100%;max-width:800px!important;max-height:800px!important;height:auto}}@media(width>=1200px){.resource-divider{top:59.5rem;position:absolute!important}.cta-tab{margin-bottom:5rem!important}}@media(width>=1200px){.image-content{margin-top:0;display:flex;align-items:flex-end;gap:1.5rem;height:0}.image-content .floating-box{position:absolute;top:25px;transform:translate(-50%) rotate(-10deg);background:#fff;padding:1rem;border-radius:20px;box-shadow:0 8px 30px #00000026;text-align:center;width:170px;z-index:3}.image-content .floating-box img{width:30px;margin-bottom:.5rem}.image-content .floating-box .label{font-size:.85rem;color:#333;margin:0}.image-content .floating-box .count{font-size:1.5rem;font-weight:700;color:#000;margin:.25rem 0 0}.image-content .screen-img{width:100%;position:absolute;bottom:5rem;left:3rem;z-index:2;transform:rotate(-1deg);box-shadow:0 8px 15px #0003;max-width:400px;margin-bottom:4rem}.image-content .person-img{max-width:800px;width:100%;position:relative;z-index:3;min-width:420px;margin-bottom:0;bottom:7rem;left:4rem}.image-content .resource-laptop-img{top:4rem;left:2rem;position:relative}.image-content .resource-math-img{bottom:9rem;left:61rem;position:relative;height:312px;margin-right:1rem;min-width:450px!important}}@media(width<=786px){.text-extension{position:absolute;margin:3rem;margin-top:11rem!important}}@media(width>=786px)and (width<=991px){.text-extension{position:absolute;margin:3rem;margin-top:24rem!important}}@media(width>=704px)and (width<=768px){.resource-laptop-img{top:18rem!important;right:30%!important;left:auto!important}}@media(width>=786px)and (width<=991px){.resource-laptop-img{max-width:250px!important;top:18rem!important;right:30%!important;left:auto!important}}@media(width>=991px)and (width<=1200px){.resource-laptop-img{top:7rem;left:3%;position:relative;width:100%;max-width:600px!important;height:auto}}@media(width>=786px)and (width<=1200px){.image-content{margin-top:0;display:flex;align-items:flex-end;gap:1.5rem;height:0}.image-content .floating-box{position:absolute;top:25px;transform:translate(-50%) rotate(-10deg);background:#fff;padding:1rem;border-radius:20px;box-shadow:0 8px 30px #00000026;text-align:center;width:170px;z-index:3}.image-content .floating-box img{width:30px;margin-bottom:.5rem}.image-content .floating-box .label{font-size:.85rem;color:#333;margin:0}.image-content .floating-box .count{font-size:1.5rem;font-weight:700;color:#000;margin:.25rem 0 0}.image-content .screen-img{width:100%;position:absolute;bottom:5rem;left:3rem;z-index:2;transform:rotate(-1deg);box-shadow:0 8px 15px #0003;max-width:400px;margin-bottom:4rem}.image-content .person-img{max-width:800px;width:100%;position:relative;z-index:3;min-width:420px;margin-bottom:0;bottom:7rem;left:4rem}.image-content .resource-math-img{height:243px!important;min-width:350px;bottom:9rem;left:34rem;position:relative;width:350px!important}}@media(width<=991px){.resource-banner{padding-bottom:15rem}}@media(width<=768px){.resource-math-img{top:18rem}.cta-btn{justify-content:center}.resource-divider{margin-top:49rem!important}.intro{font-size:1.7rem!important}}@media(width>=768px)and (width<=991px){.cta-btn{justify-content:center}.resource-divider{margin-top:36rem!important}}@media(width>=991px){.resource-banner{padding-top:768px;padding-bottom:42px;overflow:hidden}.section-fadeout{height:40px;width:100%;background:linear-gradient(to bottom,#fff0,#f8f9fa)}.resource-heading{width:700px!important}::ng-deep .vault-section{max-width:1580px!important;padding-left:48px!important;padding-top:130px!important}}@media(width<=991px){.billing-section{flex-direction:column!important;gap:3rem}.billing-section .billing-section1,.billing-section .billing-section2{width:90%!important}.billing-section .billing-section1{margin-left:1.5rem;margin-top:4rem}}@media(width>=768px)and (width<=1200px){.container{padding:0 6rem!important}.outer-section-fadeout{top:62rem!important}}@media(max-width:991px){.resource-banner .container{display:flex;flex-direction:column;align-items:flex-start;min-height:auto}.resource-banner .text-content,.resource-banner .text-extension,.resource-banner .image-content{position:static!important;left:auto;top:auto;max-width:100%;margin:0!important}.resource-banner .text-content{margin-bottom:0!important}.text-extension{margin-top:1rem!important}.resource-banner .image-content{width:100%;height:auto;align-self:center;margin-top:auto!important}.resource-banner .resource-laptop-img{position:static!important;max-width:260px;width:100%;height:auto!important}.resource-banner{padding:2rem 0 0rem!important}}@media(max-width:575px){.resource-banner:after{height:45%}}\n",
241
+ "@media(width<=768px){.dyn-img{top:6rem!important}}\n",
242
+ ".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",
243
+ "textarea{font-size:1rem!important}.resource-body-section{background-color:#fff}.resource-body-section .container{padding:3rem 1.5rem 4rem!important;max-width:850px!important;margin:0 auto;text-align:left}.user-not-logged-in{background:#fafbfc;border:1px solid #e2e5ea;border-radius:8px;font-size:14px;font-weight:400;color:#5a6473;padding:1rem 1.5rem;box-shadow:none!important;margin-bottom:2rem!important}.user-not-logged-in a{color:#1a1d21!important;text-decoration:none;font-weight:600;transition:color .15s ease-out}.user-not-logged-in a:hover,.user-not-logged-in a:focus-visible{color:var(--first)!important}.user-not-logged-in a:focus-visible{outline:2px solid var(--first);outline-offset:2px;border-radius:2px}.resource-book-section{background:#fff;padding-top:4rem;padding-bottom:0}.resource-book-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem!important;text-align:left}.resource-book-section .resource-contact{line-height:1.6;font-size:1rem;color:#3d4654}.resource-book-section .resource-contact a{text-decoration:underline;color:#1a1d21;margin:0 .2rem;transition:color .15s ease-out}.resource-book-section .resource-contact a:hover{color:var(--first)!important}.resource-offer-section{background:#fff;padding-top:1rem}.resource-offer-section .container{max-width:850px;margin:0 auto;padding:0 1.5rem;text-align:left}.resource-divider{border:0;border-top:1px solid #e2e5ea;margin:2rem auto;max-width:850px;height:0;background:none}::ng-deep .body-quill{border-width:0!important;max-width:850px;display:block;margin-left:auto;margin-right:auto}::ng-deep .ql-snow .ql-editor.post-body-text blockquote{font-size:22px;line-height:1.45;font-weight:600;color:#1a1d21;border-left:4px solid var(--first);padding:6px 0 6px 22px;margin:8px 0}::ng-deep .ql-snow .ql-editor.post-body-text mark{background:linear-gradient(transparent 55%,color-mix(in srgb,var(--first) 22%,transparent) 55%);color:inherit;padding:0 2px}::ng-deep .p-textarea{border-radius:8px;border:1px solid #e2e5ea;font-size:1rem!important}.card{background-color:#fff;border-radius:12px}.comment-row{gap:1.5rem;padding-bottom:3rem;max-width:850px;display:block;margin-left:auto;margin-right:auto}.comment-label{font-size:14px!important;font-weight:600!important;letter-spacing:.04em;text-transform:uppercase;color:#5a6473}.response-row{max-width:850px;display:block;margin-left:auto;margin-right:auto;margin-top:2rem!important}@media(width<=768px){.resource-body-section .container{padding:2rem 1rem 3rem}.resource-book-section{padding-top:2rem!important}.resource-book-section .resource-contact{font-size:.9375rem!important}}\n",
244
+ ".jobs-banner-intro{white-space:pre-line}.jobs-banner-picture{display:contents}@media(width>=1200px){.resource-laptop-img.jobs-banner-art{max-width:min(600px,44vw)!important}}@media(width>=992px)and (width<1200px){.text-extension{max-width:500px!important}.image-content{margin-left:auto!important}.image-content .resource-math-img{display:none}.resource-laptop-img.jobs-banner-art{left:0!important;max-width:380px!important}}@media(width<=991px){.resource-laptop-img.jobs-banner-art{flex-shrink:1;min-width:0;max-width:min(600px,100%)!important}}\n"
245
+ ]
246
+ }]
247
+ }]
248
+ });
249
+ var ResourceJobsComponent = class ResourceJobsComponent extends BaseResourceComponent {
250
+ getResourceType() {
251
+ return "Jobs";
252
+ }
253
+ getPosts() {}
254
+ static {
255
+ this.ɵfac = i0.ɵɵngDeclareFactory({
256
+ minVersion: "12.0.0",
257
+ version: "22.2.3",
258
+ ngImport: i0,
259
+ type: ResourceJobsComponent,
260
+ deps: null,
261
+ target: i0.ɵɵFactoryTarget.Component
262
+ });
263
+ }
264
+ static {
265
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
266
+ minVersion: "17.0.0",
267
+ version: "22.2.3",
268
+ type: ResourceJobsComponent,
269
+ isStandalone: true,
270
+ selector: "pw-resource-jobs",
271
+ usesInheritance: true,
272
+ ngImport: i0,
273
+ template: "<pw-resource-header [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-resource-header>\n\n<pw-resource-jobs-top-banner />\n\n@if (blogPostTag?.tag_category_id) {\n <pw-resource-job-cards [categoryId]=\"blogPostTag.tag_category_id\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\" />\n}\n\n<pw-trial-4-contact-us [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-trial-4-contact-us>\n",
274
+ dependencies: [
275
+ {
276
+ kind: "component",
277
+ type: ResourceHeaderComponent,
278
+ selector: "pw-resource-header",
279
+ inputs: ["user", "userLoggedIn"]
280
+ },
281
+ {
282
+ kind: "component",
283
+ type: ResourceJobsTopBannerComponent,
284
+ selector: "pw-resource-jobs-top-banner"
285
+ },
286
+ {
287
+ kind: "component",
288
+ type: ResourceJobCardsComponent,
289
+ selector: "pw-resource-job-cards",
290
+ inputs: [
291
+ "categoryId",
292
+ "user",
293
+ "userLoggedIn"
294
+ ]
295
+ },
296
+ {
297
+ kind: "component",
298
+ type: Trial4ContactUsComponent,
299
+ selector: "pw-trial-4-contact-us",
300
+ inputs: [
301
+ "subscriptionId",
302
+ "sourceId",
303
+ "masterSubscriptionId",
304
+ "experimentName",
305
+ "microserviceName",
306
+ "shardName",
307
+ "user",
308
+ "userLoggedIn"
309
+ ]
310
+ }
311
+ ],
312
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
313
+ });
314
+ }
315
+ };
316
+ i0.ɵɵngDeclareClassMetadata({
317
+ minVersion: "12.0.0",
318
+ version: "22.2.3",
319
+ ngImport: i0,
320
+ type: ResourceJobsComponent,
321
+ decorators: [{
322
+ type: Component,
323
+ args: [{
324
+ selector: "pw-resource-jobs",
325
+ changeDetection: ChangeDetectionStrategy.OnPush,
326
+ imports: [
327
+ ResourceHeaderComponent,
328
+ ResourceJobsTopBannerComponent,
329
+ ResourceJobCardsComponent,
330
+ Trial4ContactUsComponent
331
+ ],
332
+ template: "<pw-resource-header [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-resource-header>\n\n<pw-resource-jobs-top-banner />\n\n@if (blogPostTag?.tag_category_id) {\n <pw-resource-job-cards [categoryId]=\"blogPostTag.tag_category_id\" [user]=\"user\" [userLoggedIn]=\"userLoggedIn\" />\n}\n\n<pw-trial-4-contact-us [user]=\"user\" [userLoggedIn]=\"userLoggedIn\"></pw-trial-4-contact-us>\n"
333
+ }]
334
+ }]
335
+ });
336
+ const routes = [{
337
+ path: "",
338
+ component: ResourceJobsComponent,
339
+ data: {
340
+ title: "Resources - Careers",
341
+ permission: "Pages.Blog",
342
+ preload: false
343
+ }
344
+ }];
345
+ var ResourceJobsModule = class ResourceJobsModule {
346
+ static {
347
+ this.ɵfac = i0.ɵɵngDeclareFactory({
348
+ minVersion: "12.0.0",
349
+ version: "22.2.3",
350
+ ngImport: i0,
351
+ type: ResourceJobsModule,
352
+ deps: [],
353
+ target: i0.ɵɵFactoryTarget.NgModule
354
+ });
355
+ }
356
+ static {
357
+ this.ɵmod = i0.ɵɵngDeclareNgModule({
358
+ minVersion: "14.0.0",
359
+ version: "22.2.3",
360
+ ngImport: i0,
361
+ type: ResourceJobsModule,
362
+ imports: [
363
+ ResourceSharedModule,
364
+ i1.RouterModule,
365
+ ResourceJobsComponent
366
+ ]
367
+ });
368
+ }
369
+ static {
370
+ this.ɵinj = i0.ɵɵngDeclareInjector({
371
+ minVersion: "12.0.0",
372
+ version: "22.2.3",
373
+ ngImport: i0,
374
+ type: ResourceJobsModule,
375
+ imports: [
376
+ ResourceSharedModule,
377
+ RouterModule.forChild(routes),
378
+ ResourceJobsComponent
379
+ ]
380
+ });
381
+ }
382
+ };
383
+ i0.ɵɵngDeclareClassMetadata({
384
+ minVersion: "12.0.0",
385
+ version: "22.2.3",
386
+ ngImport: i0,
387
+ type: ResourceJobsModule,
388
+ decorators: [{
389
+ type: NgModule,
390
+ args: [{ imports: [
391
+ ResourceSharedModule,
392
+ RouterModule.forChild(routes),
393
+ ResourceJobsComponent
394
+ ] }]
395
+ }]
396
+ });
397
+ export { ResourceJobsModule };
398
+
399
+ //# sourceMappingURL=posiwise-resource-module-resource-jobs.module-B53AOs8y.mjs.map