@posiwise/resource-contact-us 0.0.3 → 0.0.4
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.
- package/esm2022/index.mjs +5 -6
- package/esm2022/lib/resource-contact-us/resource-contact-us.component.mjs +511 -0
- package/esm2022/lib/resource-contact-us/shared-contact-us.module.mjs +28 -0
- package/esm2022/lib/resource-header/resource-header.component.mjs +3 -4
- package/esm2022/lib/resource-header/shared-header.module.mjs +34 -0
- package/fesm2022/{posiwise-resource-contact-us-edit-navbar-modal.component-C59Q3971.mjs → posiwise-resource-contact-us-edit-navbar-modal.component-jSKqyC6g.mjs} +4 -4
- package/fesm2022/{posiwise-resource-contact-us-edit-navbar-modal.component-C59Q3971.mjs.map → posiwise-resource-contact-us-edit-navbar-modal.component-jSKqyC6g.mjs.map} +1 -1
- package/fesm2022/posiwise-resource-contact-us.mjs +397 -813
- package/fesm2022/posiwise-resource-contact-us.mjs.map +1 -1
- package/index.d.ts +4 -5
- package/{resource-contact-us → lib/resource-contact-us}/resource-contact-us.component.d.ts +18 -5
- package/lib/resource-contact-us/shared-contact-us.module.d.ts +17 -0
- package/lib/resource-header/shared-header.module.d.ts +15 -0
- package/package.json +1 -1
- package/esm2022/lib/edit-footer-links-modal/edit-footer-links-modal.component.mjs +0 -198
- package/esm2022/lib/edit-questions-modal/edit-questions-modal.component.mjs +0 -156
- package/esm2022/lib/resource-header/resource-header.module.mjs +0 -63
- package/esm2022/resource-contact-us/resource-contact-us.component.mjs +0 -504
- package/esm2022/resource-contact-us/resource-contact-us.module.mjs +0 -79
- package/lib/edit-footer-links-modal/edit-footer-links-modal.component.d.ts +0 -22
- package/lib/edit-questions-modal/edit-questions-modal.component.d.ts +0 -21
- package/lib/resource-header/resource-header.module.d.ts +0 -21
- package/resource-contact-us/resource-contact-us.module.d.ts +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posiwise-resource-contact-us.mjs","sources":["../../../../libs/resource-contact-us/src/resource-contact-us/resource-contact-us.component.ts","../../../../libs/resource-contact-us/src/resource-contact-us/resource-contact-us.component.html","../../../../libs/resource-contact-us/src/resource-contact-us/resource-contact-us.module.ts","../../../../libs/resource-contact-us/src/lib/image-cropper/image-cropper.component.ts","../../../../libs/resource-contact-us/src/lib/image-cropper/image-cropper.component.html","../../../../libs/resource-contact-us/src/lib/custom-uploader/custom-uploader.component.ts","../../../../libs/resource-contact-us/src/lib/custom-uploader/custom-uploader.component.html","../../../../libs/resource-contact-us/src/lib/image-cropper/profile-image-cropper.module.ts","../../../../libs/resource-contact-us/src/lib/resource-header/resource-header.component.ts","../../../../libs/resource-contact-us/src/lib/resource-header/resource-header.component.html","../../../../libs/resource-contact-us/src/lib/resource-header/resource-header.module.ts","../../../../libs/resource-contact-us/src/lib/field-error-display/field-error-display.component.ts","../../../../libs/resource-contact-us/src/lib/field-error-display/field-error-display.component.html","../../../../libs/resource-contact-us/src/lib/field-error-display/field-error-display.module.ts","../../../../libs/resource-contact-us/src/lib/edit-footer-links-modal/edit-footer-links-modal.component.ts","../../../../libs/resource-contact-us/src/lib/edit-questions-modal/edit-questions-modal.component.ts","../../../../libs/resource-contact-us/src/posiwise-resource-contact-us.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AbTestService, AuthService, ValidationService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { CustomUploaderComponent } from '@posiwise/utils';\nimport { CrmService } from '@posiwise/smart-crm-shared';\n\nimport { StatusCodes } from 'http-status-codes';\nimport Swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ResourceModalContext } from '../lib/shared/resource-modal.interface';\n\n@Component({\n selector: 'pw-trial-4-contact-us',\n templateUrl: './resource-contact-us.component.html',\n styleUrls: ['./resource-contact-us.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Trial4ContactUsComponent\n extends AppBaseComponent\n implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n @ViewChild('footerSection', { static: true }) footerSection!: ElementRef;\n @ViewChild('bookMeeting', { static: true }) content: TemplateRef<ResourceModalContext>;\n @ViewChild('logoModal') logoModal: TemplateRef<CustomUploaderComponent>;\n @ViewChild('logoUploader') logoUploader: CustomUploaderComponent;\n @ViewChild('hubspotEditModal') hubspotEditModal: TemplateRef<ResourceModalContext>;\n @ViewChild('socialEditModal') socialEditModal: TemplateRef<CustomUploaderComponent>;\n\n editingQuestions = [];\n isHubspotReady: boolean;\n\n isFooterVisible = false;\n private observer?: IntersectionObserver;\n\n async openQuestionsEditModal(): Promise<void> {\n this.editingQuestions = JSON.parse(JSON.stringify(this.questions ?? []));\n\n try {\n // Dynamically import EditQuestionsModalComponent (includes DragDropModule)\n // This only loads when the edit modal is opened (user is logged in with edit permissions)\n // Reduces bundle size for landing pages where users aren't logged in\n const { EditQuestionsModalComponent } = await import('../lib/edit-questions-modal/edit-questions-modal.component');\n\n const modalRef = this.modalService.open(EditQuestionsModalComponent, {\n size: 'lg',\n centered: true,\n windowClass: 'modal-holder'\n });\n\n modalRef.componentInstance.editingQuestions = this.editingQuestions;\n modalRef.componentInstance.save.subscribe((updatedQuestions) => {\n this.saveQuestions(modalRef, updatedQuestions);\n });\n modalRef.componentInstance.close.subscribe(() => {\n modalRef.close();\n });\n } catch (error) {\n console.error('Failed to load edit questions modal:', error);\n this.toast.error('Failed to open edit modal. Please try again.');\n }\n }\n\n editingYoutubeUrl: string;\n editingLinkedInUrl: string;\n editingCompanyName: string;\n\n form: UntypedFormGroup;\n\n recaptcha = null;\n\n previewData;\n\n @Input() subscriptionId = this.appConfig.crm.subscription_id;\n @Input() sourceId = this.appConfig.crm.source_id;\n @Input() masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n @Input() experimentName;\n @Input() microserviceName;\n @Input() shardName;\n @Input() user: User;\n\n canEditResourcesValue = false;\n @Input() userLoggedIn: boolean;\n\n id;\n\n logo = this.appConfig?.company?.logos?.main_contrast?.url;\n trialBgImage2 = this.appConfig?.signup_config.trial?.image_bg2?.url;\n tosId = this.appConfig?.main_tos_id;\n description = this.appConfig.company.description;\n email = this.appConfig.company.email;\n companyName = this.appConfig.company.name;\n street = this.appConfig.company.street;\n questions = this.appConfig?.pages_config?.contact_us?.questions;\n hubspot = this.appConfig?.pages_config?.contact_us?.hubspot;\n footerLinks = this.appConfig?.pages_config?.footer_links?.items;\n\n footerLinksData = this.appConfig?.pages_config?.footer_links;\n\n youtubeUrl = this.appConfig.social?.youtube_url;\n linkedInUrl = this.appConfig.social?.linkedin_url;\n domainId = this.appConfig.domain_id;\n\n editingEmail = this.email;\n isEditingEmail = false;\n\n editingHubspotHtml: string;\n editingHubspotId: string;\n captchaKeyV2: string;\n hubspotHtml;\n\n abTests;\n\n submitted = false;\n isCaptchaVerified = false;\n isEmailValid = true;\n isEditingStreet = false;\n\n psaOptions;\n\n question;\n\n editingFooterLinks = {\n items: []\n };\n editingStreet: string;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly authService: AuthService,\n private readonly crmService: CrmService,\n private readonly sanitizer: DomSanitizer,\n private readonly adminService: AdminService,\n injector: Injector,\n private readonly abTestService: AbTestService,\n private readonly modalService: NgbModal,\n private readonly cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private readonly document: Document\n ) {\n super(injector);\n this.captchaKeyV2 = this.appConfig.integrations.captcha_key_V2;\n this.contactUsForm();\n }\n\n ngOnInit() {\n setTimeout(() => (this.isHubspotReady = true), 2000);\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.id = data?.subscriptionId;\n });\n }\n this.previewData = {\n url: this.logo,\n name: 'logo_main_contrast.png'\n };\n this.editingStreet = this.street;\n if (Array.isArray(this.appConfig.pages_config?.ab_tests)) {\n this.abTests = this.appConfig.pages_config.ab_tests.find(\n test => test.description === 'contact-us'\n );\n this.microserviceName = this.abTests?.microservice_name;\n this.experimentName = this.abTests?.experiment_name;\n this.shardName = this.abTests?.db_shard;\n }\n\n const footerItem = this.getFooterHubspotForm();\n if (footerItem?.div) {\n // NOSONAR: Trusted HTML content is handled safely here\n this.hubspotHtml = this.sanitizer.bypassSecurityTrustHtml(footerItem.div); // NOSONAR\n }\n this.editingQuestions = this.questions;\n this.question = this.questions?.[0]?.question;\n this.psaOptions = [\n { label: 'Select PSA', value: '' },\n ...(this.questions?.[0]?.options ?? [])\n .filter(q => q.option?.trim())\n .map(q => ({\n label: q.option,\n value: q.option\n }))\n ];\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['user'] || changes['userLoggedIn']) {\n if (this.userLoggedIn && this.user) {\n this.updateCanEditResourcesValue();\n }\n }\n }\n\n openLogoEditModal(): void {\n this.modalService.open(this.logoModal, {\n centered: true,\n size: 'md'\n });\n }\n\n onSaveFile(event): void {\n const formData = new FormData();\n const data = { subscription_id: this.subscriptionId };\n\n if (event.file instanceof File) {\n data[event.name] = event.file;\n } else if (event.file === null) {\n data[`remove_${event.name}`] = true;\n }\n\n for (const key in data) {\n formData.append(key, data[key]);\n }\n\n this.adminService.updateDomainConfig(this.domainId, formData).subscribe(() => {\n if (event.file) {\n this.logo = URL.createObjectURL(event.file);\n this.modalService.dismissAll();\n }\n this.toast.success(event.file ? 'Logo updated' : 'Logo removed');\n });\n }\n\n saveQuestions(modal, updatedQuestions?: any[]): void {\n const questionsToSave = updatedQuestions || this.editingQuestions;\n const updateData = {\n contact_us: {\n ...this.appConfig.pages_config?.contact_us,\n questions: questionsToSave\n },\n subscription_id: this.id\n };\n\n this.adminService.updateDomainConfig(this.domainId, updateData).subscribe(() => {\n this.questions = questionsToSave;\n this.toast.success('Questions updated');\n this.question = questionsToSave?.[0]?.question;\n if (questionsToSave?.[0]?.options?.length > 0) {\n this.psaOptions = [\n { label: 'Select PSA', value: '' },\n ...(questionsToSave?.[0]?.options ?? [])\n .filter(q => q.option?.trim())\n .map(q => ({\n label: q.option,\n value: q.option\n }))\n ];\n } else {\n this.psaOptions = [];\n }\n\n modal.close();\n });\n }\n\n\n openSocialEditModal(): void {\n this.editingYoutubeUrl = this.youtubeUrl;\n this.editingLinkedInUrl = this.linkedInUrl;\n this.editingCompanyName = this.companyName;\n\n this.modalService.open(this.socialEditModal, { centered: true, size: 'lg' });\n }\n\n saveSocialLinks(modal): void {\n const updateData = {\n youtube_url: this.editingYoutubeUrl,\n linkedin_url: this.editingLinkedInUrl,\n company_name: this.editingCompanyName,\n subscription_id: this.id\n };\n\n this.adminService.updateDomainConfig(this.domainId, updateData).subscribe(() => {\n this.youtubeUrl = this.editingYoutubeUrl;\n this.linkedInUrl = this.editingLinkedInUrl;\n this.companyName = this.editingCompanyName;\n this.toast.success('Social links and company name updated');\n modal.close();\n });\n }\n\n hasValidOptions(): boolean {\n return this.questions?.[0]?.options?.some(opt => opt.option?.trim());\n }\n\n ngAfterViewInit() {\n this.watchIframeHeightChange();\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n this.isFooterVisible = true;\n this.cdr.detectChanges();\n this.observer?.disconnect();\n }\n },\n { threshold: 0.1 }\n );\n\n this.observer.observe(this.footerSection.nativeElement);\n }\n\n async openEditFooterLinksModal(): Promise<void> {\n this.footerLinksData = this.footerLinksData ?? {};\n this.footerLinksData.items = this.footerLinksData.items ?? [];\n this.editingFooterLinks = JSON.parse(JSON.stringify(this.footerLinksData));\n\n try {\n // Dynamically import EditFooterLinksModalComponent (includes DragDropModule)\n // This only loads when the edit modal is opened (user is logged in with edit permissions)\n // Reduces bundle size for landing pages where users aren't logged in\n const { EditFooterLinksModalComponent } = await import('../lib/edit-footer-links-modal/edit-footer-links-modal.component');\n\n const modalRef = this.modalService.open(EditFooterLinksModalComponent, {\n size: 'lg',\n centered: true,\n windowClass: 'modal-holder'\n });\n\n modalRef.componentInstance.editingFooterLinks = this.editingFooterLinks;\n modalRef.componentInstance.save.subscribe((updatedFooterLinks) => {\n this.saveFooterLinks(modalRef, updatedFooterLinks);\n });\n modalRef.componentInstance.close.subscribe(() => {\n modalRef.close();\n });\n } catch (error) {\n console.error('Failed to load edit footer links modal:', error);\n this.toast.error('Failed to open edit modal. Please try again.');\n }\n }\n\n private watchIframeHeightChange() {\n const iframe = this.document.querySelector('.hubspot-container');\n if (!iframe) return;\n const interval = setInterval(() => {\n const newHeight = iframe['offsetHeight'];\n if (newHeight === 250) {\n clearInterval(interval);\n this.callAbTestFinish();\n }\n }, 300);\n }\n\n // New method to handle Hubspot content loading\n onHubspotLoad(event: Event) {\n const container = event.target as HTMLDivElement;\n container.classList.add('content-loaded');\n\n // Optional: Trigger layout recalculation\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n }\n\n private callAbTestFinish() {\n if (this.experimentName && this.microserviceName) {\n this.abTestService\n .finishABExperiment(this.experimentName, this.microserviceName)\n .subscribe(() => {\n this.modalService.open(this.content, {\n centered: true,\n windowClass: 'modal-holder'\n });\n });\n }\n }\n\n contactUsForm(): void {\n this.form = this.fb.group({\n first_name: ['', Validators.required],\n last_name: [''],\n company: [''],\n psa: [''],\n enquiry: ['', Validators.required],\n email: ['', Validators.required]\n });\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.form.valid) {\n this.isCaptchaVerified = true;\n this.submitted = false;\n }\n }\n\n handleSuccess(token: string) {\n if (token) {\n this.authService.validateReCaptcha(token).subscribe((isSuccess: boolean) => {\n if (isSuccess && this.form.valid) {\n const data = { ...this.form.getRawValue() };\n const formattedEnquiry = `${data.enquiry}; Question: ${this.question}; Answer: ${data.psa}`;\n const postData = {\n first_name: `${data.first_name}`,\n last_name: `${data.first_name}`,\n company: `${data.first_name}`,\n email: `${data.email}`,\n enquiry: this.psaOptions.length ? formattedEnquiry : `${data.enquiry}`,\n psa: data.psa,\n subscription_id: this.subscriptionId,\n crm_source_id: this.sourceId,\n master_subscription_id: this.masterSubscriptionId,\n notify_user: false,\n is_manual: false\n };\n\n this.crmService.postCrmLead(this.subscriptionId, postData).subscribe(resp => {\n // example of snippet to close the experiment and track in GA\n if (resp?.status === StatusCodes.OK) {\n this.googleAnalyticsService.sendEvent(\n 'new-lead-registration', // category, eg: videos\n 'subscribe-success', // action, eg: Play\n 'coming-soon-three', // label, eg: Chappy\n 1 // value, eg: 10\n );\n if (this.experimentName && this.microserviceName) {\n this.abTestService\n .finishABExperiment(this.experimentName, this.microserviceName)\n .subscribe(() => {\n this.modalService.open(this.content, {\n centered: true,\n windowClass: 'modal-holder'\n });\n });\n } else {\n Swal.fire(resp.message);\n }\n }\n this.form.reset();\n this.isCaptchaVerified = false;\n });\n }\n });\n }\n }\n\n scrollToTop() {\n this.document.documentElement.scrollTop = 0;\n }\n\n getFooterHubspotForm() {\n if (!this.hubspot?.length) {\n return null;\n }\n\n return this.hubspot.find(item => item.position === 'footer') ?? null;\n }\n\n navigateToBookMeeting() {\n const bookDemoUrl =\n this.appConfig?.signup_config?.trial?.book_demo_url ??\n 'https://calendly.com/cloudolive';\n window.open(bookDemoUrl, '_blank', 'noreferrer noopener');\n }\n\n validateEmail() {\n const email = this.form.get('email').value;\n if (email) {\n this.isEmailValid = ValidationService.email(email);\n } else {\n this.isEmailValid = true;\n }\n }\n\n saveFooterLinks(modal, updatedFooterLinks?: any): void {\n const footerLinksToSave = updatedFooterLinks || this.editingFooterLinks;\n const updatedConfig = {\n footer_links: footerLinksToSave,\n subscription_id: this.id\n };\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)\n .subscribe(() => {\n this.toast.success('Footer links updated');\n this.footerLinks = [...footerLinksToSave.items];\n this.footerLinksData = { ...footerLinksToSave };\n modal.close();\n });\n }\n\n saveEmail(): void {\n this.email = this.editingEmail;\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, {\n company_email: this.editingEmail,\n subscription_id: this.id\n })\n .subscribe(() => {\n this.toast.success('Email updated');\n this.isEditingEmail = false;\n });\n }\n\n saveStreet(): void {\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, {\n company_address: this.editingStreet,\n subscription_id: this.id\n })\n .subscribe(() => {\n this.toast.success('Street updated');\n this.street = this.editingStreet;\n this.isEditingStreet = false;\n });\n }\n\n cancelStreet(): void {\n this.editingStreet = this.street;\n this.isEditingStreet = false;\n }\n\n openHubspotEditModal(footerItem): void {\n this.editingHubspotHtml = footerItem.div;\n this.editingHubspotId = footerItem.id;\n this.modalService.open(this.hubspotEditModal, { centered: true, size: 'lg' });\n }\n\n saveHubspotHtml(modal): void {\n const updatedConfig = {\n contact_us: {\n ...this.appConfig?.pages_config?.contact_us,\n hubspot: [\n {\n id: '7423639',\n position: 'footer',\n div: this.editingHubspotHtml\n }\n ]\n },\n subscription_id: this.id\n };\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)\n .subscribe(() => {\n // NOSONAR: Trusted HTML content is handled safely here\n this.hubspotHtml = this.sanitizer.bypassSecurityTrustHtml(this.editingHubspotHtml); // NOSONAR\n this.toast.success('Hubspot Embed updated');\n modal.close();\n });\n }\n private updateCanEditResourcesValue(): void {\n this.canEditResourcesValue = HelperService.canEditResources(\n this.user,\n this.userLoggedIn,\n this.permissionService\n );\n }\n\n canEditResources(): boolean {\n return this.canEditResourcesValue;\n }\n\n override ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n}\n","<section #footerSection class=\"bg-black text-white py-5 footer-section\">\n <div class=\"container\" *ngIf=\"isFooterVisible\">\n <div class=\"row\">\n\n <!-- LEFT COLUMN -->\n <div class=\"col-md-6 mb-4 d-flex flex-column justify-content-between\" [ngClass]=\"{ 'site-column': getFooterHubspotForm() }\">\n <div>\n <h3 class=\"mb-4 d-flex align-items-center\">\n <span class=\"me-2 text-white\">Site Map:</span>\n <i *ngIf=\"canEditResourcesValue\" class=\"fa fa-edit in-page-edit-icon cursor-pointer text-white ms-3\" (click)=\"openEditFooterLinksModal()\" (keydown.enter)=\"openEditFooterLinksModal()\" (keydown.space)=\"openEditFooterLinksModal()\" ngbTooltip=\"Edit Footer Links\"></i>\n </h3>\n <ul class=\"mt-4\">\n <li routerLink=\"/\"\n class=\"cursor-pointer user-info-label link-label\"> Home </li>\n <li *ngFor=\"let link of footerLinks\" [routerLink]=\"link?.path\"\n class=\"cursor-pointer user-info-label link-label mt-4\"><span *ngIf=\"link?.title\">{{link?.title}}</span> </li>\n <li routerLink=\"/login\"\n class=\"cursor-pointer user-info-label mt-4 link-label\"> Log in </li>\n <li [routerLink]=\"'/privacy-and-tos/' + tosId\"\n class=\"cursor-pointer user-info-label mt-4 link-label\"> Privacy statement </li>\n </ul>\n <p class=\"address-section email-section mb-4\">\n <span class=\"user-info-label\">Email: </span>\n <ng-container *ngIf=\"!isEditingEmail; else editEmail\">\n <span class=\"user-info\">{{ email }}</span>\n <i *ngIf=\"canEditResourcesValue\" class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer ms-3\" (click)=\"isEditingEmail = true\" (keydown.enter)=\"isEditingEmail = true\" (keydown.space)=\"isEditingEmail = true\"></i>\n </ng-container>\n\n <ng-template #editEmail>\n <input\n class=\"form-control d-inline w-auto\"\n [(ngModel)]=\"editingEmail\"\n />\n <button class=\"btn btn-sm btn-primary ms-2\" (click)=\"saveEmail()\">Save</button>\n <button class=\"btn btn-sm btn-secondary ms-2\" (click)=\"isEditingEmail = false\">Cancel</button>\n </ng-template>\n </p>\n <span class=\"email-section mt-3 address-text\">\n <span class=\"user-info-label\">\n Address:\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer ms-2 text-white\"\n title=\"Edit Address\"\n (click)=\"isEditingStreet = true\"\n (keydown.enter)=\"isEditingStreet = true\"\n (keydown.space)=\"isEditingStreet = true\"></i>\n </span><br/>\n\n <ng-container *ngIf=\"!isEditingStreet; else editStreetBlock\">\n <span class=\"address-text user-info\">{{ street }}</span>\n </ng-container>\n\n <ng-template #editStreetBlock>\n <div class=\"d-flex align-items-center mt-3\">\n <input class=\"form-control form-control-sm\" [(ngModel)]=\"editingStreet\" />\n <button class=\"btn btn-sm btn-primary ms-2\" (click)=\"saveStreet()\">Save</button>\n <button class=\"btn btn-sm btn-secondary ms-2\" (click)=\"cancelStreet()\">Cancel</button>\n </div>\n </ng-template>\n\n </span>\n\n </div>\n <div class=\"d-flex\">\n <img [src]=\"logo\"\n alt=\"Company logo\"\n class=\"img-fluid mt-4 logo-image cursor-pointer\"\n width=\"160\"\n height=\"35\"\n (click)=\"scrollToTop()\"\n (keydown.enter)=\"scrollToTop()\"\n (keydown.space)=\"scrollToTop()\"\n title=\"Click to go to top of page\" />\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon fa-sm ms-3 cursor-pointer text-white align-self-center mt-3\"\n (click)=\"openLogoEditModal()\"\n (keydown.enter)=\"openLogoEditModal()\"\n (keydown.space)=\"openLogoEditModal()\"\n title=\"Edit Logo\"></i>\n </div>\n </div>\n\n <!-- RIGHT COLUMN -->\n <div class=\"col-md-6\" *ngIf=\"isFooterVisible\">\n <ng-container *ngIf=\"getFooterHubspotForm() as footerItem; else defaultForm\">\n <div class=\"d-flex\">\n <div\n *ngIf=\"isHubspotReady\"\n class=\"hubspot-container w-100 content-loaded\"\n [innerHTML]=\"hubspotHtml\"\n (load)=\"onHubspotLoad($event)\">\n </div>\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer\"\n (click)=\"openHubspotEditModal(footerItem)\"\n (keydown.enter)=\"openHubspotEditModal(footerItem)\"\n (keydown.space)=\"openHubspotEditModal(footerItem)\"\n title=\"Edit Hubspot Embed\"></i>\n </div>\n </ng-container>\n\n <ng-template #defaultForm>\n <div class=\"d-flex\">\n <h3 class=\"text-white mb-4\"> <span class=\"text-white\">Get in touch:</span></h3>\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer ms-3 mt-2\"\n (click)=\"openQuestionsEditModal()\"\n (keydown.enter)=\"openQuestionsEditModal()\"\n (keydown.space)=\"openQuestionsEditModal()\"\n title=\"Edit Questions\"></i>\n </div>\n <div class=\"contact-form\">\n <form [formGroup]=\"form\">\n <div class=\"mb-3\">\n <div class=\"email\">\n <div class=\"form-field\">\n <label for=\"email\">Email:</label>\n <div class=\"w-100\">\n <input type=\"text\"\n class=\"mb-1\"\n id=\"email\"\n formControlName=\"email\" />\n <pw-field-error-display [displayError]=\"\n !form.get('email').valid && (form.get('email').touched || submitted)\n \"\n errorMsg=\"Email is required\">\n </pw-field-error-display>\n </div>\n </div>\n <div class=\"form-field\">\n <label for=\"first_name\">First name:</label>\n <div class=\"w-100\">\n <input input type=\"text\"\n id=\"first_name\"\n formControlName=\"first_name\" />\n <pw-field-error-display [displayError]=\"\n !form.get('first_name').valid && (form.get('first_name').touched || submitted)\n \"\n errorMsg=\"First name is required\">\n </pw-field-error-display>\n </div>\n </div>\n <div class=\"form-field\">\n <label for=\"last_name\">Last name:</label>\n <input type=\"text\"\n id=\"last_name\"\n formControlName=\"last_name\" />\n </div>\n <div class=\"form-field\">\n <label for=\"company\">Company:</label>\n <input type=\"text\"\n id=\"company\"\n formControlName=\"company\" />\n </div>\n <div class=\"form-field\" *ngIf=\"hasValidOptions()\">\n <label for=\"psa\" class=\"select-label\">{{question}}</label>\n <p-dropdown\n formControlName=\"psa\"\n [options]=\"psaOptions\"\n [placeholder]=\"'Select PSA'\"\n styleClass=\"input-select\">\n </p-dropdown>\n </div>\n <div class=\"form-field\">\n <label for=\"enquiry\" class=\"select-label\">How can we help you?</label>\n <div class=\"enquiry-field\">\n <textarea id=\"enquiry\" formControlName=\"enquiry\" class=\"\">\n </textarea>\n <pw-field-error-display [displayError]=\"\n !form.get('enquiry').valid && (form.get('enquiry').touched || submitted)\n \"\n errorMsg=\"Enquiry is required\">\n </pw-field-error-display>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-end\">\n <div class=\"captcha-wrapper-container\"\n *ngIf=\"isCaptchaVerified\">\n <ngx-recaptcha2 [ngModelOptions]=\"{ standalone: true }\"\n [siteKey]=\"captchaKeyV2\"\n size=\"normal\"\n [(ngModel)]=\"recaptcha\"\n (success)=\"handleSuccess($event)\">\n </ngx-recaptcha2>\n </div>\n <button type=\"submit\"\n (click)=\"onSubmit()\"\n *ngIf=\"!isCaptchaVerified\"\n class=\"sign-btn sign-header-btn mt-3\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n\n <div class=\"d-flex align-items-center mt-4\">\n <div class=\"icons d-flex align-items-center\">\n <a [eventTracker]=\"{\n category: 'youtube',\n action: 'click',\n label: 'cloudolive-landing-page-b',\n value: 1\n }\"\n [href]=\"youtubeUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <img src=\"/assets/img/icons/youtube.png\"\n class=\"img-fluid youtube-icon\"\n width=\"54\"\n height=\"54\"\n alt=\"\" />\n </a>\n <a [eventTracker]=\"{\n category: 'linkedin',\n action: 'click',\n label: 'cloudolive-landing-page-b',\n value: 1\n }\"\n [href]=\"linkedInUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"ms-3\">\n <img src=\"/assets/img/icons/social/linkedin.svg\"\n class=\"img-fluid linkedin-icon\"\n width=\"48\"\n height=\"48\"\n alt=\"\" />\n </a>\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer ms-3\"\n (click)=\"openSocialEditModal()\"\n (keydown.enter)=\"openSocialEditModal()\"\n (keydown.space)=\"openSocialEditModal()\"\n title=\"Edit Social Links & Company Name\"></i>\n </div>\n <div class=\"copyright text-white\">\n 2025 {{companyName}}.\n </div>\n </div>\n </form>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n\n\n\n<ng-template #bookMeeting\n let-modal>\n <div class=\"modal-header\">\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <h3 class=\"text-center modal-basic-title\">\n Thanks for getting in touch! Our team will be in contact shortly, or we\n can compare calendars now & schedule a time\n </h3>\n <button type=\"button\"\n [eventTracker]=\"{\n category: 'request-demo',\n action: 'click',\n label: 'cloudolive-landing-page-b',\n value: 1\n }\"\n (click)=\"navigateToBookMeeting()\"\n class=\"sign-btn sign-header-btn mx-auto d-block mb-3\">\n Let's do it\n </button>\n </div>\n</ng-template>\n\n\n\n\n\n\n\n<ng-template #logoModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Logo</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <pw-custom-uploader\n [aspectRatio]=\"'fullLogo'\"\n [title]=\"'Main Contrast Logo'\"\n [controlName]=\"'logo_main_contrast'\"\n [previewData]=\"previewData\"\n (saveEvent)=\"onSaveFile($event)\">\n </pw-custom-uploader>\n </div>\n</ng-template>\n\n\n\n<ng-template #hubspotEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Hubspot Embed</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label for=\"hubspotId\" class=\"form-label\">Hubspot ID</label>\n <input id=\"hubspotId\" [(ngModel)]=\"editingHubspotId\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"hubspotEmbedDiv\" class=\"form-label\">Embed DIV</label>\n <textarea id=\"hubspotEmbedDiv\" [(ngModel)]=\"editingHubspotHtml\" rows=\"8\" class=\"form-control\"></textarea>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveHubspotHtml(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n<ng-template #socialEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Social Links & Company Name</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label for=\"youtubeUrl\" class=\"form-label\">YouTube URL</label>\n <input id=\"youtubeUrl\" [(ngModel)]=\"editingYoutubeUrl\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"linkedinUrl\" class=\"form-label\">LinkedIn URL</label>\n <input id=\"linkedinUrl\" [(ngModel)]=\"editingLinkedInUrl\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"companyName\" class=\"form-label\">Company Name</label>\n <input id=\"companyName\" [(ngModel)]=\"editingCompanyName\" class=\"form-control\" />\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveSocialLinks(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n\n\n\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AdminModuleUtilsModule } from '@posiwise/admin-module-utils';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport { FieldErrorDisplayModule, ProfileImageCropperModule } from '@posiwise/utils';\n\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { DropdownModule } from 'primeng/dropdown';\n\nimport { NgbModalModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { Trial4ContactUsComponent } from './resource-contact-us.component';\n\n/**\n * Standalone module for Trial4ContactUsComponent (pw-trial-4-contact-us)\n * Lightweight alternative to importing entire ResourceSharedModule\n *\n * DragDropModule removed - now lazy-loaded only when edit modals open\n * This reduces bundle size for landing pages where users aren't logged in\n */\n@NgModule({\n declarations: [Trial4ContactUsComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n // DragDropModule removed - lazy-loaded in EditFooterLinksModalComponent and EditQuestionsModalComponent\n NgbModalModule,\n NgbTooltipModule,\n DirectivesModule,\n PipesModule,\n CoreTranslocoModule,\n NgxCaptchaModule,\n DropdownModule,\n FieldErrorDisplayModule, // For pw-field-error-display\n ProfileImageCropperModule, // For pw-custom-uploader + pw-image-cropper\n AdminModuleUtilsModule\n ],\n exports: [Trial4ContactUsComponent]\n})\nexport class Trial4ContactUsModule {}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';\n\n@Component({\n selector: 'pw-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss']\n})\nexport class ProfileImageCropperComponent {\n imageChangedEvent: Event | string = '';\n croppedImage = '';\n\n @Output() imageSelectionEvent: EventEmitter<string> = new EventEmitter<string>();\n @Output() closeEvent: EventEmitter<void> = new EventEmitter<void>();\n @Output() fileChangeEvent: EventEmitter<string> = new EventEmitter<string>();\n\n @Input() aspectRatio = 'auto';\n @Input() dynamicData;\n\n transform: ImageTransform = {};\n canvasRotation = 0;\n showCropper = false;\n\n busy: boolean;\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.imageChangedEvent = event;\n this.fileChangeEvent.emit(input.files[0].name);\n }\n }\n\n imageCropped(event: ImageCroppedEvent) {\n const reader = new FileReader();\n reader.onloadend = () => {\n this.croppedImage = reader.result as string;\n this.cdr.detectChanges();\n };\n reader.readAsDataURL(event.blob);\n }\n\n imageLoaded() {\n this.showCropper = true;\n }\n\n rotateLeft() {\n this.canvasRotation--;\n this.flipAfterRotate();\n }\n\n rotateRight() {\n this.canvasRotation++;\n this.flipAfterRotate();\n }\n\n private flipAfterRotate() {\n const flippedH = this.transform.flipH;\n const flippedV = this.transform.flipV;\n this.transform = {\n ...this.transform,\n flipH: flippedV,\n flipV: flippedH\n };\n }\n\n flipHorizontal() {\n this.transform = {\n ...this.transform,\n flipH: !this.transform.flipH\n };\n }\n\n flipVertical() {\n this.transform = {\n ...this.transform,\n flipV: !this.transform.flipV\n };\n }\n\n saveProfilePicture() {\n if (this.croppedImage) {\n this.imageSelectionEvent.emit(this.croppedImage);\n this.busy = true;\n }\n }\n\n onCloseModal() {\n this.closeEvent.emit();\n }\n}\n","<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label for=\"custom-input\">\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n (keydown.enter)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n (keydown.enter)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n (keydown.enter)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n (keydown.enter)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'rectangular'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"3 / 1\"\n [onlyScaleDown]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'dynamic'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"false\"\n [resizeToWidth]=\"0\"\n [cropperStaticWidth]=\"0\"\n [cropperStaticHeight]=\"0\"\n [cropperMinWidth]=\"10\"\n [cropperMinHeight]=\"10\"\n [onlyScaleDown]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n [imageQuality]=\"100\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [style.display]=\"showCropper ? null : 'none'\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div *ngIf=\"croppedImage\" class=\"col-4 mt-2\">\n <img [src]=\"croppedImage\"\n class=\"cropped-image\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n","import { DOCUMENT } from '@angular/common';\nimport { Component, EventEmitter, Inject, Injector, Input, Output } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-custom-uploader',\n templateUrl: './custom-uploader.component.html',\n styleUrls: ['./custom-uploader.component.scss']\n})\nexport class CustomUploaderComponent extends AppBaseComponent {\n @Output() saveEvent: EventEmitter<{ file: string; name: string }> = new EventEmitter<{\n file: string;\n name: string;\n }>();\n\n @Input() controlName: string;\n\n @Input() previewData: { url: string; name?: string };\n\n @Input() aspectRatio = 'auto';\n\n @Input() title: string;\n\n uploadedFile = null;\n\n selectedFileName: string;\n\n buttonBusy: boolean;\n\n constructor(\n injector: Injector,\n private readonly modalService: NgbModal,\n @Inject(DOCUMENT) private readonly document: Document\n ) {\n super(injector);\n }\n\n deleteExistingFile() {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.previewData = null;\n this.onSaveFile();\n }\n });\n }\n\n onSaveFile() {\n this.buttonBusy = true;\n this.saveEvent.emit({\n file: this.previewData?.url ? this.previewData : this.uploadedFile,\n name: this.controlName\n });\n }\n\n // modal image cropper\n\n onFileChange(value) {\n this.selectedFileName = value;\n }\n\n private dataURLtoBlob(dataUrl: string) {\n const arr = dataUrl?.split(',');\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n // eslint-disable-next-line no-plusplus\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const file: File = new File([blob], this.selectedFileName);\n this.uploadedFile = file;\n this.onSaveFile();\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n clearValues() {\n this.uploadedFile = null;\n this.selectedFileName = null;\n this.updateHeight();\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n updateHeight() {\n // wait for update card height\n setTimeout(() => {\n this.onImgChange();\n });\n }\n\n onImgChange(event?: Event) {\n if (event) {\n const target = event.target as HTMLImageElement;\n target.src = 'assets/img/icons/imagenotavailable.png';\n }\n const el = this.document.querySelectorAll(\n 'pw-domain-config-interface,pw-domain-config-build div[matchheight=\"card\"]'\n );\n el.forEach((item: Element) => {\n HelperService.matchHeights(item as HTMLElement, 'card');\n });\n }\n}\n","<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\n\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { ButtonModule } from 'primeng/button';\n\nimport { CustomUploaderComponent } from '../custom-uploader/custom-uploader.component';\n\nimport { ProfileImageCropperComponent } from './image-cropper.component';\n\n/**\n * Lightweight module for pw-image-cropper component\n *\n * Minimal dependencies - only CommonModule, ImageCropperModule, DirectivesModule\n * Use this instead of ResourceSharedComponentsModule when you only need image cropping\n */\n@NgModule({\n declarations: [ProfileImageCropperComponent, CustomUploaderComponent],\n imports: [\n CommonModule,\n CoreTranslocoModule,\n ButtonModule,\n ImageCropperModule, // for <image-cropper>\n DirectivesModule // for [buttonBusy] directive\n ],\n exports: [ProfileImageCropperComponent, CustomUploaderComponent]\n})\nexport class ProfileImageCropperModule {}\n","import { DOCUMENT } from '@angular/common';\nimport {\n Component,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { CustomUploaderComponent } from '../custom-uploader/custom-uploader.component';\n\ninterface LogoConfig {\n url?: string;\n version_100x100?: {\n url?: string;\n };\n}\n\ninterface LogosConfig {\n main_contrast?: LogoConfig;\n main_dark?: LogoConfig;\n}\n\n@Component({\n selector: 'pw-resource-header',\n templateUrl: './resource-header.component.html',\n styleUrls: ['./resource-header.component.scss']\n})\nexport class ResourceHeaderComponent extends AppBaseComponent implements OnInit, OnChanges {\n @ViewChild('collapsibleNavbar') navbarCollapse: ElementRef;\n @ViewChild('logoEditModal') logoEditModal: TemplateRef<CustomUploaderComponent>;\n @Input() user: User;\n @Input() userLoggedIn: boolean;\n\n isScrolled = false;\n open = false;\n logo = '/assets/img/landing-page/site-logo.png'; // Static fallback for LCP optimization\n navbarItems = this.appConfig?.pages_config?.navbar?.items;\n domainId = this.appConfig?.domain_id;\n contrastImageUrl = this.appConfig?.company?.logos?.main_contrast?.url;\n darkImageUrl = this.appConfig?.company?.logos?.main_dark?.url;\n\n editingNavbar = {\n items: []\n };\n id: string;\n scrollTimeout;\n\n canEditResourcesValue = false;\n\n constructor(\n injector: Injector,\n @Inject(DOCUMENT) private readonly document: Document,\n private readonly adminService: AdminService,\n private readonly modalService: NgbModal\n ) {\n super(injector);\n }\n\n ngOnInit() {\n console.log('In Header');\n // Subscribe to appConfig changes to update logo dynamically\n this.appConfigService.appConfig$.subscribe(config => {\n if (config?.company?.logos) {\n const isAboutUs = this.router.url?.includes('/about-us');\n const logos = config.company.logos as LogosConfig;\n\n // Use smaller version for better performance (100x100 instead of 1200x264)\n this.logo = isAboutUs\n ? logos.main_contrast?.url || '/assets/img/landing-page/site-logo.png'\n : logos.main_dark?.url || '/assets/img/landing-page/site-logo.png';\n }\n });\n\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.id = data?.subscriptionId;\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['user'] || changes['userLoggedIn']) {\n if (this.userLoggedIn && this.user) {\n this.updateCanEditResourcesValue();\n }\n }\n }\n\n openLogoEditModal() {\n this.modalService.open(this.logoEditModal, { centered: true, size: 'md' });\n }\n\n onSaveLogo(event) {\n const formData = new FormData();\n formData.append('subscription_id', this.id);\n if (event.file instanceof File) {\n formData.append(this.isScrolled ? 'logo_main_contrast' : 'logo_main_dark', event.file);\n } else {\n formData.append(\n this.isScrolled ? 'remove_logo_main_contrast' : 'remove_logo_main_dark',\n 'true'\n );\n }\n\n this.adminService.updateDomainConfig(this.domainId, formData).subscribe(() => {\n if (event.file) {\n this.logo = URL.createObjectURL(event.file);\n if (this.isScrolled) {\n this.contrastImageUrl = URL.createObjectURL(event.file);\n } else {\n this.darkImageUrl = URL.createObjectURL(event.file);\n }\n this.modalService.dismissAll();\n }\n this.toast.success(event.file ? 'Logo updated' : 'Logo removed');\n });\n }\n\n @HostListener('window:scroll', [])\n onScroll(): void {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = setTimeout(() => {\n requestAnimationFrame(() => {\n const isAboutUs = this.router?.url?.includes('/about-us');\n const shouldScroll = window.scrollY > 150;\n this.isScrolled = shouldScroll;\n\n if (!isAboutUs) {\n // Use smaller versions for better performance\n const logos = this.appConfig?.company?.logos as LogosConfig;\n const newLogo = shouldScroll\n ? logos?.main_contrast?.url ??\n this.contrastImageUrl ??\n '/assets/img/landing-page/site-logo.png'\n : logos?.main_dark?.url ??\n this.darkImageUrl ??\n '/assets/img/landing-page/site-logo.png';\n if (this.logo !== newLogo) {\n this.logo = newLogo;\n }\n }\n\n if (window.innerWidth < 768) {\n this.open = false;\n const collapseElement = this.navbarCollapse?.nativeElement;\n if (collapseElement?.classList.contains('show')) {\n collapseElement.classList.remove('show');\n }\n }\n\n // Close all dropdowns when scrolling\n this.closeAllDropdowns();\n });\n }, 50);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n // Close all dropdowns when clicking outside\n const target = event.target as HTMLElement;\n if (\n !target.closest('.nav-item') &&\n !target.closest('.popup') &&\n !target.closest('.sign-btn')\n ) {\n this.closeAllDropdowns();\n }\n }\n\n closeAllDropdowns(): void {\n if (this.navbarItems) {\n this.navbarItems.forEach(item => {\n if (item.open) {\n item.open = false;\n }\n });\n }\n }\n\n openDropdown(item): void {\n // Close other dropdowns first\n this.navbarItems.forEach(navItem => {\n if (navItem !== item) {\n navItem.open = false;\n }\n });\n item.open = true;\n }\n\n onDropdownItemClick(item): void {\n item.open = false;\n }\n\n async openEditNavbarModal(): Promise<void> {\n const navbarConfig = this.appConfig.pages_config?.navbar ?? {};\n navbarConfig.items = navbarConfig.items ?? [];\n\n this.editingNavbar = JSON.parse(JSON.stringify(navbarConfig));\n\n try {\n // Dynamically import EditNavbarModalComponent (includes DragDropModule)\n // This only loads when the edit modal is opened (user is logged in with edit permissions)\n // Reduces bundle size for landing pages where users aren't logged in\n const { EditNavbarModalComponent } = await import('./edit-navbar-modal.component');\n\n const modalRef = this.modalService.open(EditNavbarModalComponent, {\n size: 'lg',\n centered: true,\n windowClass: 'modal-holder'\n });\n\n modalRef.componentInstance.editingNavbar = this.editingNavbar;\n modalRef.componentInstance.save.subscribe((updatedNavbar) => {\n this.saveNavbarLinks(modalRef, updatedNavbar);\n });\n modalRef.componentInstance.close.subscribe(() => {\n modalRef.close();\n });\n } catch (error) {\n console.error('Failed to load edit navbar modal:', error);\n this.toast.error('Failed to open edit modal. Please try again.');\n }\n }\n\n saveNavbarLinks(modal, updatedNavbar?: any): void {\n const navbarToSave = updatedNavbar || this.editingNavbar;\n const updatedConfig = {\n navbar: navbarToSave,\n subscription_id: this.id\n };\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)\n .subscribe(() => {\n this.toast.success('Navbar links updated');\n this.navbarItems = [...navbarToSave.items];\n // Update the appConfig to reflect the saved changes\n this.appConfig.pages_config = this.appConfig.pages_config ?? {};\n this.appConfig.pages_config.navbar = { ...navbarToSave };\n modal.close();\n });\n }\n\n private updateCanEditResourcesValue(): void {\n this.canEditResourcesValue = HelperService.canEditResources(\n this.user,\n this.userLoggedIn,\n this.permissionService\n );\n }\n\n canEditResources(): boolean {\n return this.canEditResourcesValue;\n }\n\n navigateToLogin(): void {\n window.location.href = '/login';\n }\n}\n","<nav class=\"navbar navbar-expand-md navbar-dark fixed-top primary-nav-bg-color resource-header\"\n id=\"banner\">\n <div class=\"container container-wrapper banner-section\">\n\n <!-- Toggler/collapsibe Button -->\n <button class=\"navbar-toggler header-menu-bar\"\n type=\"button\"\n aria-label=\"Toggle navigation\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#collapsibleNavbar\">\n <img src=\"/assets/img/products/trial/navbar-toggle-icon.png\"\n class=\"img-fluid navbar-toggle-icon\"\n alt=\"\" />\n </button>\n\n <!-- Mobile Logo -->\n <div class=\"d-md-none mb-icon\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openLogoEditModal()\"\n (keydown.enter)=\"openLogoEditModal()\"\n (keydown.space)=\"openLogoEditModal()\"\n title=\"Edit Logo\"></i>\n\n\n <!-- Navbar links -->\n <div class=\"collapse navbar-collapse mt-3 mt-md-0\"\n id=\"collapsibleNavbar\"\n #collapsibleNavbar>\n <div class=\"row align-items-center w-100\">\n\n <!-- Always occupy 3 columns for logo -->\n <div class=\"col-md-2 d-none d-md-flex align-items-center\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <div class=\"col-md-7 d-flex justify-content-start\">\n <ul #anchorLinks\n class=\"navbar-nav flex gap-4 me-0 wow fadeInUp position-relative\"\n data-wow-duration=\"2s\">\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openEditNavbarModal()\"\n (keydown.enter)=\"openEditNavbarModal()\"\n (keydown.space)=\"openEditNavbarModal()\"\n title=\"Edit Navbar Links\"></i>\n <li class=\"nav-item\" *ngFor=\"let item of navbarItems\">\n <div class=\"dropdown-container\"\n (mouseenter)=\"openDropdown(item)\">\n <a\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n [ngClass]=\"{ 'scrolled-nav-link': isScrolled }\"\n (click)=\"item.subtitles?.length ? (item.open = !item.open) : null\"\n [attr.href]=\"!(item.subtitles?.length) ? item.path : null\"\n >\n {{ item?.title }}\n <i *ngIf=\"item.subtitles.length > 0 && item.open\" class=\"fa-solid fa-caret-down\"></i>\n </a>\n <div class=\"popup position-absolute\"\n *ngIf=\"item.subtitles.length > 0 && item.open\">\n <ul>\n <li\n *ngFor=\"let sub of item.subtitles\"\n [routerLink]=\"sub.path\"\n class=\"dropdownItem\"\n (click)=\"onDropdownItemClick(item)\"\n (keydown.enter)=\"onDropdownItemClick(item)\"\n (keydown.space)=\"onDropdownItemClick(item)\"\n >\n {{ sub.title }}\n </li>\n </ul>\n </div>\n </div>\n </li>\n\n <li class=\"nav-item ms-2 mb-3 d-flex d-md-none\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </li>\n </ul>\n </div>\n\n <!-- Always 3 columns for login -->\n <div class=\"col-md-3 d-none d-md-flex justify-content-end\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </div>\n\n </div>\n </div>\n </div>\n</nav>\n\n<ng-template #logoEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Logo</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <!-- <pw-custom-uploader\n [title]=\"'Main Logo'\"\n [controlName]=\"'logo_main'\"\n [aspectRatio]=\"'fullLogo'\"\n [previewData]=\"{ url: logo, name: 'logo_main.png' }\"\n (saveEvent)=\"onSaveLogo($event)\">\n </pw-custom-uploader> -->\n </div>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AdminModuleUtilsModule } from '@posiwise/admin-module-utils';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\n\nimport { NgbModalModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ProfileImageCropperModule } from '../image-cropper/profile-image-cropper.module';\n\nimport { ResourceHeaderComponent } from './resource-header.component';\n\n/**\n * ResourceHeaderModule - Optimized\n * DragDropModule removed - now lazy-loaded only when edit modal opens\n * This reduces bundle size for landing pages where users aren't logged in\n */\n@NgModule({\n declarations: [ResourceHeaderComponent],\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n // DragDropModule removed - lazy-loaded in EditNavbarModalComponent\n NgbModalModule,\n NgbTooltipModule,\n CoreTranslocoModule,\n DirectivesModule,\n PipesModule,\n AdminModuleUtilsModule,\n ProfileImageCropperModule\n ],\n exports: [ResourceHeaderComponent]\n})\nexport class ResourceHeaderModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-field-error-display',\n templateUrl: './field-error-display.component.html'\n})\nexport class FieldErrorDisplayComponent {\n @Input()\n errorMsg: string;\n\n @Input()\n displayError: boolean;\n}\n","<div *ngIf=\"displayError\">\n <div class=\"text-danger\">\n {{ errorMsg }}\n </div>\n</div>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FieldErrorDisplayComponent } from './field-error-display.component';\n\n/**\n * Standalone module for FieldErrorDisplayComponent.\n * Import this lightweight module instead of SharedComponentsModule\n * when you only need field error display functionality.\n */\n@NgModule({\n declarations: [FieldErrorDisplayComponent],\n imports: [CommonModule],\n exports: [FieldErrorDisplayComponent]\n})\nexport class FieldErrorDisplayModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n/**\n * Edit Footer Links Modal Component\n * Contains drag-drop functionality for reordering footer links\n * This component is lazy-loaded only when the edit modal is opened\n */\n@Component({\n selector: 'pw-edit-footer-links-modal',\n standalone: true,\n imports: [CommonModule, FormsModule, DragDropModule],\n template: `\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Footer Links</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"onClose()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Footer Links Section</h4>\n <div cdkDropList (cdkDropListDropped)=\"dropFooterLinks($event)\">\n <div *ngFor=\"let footer of editingFooterLinks.items; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5 mb-2\">\n <label [for]=\"'footerTitle' + i\" class=\"form-label\">Title</label>\n <input [id]=\"'footerTitle' + i\" class=\"form-control\" [(ngModel)]=\"footer.title\" />\n </div>\n <div class=\"col-md-5 mb-2\">\n <label [for]=\"'footerPath' + i\" class=\"form-label\">Path</label>\n <input [id]=\"'footerPath' + i\" class=\"form-control\" [(ngModel)]=\"footer.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\"\n (click)=\"removeFooterLink(i)\"\n (keydown.enter)=\"removeFooterLink(i)\"\n (keydown.space)=\"removeFooterLink(i)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n\n <!-- Subtitles -->\n <div cdkDropList (cdkDropListDropped)=\"dropSubtitles(i, $event)\">\n <div *ngFor=\"let sub of footer.subtitles; let j = index\" class=\"row border p-3 mb-2 align-items-center\" cdkDrag>\n <div class=\"col-md-5\">\n <label [for]=\"'subtitleTitle' + i + j\" class=\"form-label\">Subtitle Title</label>\n <input [id]=\"'subtitleTitle' + i + j\" class=\"form-control\" [(ngModel)]=\"sub.title\" />\n </div>\n <div class=\"col-md-5\">\n <label [for]=\"'subtitlePath' + i + j\" class=\"form-label\">Subtitle Path</label>\n <input [id]=\"'subtitlePath' + i + j\" class=\"form-control\" [(ngModel)]=\"sub.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\"\n (click)=\"removeSubtitle(i, j)\"\n (keydown.enter)=\"removeSubtitle(i, j)\"\n (keydown.space)=\"removeSubtitle(i, j)\"></i>\n <i class=\"fa fa-bars cursor-move in-page-bars-icon\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addSubtitle(i)\">\n + Add Subtitle\n </button>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-3\" (click)=\"addFooterLink()\">\n + Add Footer Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"onClose()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"onSave()\">Save</button>\n </div>\n `\n})\nexport class EditFooterLinksModalComponent {\n @Input() editingFooterLinks: any = { items: [] };\n @Output() save = new EventEmitter<any>();\n @Output() close = new EventEmitter<void>();\n\n dropFooterLinks(event: any) {\n moveItemInArray(this.editingFooterLinks.items, event.previousIndex, event.currentIndex);\n }\n\n dropSubtitles(footerIndex: number, event: any) {\n moveItemInArray(\n this.editingFooterLinks.items[footerIndex].subtitles,\n event.previousIndex,\n event.currentIndex\n );\n }\n\n addFooterLink() {\n this.editingFooterLinks.items.push({\n title: '',\n path: '',\n subtitles: []\n });\n }\n\n removeFooterLink(index: number) {\n this.editingFooterLinks.items.splice(index, 1);\n }\n\n addSubtitle(footerIndex: number) {\n this.editingFooterLinks.items[footerIndex].subtitles.push({\n title: '',\n path: ''\n });\n }\n\n removeSubtitle(footerIndex: number, subtitleIndex: number) {\n this.editingFooterLinks.items[footerIndex].subtitles.splice(subtitleIndex, 1);\n }\n\n onSave() {\n this.save.emit(this.editingFooterLinks);\n }\n\n onClose() {\n this.close.emit();\n }\n}\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n/**\n * Edit Questions Modal Component\n * Contains drag-drop functionality for reordering questions and options\n * This component is lazy-loaded only when the edit modal is opened\n */\n@Component({\n selector: 'pw-edit-questions-modal',\n standalone: true,\n imports: [CommonModule, FormsModule, DragDropModule],\n template: `\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Questions</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"onClose()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Questions Section</h4>\n <div cdkDropList (cdkDropListDropped)=\"dropQuestions($event)\">\n <div *ngFor=\"let q of editingQuestions; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-11 mb-2\">\n <label [for]=\"'questionText' + i\" class=\"form-label\">Question</label>\n <input [id]=\"'questionText' + i\" class=\"form-control\" [(ngModel)]=\"q.question\" placeholder=\"Enter question\" />\n </div>\n <div class=\"col-md-1 d-flex justify-content-end align-items-start mt-4\">\n <i class=\"fa fa-bars in-page-bars-icon cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n\n <!-- Options Section -->\n <div cdkDropList (cdkDropListDropped)=\"dropQuestionOptions(i, $event)\">\n <div *ngFor=\"let opt of q.options; let j = index\" class=\"row border p-3 mb-2 align-items-center\" cdkDrag>\n <div class=\"col-md-7 mb-2\">\n <label [for]=\"'questionOption' + i + j\" class=\"form-label\">Option</label>\n <input [id]=\"'questionOption' + i + j\" class=\"form-control\" [(ngModel)]=\"opt.option\" placeholder=\"Enter option\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\"\n (click)=\"removeQuestionOption(i, j)\"\n (keydown.enter)=\"removeQuestionOption(i, j)\"\n (keydown.space)=\"removeQuestionOption(i, j)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addQuestionOption(i)\">+ Add Option</button>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-3\" (click)=\"addNewQuestion()\">+ Add Question</button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"onClose()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"onSave()\">Save</button>\n </div>\n `\n})\nexport class EditQuestionsModalComponent {\n @Input() editingQuestions: any[] = [];\n @Output() save = new EventEmitter<any[]>();\n @Output() close = new EventEmitter<void>();\n\n dropQuestions(event: any) {\n moveItemInArray(this.editingQuestions, event.previousIndex, event.currentIndex);\n }\n\n dropQuestionOptions(qIndex: number, event: any) {\n moveItemInArray(\n this.editingQuestions[qIndex].options,\n event.previousIndex,\n event.currentIndex\n );\n }\n\n addNewQuestion() {\n this.editingQuestions.push({ question: '', options: [] });\n }\n\n addQuestionOption(qIndex: number) {\n this.editingQuestions[qIndex].options.push({ option: '' });\n }\n\n removeQuestionOption(qIndex: number, optIndex: number) {\n this.editingQuestions[qIndex].options.splice(optIndex, 1);\n }\n\n onSave() {\n this.save.emit(this.editingQuestions);\n }\n\n onClose() {\n this.close.emit();\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i7","FieldErrorDisplayModule","ProfileImageCropperModule","i1","i2","i3","i4","i5.ProfileImageCropperComponent","i6","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"posiwise-resource-contact-us.mjs","sources":["../../../../libs/resource-contact-us/src/lib/field-error-display/field-error-display.component.ts","../../../../libs/resource-contact-us/src/lib/field-error-display/field-error-display.component.html","../../../../libs/resource-contact-us/src/lib/resource-contact-us/resource-contact-us.component.ts","../../../../libs/resource-contact-us/src/lib/resource-contact-us/resource-contact-us.component.html","../../../../libs/resource-contact-us/src/lib/resource-header/resource-header.component.ts","../../../../libs/resource-contact-us/src/lib/resource-header/resource-header.component.html","../../../../libs/resource-contact-us/src/lib/resource-header/shared-header.module.ts","../../../../libs/resource-contact-us/src/lib/image-cropper/image-cropper.component.ts","../../../../libs/resource-contact-us/src/lib/image-cropper/image-cropper.component.html","../../../../libs/resource-contact-us/src/lib/custom-uploader/custom-uploader.component.ts","../../../../libs/resource-contact-us/src/lib/custom-uploader/custom-uploader.component.html","../../../../libs/resource-contact-us/src/lib/image-cropper/profile-image-cropper.module.ts","../../../../libs/resource-contact-us/src/lib/field-error-display/field-error-display.module.ts","../../../../libs/resource-contact-us/src/lib/resource-contact-us/shared-contact-us.module.ts","../../../../libs/resource-contact-us/src/posiwise-resource-contact-us.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-field-error-display',\n templateUrl: './field-error-display.component.html'\n})\nexport class FieldErrorDisplayComponent {\n @Input()\n errorMsg: string;\n\n @Input()\n displayError: boolean;\n}\n","<div *ngIf=\"displayError\">\n <div class=\"text-danger\">\n {{ errorMsg }}\n </div>\n</div>\n\n","import { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AbTestService, AuthService, ValidationService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { CustomUploaderComponent } from '@posiwise/utils';\nimport { CrmService } from '@posiwise/smart-crm-shared';\n\nimport { StatusCodes } from 'http-status-codes';\nimport Swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ResourceModalContext } from '../shared/resource-modal.interface';\n\n@Component({\n selector: 'pw-trial-4-contact-us',\n templateUrl: './resource-contact-us.component.html',\n styleUrls: ['./resource-contact-us.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Trial4ContactUsComponent\n extends AppBaseComponent\n implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n @ViewChild('footerSection', { static: true }) footerSection!: ElementRef;\n @ViewChild('bookMeeting', { static: true }) content: TemplateRef<ResourceModalContext>;\n @ViewChild('editFooterLinksModal') editFooterLinksModal: TemplateRef<CustomUploaderComponent>;\n @ViewChild('logoModal') logoModal: TemplateRef<CustomUploaderComponent>;\n @ViewChild('logoUploader') logoUploader: CustomUploaderComponent;\n @ViewChild('hubspotEditModal') hubspotEditModal: TemplateRef<ResourceModalContext>;\n @ViewChild('socialEditModal') socialEditModal: TemplateRef<CustomUploaderComponent>;\n @ViewChild('questionsEditModal') questionsEditModal: TemplateRef<CustomUploaderComponent>;\n\n editingQuestions = [];\n isHubspotReady: boolean;\n\n isFooterVisible = false;\n private observer?: IntersectionObserver;\n\n openQuestionsEditModal(): void {\n this.editingQuestions = JSON.parse(JSON.stringify(this.editingQuestions ?? []));\n this.modalService.open(this.questionsEditModal, { centered: true, size: 'lg' });\n }\n\n editingYoutubeUrl: string;\n editingLinkedInUrl: string;\n editingCompanyName: string;\n\n form: UntypedFormGroup;\n\n recaptcha = null;\n\n previewData;\n\n @Input() subscriptionId = this.appConfig.crm.subscription_id;\n @Input() sourceId = this.appConfig.crm.source_id;\n @Input() masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n @Input() experimentName;\n @Input() microserviceName;\n @Input() shardName;\n @Input() user: User;\n\n canEditResourcesValue = false;\n @Input() userLoggedIn: boolean;\n\n id;\n\n logo = this.appConfig?.company?.logos?.main_contrast?.url;\n trialBgImage2 = this.appConfig?.signup_config.trial?.image_bg2?.url;\n tosId = this.appConfig?.main_tos_id;\n description = this.appConfig.company.description;\n email = this.appConfig.company.email;\n companyName = this.appConfig.company.name;\n street = this.appConfig.company.street;\n questions = this.appConfig?.pages_config?.contact_us?.questions;\n hubspot = this.appConfig?.pages_config?.contact_us?.hubspot;\n footerLinks = this.appConfig?.pages_config?.footer_links?.items;\n\n footerLinksData = this.appConfig?.pages_config?.footer_links;\n\n youtubeUrl = this.appConfig.social?.youtube_url;\n linkedInUrl = this.appConfig.social?.linkedin_url;\n domainId = this.appConfig.domain_id;\n\n editingEmail = this.email;\n isEditingEmail = false;\n\n editingHubspotHtml: string;\n editingHubspotId: string;\n captchaKeyV2: string;\n hubspotHtml;\n\n abTests;\n\n submitted = false;\n isCaptchaVerified = false;\n isEmailValid = true;\n isEditingStreet = false;\n\n psaOptions;\n\n question;\n\n editingFooterLinks = {\n items: []\n };\n editingStreet: string;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly authService: AuthService,\n private readonly crmService: CrmService,\n private readonly sanitizer: DomSanitizer,\n private readonly adminService: AdminService,\n injector: Injector,\n private readonly abTestService: AbTestService,\n private readonly modalService: NgbModal,\n private readonly cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private readonly document: Document\n ) {\n super(injector);\n this.captchaKeyV2 = this.appConfig.integrations.captcha_key_V2;\n this.contactUsForm();\n }\n\n ngOnInit() {\n setTimeout(() => (this.isHubspotReady = true), 2000);\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.id = data?.subscriptionId;\n });\n }\n this.previewData = {\n url: this.logo,\n name: 'logo_main_contrast.png'\n };\n this.editingStreet = this.street;\n if (Array.isArray(this.appConfig.pages_config?.ab_tests)) {\n this.abTests = this.appConfig.pages_config.ab_tests.find(\n test => test.description === 'contact-us'\n );\n this.microserviceName = this.abTests?.microservice_name;\n this.experimentName = this.abTests?.experiment_name;\n this.shardName = this.abTests?.db_shard;\n }\n\n const footerItem = this.getFooterHubspotForm();\n if (footerItem?.div) {\n // NOSONAR: Trusted HTML content is handled safely here\n this.hubspotHtml = this.sanitizer.bypassSecurityTrustHtml(footerItem.div); // NOSONAR\n }\n this.editingQuestions = this.questions;\n this.question = this.questions?.[0]?.question;\n this.psaOptions = [\n { label: 'Select PSA', value: '' },\n ...(this.questions?.[0]?.options ?? [])\n .filter(q => q.option?.trim())\n .map(q => ({\n label: q.option,\n value: q.option\n }))\n ];\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['user'] || changes['userLoggedIn']) {\n if (this.userLoggedIn && this.user) {\n this.updateCanEditResourcesValue();\n }\n }\n }\n\n openLogoEditModal(): void {\n this.modalService.open(this.logoModal, {\n centered: true,\n size: 'md'\n });\n }\n\n onSaveFile(event): void {\n const formData = new FormData();\n const data = { subscription_id: this.subscriptionId };\n\n if (event.file instanceof File) {\n data[event.name] = event.file;\n } else if (event.file === null) {\n data[`remove_${event.name}`] = true;\n }\n\n for (const key in data) {\n formData.append(key, data[key]);\n }\n\n this.adminService.updateDomainConfig(this.domainId, formData).subscribe(() => {\n if (event.file) {\n this.logo = URL.createObjectURL(event.file);\n this.modalService.dismissAll();\n }\n this.toast.success(event.file ? 'Logo updated' : 'Logo removed');\n });\n }\n\n saveQuestions(modal): void {\n const updateData = {\n contact_us: {\n ...this.appConfig.pages_config?.contact_us,\n questions: this.editingQuestions\n },\n subscription_id: this.id\n };\n\n this.adminService.updateDomainConfig(this.domainId, updateData).subscribe(() => {\n this.questions = this.editingQuestions;\n this.toast.success('Questions updated');\n this.question = this.editingQuestions?.[0]?.question;\n if (this.editingQuestions?.[0]?.options?.length > 0) {\n this.psaOptions = [\n { label: 'Select PSA', value: '' },\n ...(this.questions?.[0]?.options ?? [])\n .filter(q => q.option?.trim())\n .map(q => ({\n label: q.option,\n value: q.option\n }))\n ];\n } else {\n this.psaOptions = [];\n }\n\n modal.close();\n });\n }\n\n addNewQuestion(): void {\n this.editingQuestions.push({ question: '', options: [] });\n }\n\n addQuestionOption(qIndex: number): void {\n this.editingQuestions[qIndex].options.push({ option: '' });\n }\n\n removeQuestionOption(qIndex: number, optIndex: number): void {\n this.editingQuestions[qIndex].options.splice(optIndex, 1);\n }\n\n dropQuestions(event): void {\n moveItemInArray(this.editingQuestions, event.previousIndex, event.currentIndex);\n }\n\n dropQuestionOptions(qIndex: number, event): void {\n moveItemInArray(\n this.editingQuestions[qIndex].options,\n event.previousIndex,\n event.currentIndex\n );\n }\n\n openSocialEditModal(): void {\n this.editingYoutubeUrl = this.youtubeUrl;\n this.editingLinkedInUrl = this.linkedInUrl;\n this.editingCompanyName = this.companyName;\n\n this.modalService.open(this.socialEditModal, { centered: true, size: 'lg' });\n }\n\n saveSocialLinks(modal): void {\n const updateData = {\n youtube_url: this.editingYoutubeUrl,\n linkedin_url: this.editingLinkedInUrl,\n company_name: this.editingCompanyName,\n subscription_id: this.id\n };\n\n this.adminService.updateDomainConfig(this.domainId, updateData).subscribe(() => {\n this.youtubeUrl = this.editingYoutubeUrl;\n this.linkedInUrl = this.editingLinkedInUrl;\n this.companyName = this.editingCompanyName;\n this.toast.success('Social links and company name updated');\n modal.close();\n });\n }\n\n hasValidOptions(): boolean {\n return this.questions?.[0]?.options?.some(opt => opt.option?.trim());\n }\n\n ngAfterViewInit() {\n this.watchIframeHeightChange();\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n this.isFooterVisible = true;\n this.cdr.detectChanges();\n this.observer?.disconnect();\n }\n },\n { threshold: 0.1 }\n );\n\n this.observer.observe(this.footerSection.nativeElement);\n }\n\n openEditFooterLinksModal(content): void {\n this.footerLinksData = this.footerLinksData ?? {};\n this.footerLinksData.items = this.footerLinksData.items ?? [];\n this.editingFooterLinks = JSON.parse(JSON.stringify(this.footerLinksData));\n\n this.modalService.open(content, {\n size: 'lg',\n centered: true,\n windowClass: 'modal-holder'\n });\n }\n\n private watchIframeHeightChange() {\n const iframe = this.document.querySelector('.hubspot-container');\n if (!iframe) return;\n const interval = setInterval(() => {\n const newHeight = iframe['offsetHeight'];\n if (newHeight === 250) {\n clearInterval(interval);\n this.callAbTestFinish();\n }\n }, 300);\n }\n\n // New method to handle Hubspot content loading\n onHubspotLoad(event: Event) {\n const container = event.target as HTMLDivElement;\n container.classList.add('content-loaded');\n\n // Optional: Trigger layout recalculation\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n }\n\n private callAbTestFinish() {\n if (this.experimentName && this.microserviceName) {\n this.abTestService\n .finishABExperiment(this.experimentName, this.microserviceName)\n .subscribe(() => {\n this.modalService.open(this.content, {\n centered: true,\n windowClass: 'modal-holder'\n });\n });\n }\n }\n\n contactUsForm(): void {\n this.form = this.fb.group({\n first_name: ['', Validators.required],\n last_name: [''],\n company: [''],\n psa: [''],\n enquiry: ['', Validators.required],\n email: ['', Validators.required]\n });\n }\n\n onSubmit() {\n this.submitted = true;\n if (this.form.valid) {\n this.isCaptchaVerified = true;\n this.submitted = false;\n }\n }\n\n handleSuccess(token: string) {\n if (token) {\n this.authService.validateReCaptcha(token).subscribe((isSuccess: boolean) => {\n if (isSuccess && this.form.valid) {\n const data = { ...this.form.getRawValue() };\n const formattedEnquiry = `${data.enquiry}; Question: ${this.question}; Answer: ${data.psa}`;\n const postData = {\n first_name: `${data.first_name}`,\n last_name: `${data.first_name}`,\n company: `${data.first_name}`,\n email: `${data.email}`,\n enquiry: this.psaOptions.length ? formattedEnquiry : `${data.enquiry}`,\n psa: data.psa,\n subscription_id: this.subscriptionId,\n crm_source_id: this.sourceId,\n master_subscription_id: this.masterSubscriptionId,\n notify_user: false,\n is_manual: false\n };\n\n this.crmService.postCrmLead(this.subscriptionId, postData).subscribe(resp => {\n // example of snippet to close the experiment and track in GA\n if (resp?.status === StatusCodes.OK) {\n this.googleAnalyticsService.sendEvent(\n 'new-lead-registration', // category, eg: videos\n 'subscribe-success', // action, eg: Play\n 'coming-soon-three', // label, eg: Chappy\n 1 // value, eg: 10\n );\n if (this.experimentName && this.microserviceName) {\n this.abTestService\n .finishABExperiment(this.experimentName, this.microserviceName)\n .subscribe(() => {\n this.modalService.open(this.content, {\n centered: true,\n windowClass: 'modal-holder'\n });\n });\n } else {\n Swal.fire(resp.message);\n }\n }\n this.form.reset();\n this.isCaptchaVerified = false;\n });\n }\n });\n }\n }\n\n scrollToTop() {\n this.document.documentElement.scrollTop = 0;\n }\n\n getFooterHubspotForm() {\n if (!this.hubspot?.length) {\n return null;\n }\n\n return this.hubspot.find(item => item.position === 'footer') ?? null;\n }\n\n navigateToBookMeeting() {\n const bookDemoUrl =\n this.appConfig?.signup_config?.trial?.book_demo_url ??\n 'https://calendly.com/cloudolive';\n window.open(bookDemoUrl, '_blank', 'noreferrer noopener');\n }\n\n validateEmail() {\n const email = this.form.get('email').value;\n if (email) {\n this.isEmailValid = ValidationService.email(email);\n } else {\n this.isEmailValid = true;\n }\n }\n\n addFooterLink(): void {\n this.editingFooterLinks.items.push({\n title: '',\n path: '',\n subtitles: []\n });\n }\n\n removeFooterLink(index: number): void {\n this.editingFooterLinks.items.splice(index, 1);\n }\n\n addSubtitle(footerIndex: number): void {\n this.editingFooterLinks.items[footerIndex].subtitles.push({\n title: '',\n path: ''\n });\n }\n\n removeSubtitle(footerIndex: number, subtitleIndex: number): void {\n this.editingFooterLinks.items[footerIndex].subtitles.splice(subtitleIndex, 1);\n }\n\n dropFooterLinks(event) {\n moveItemInArray(this.editingFooterLinks.items, event.previousIndex, event.currentIndex);\n }\n\n dropSubtitles(footerIndex: number, event) {\n moveItemInArray(\n this.editingFooterLinks.items[footerIndex].subtitles,\n event.previousIndex,\n event.currentIndex\n );\n }\n\n saveFooterLinks(modal): void {\n const updatedConfig = {\n footer_links: this.editingFooterLinks,\n subscription_id: this.id\n };\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)\n .subscribe(() => {\n this.toast.success('Footer links updated');\n this.footerLinks = [...this.editingFooterLinks.items];\n this.footerLinksData = { ...this.editingFooterLinks };\n modal.close();\n });\n }\n\n saveEmail(): void {\n this.email = this.editingEmail;\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, {\n company_email: this.editingEmail,\n subscription_id: this.id\n })\n .subscribe(() => {\n this.toast.success('Email updated');\n this.isEditingEmail = false;\n });\n }\n\n saveStreet(): void {\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, {\n company_address: this.editingStreet,\n subscription_id: this.id\n })\n .subscribe(() => {\n this.toast.success('Street updated');\n this.street = this.editingStreet;\n this.isEditingStreet = false;\n });\n }\n\n cancelStreet(): void {\n this.editingStreet = this.street;\n this.isEditingStreet = false;\n }\n\n openHubspotEditModal(footerItem): void {\n this.editingHubspotHtml = footerItem.div;\n this.editingHubspotId = footerItem.id;\n this.modalService.open(this.hubspotEditModal, { centered: true, size: 'lg' });\n }\n\n saveHubspotHtml(modal): void {\n const updatedConfig = {\n contact_us: {\n ...this.appConfig?.pages_config?.contact_us,\n hubspot: [\n {\n id: '7423639',\n position: 'footer',\n div: this.editingHubspotHtml\n }\n ]\n },\n subscription_id: this.id\n };\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)\n .subscribe(() => {\n // NOSONAR: Trusted HTML content is handled safely here\n this.hubspotHtml = this.sanitizer.bypassSecurityTrustHtml(this.editingHubspotHtml); // NOSONAR\n this.toast.success('Hubspot Embed updated');\n modal.close();\n });\n }\n private updateCanEditResourcesValue(): void {\n this.canEditResourcesValue = HelperService.canEditResources(\n this.user,\n this.userLoggedIn,\n this.permissionService\n );\n }\n\n canEditResources(): boolean {\n return this.canEditResourcesValue;\n }\n\n override ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n}\n","<section #footerSection class=\"bg-black text-white py-5 footer-section\">\n <div class=\"container\" *ngIf=\"isFooterVisible\">\n <div class=\"row\">\n\n <!-- LEFT COLUMN -->\n <div class=\"col-md-6 mb-4 d-flex flex-column justify-content-between\" [ngClass]=\"{ 'site-column': getFooterHubspotForm() }\">\n <div>\n <h3 class=\"mb-4 d-flex align-items-center\">\n <span class=\"me-2 text-white\">Site Map:</span>\n <i *ngIf=\"canEditResourcesValue\" class=\"fa fa-edit in-page-edit-icon cursor-pointer text-white ms-3\" (click)=\"openEditFooterLinksModal(editFooterLinksModal)\" (keydown.enter)=\"openEditFooterLinksModal(editFooterLinksModal)\" (keydown.space)=\"openEditFooterLinksModal(editFooterLinksModal)\" ngbTooltip=\"Edit Footer Links\"></i>\n </h3>\n <ul class=\"mt-4\">\n <li routerLink=\"/\"\n class=\"cursor-pointer user-info-label link-label\"> Home </li>\n <li *ngFor=\"let link of footerLinks\" [routerLink]=\"link?.path\"\n class=\"cursor-pointer user-info-label link-label mt-4\"><span *ngIf=\"link?.title\">{{link?.title}}</span> </li>\n <li routerLink=\"/login\"\n class=\"cursor-pointer user-info-label mt-4 link-label\"> Log in </li>\n <li [routerLink]=\"'/privacy-and-tos/' + tosId\"\n class=\"cursor-pointer user-info-label mt-4 link-label\"> Privacy statement </li>\n </ul>\n <p class=\"address-section email-section mb-4\">\n <span class=\"user-info-label\">Email: </span>\n <ng-container *ngIf=\"!isEditingEmail; else editEmail\">\n <span class=\"user-info\">{{ email }}</span>\n <i *ngIf=\"canEditResourcesValue\" class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer ms-3\" (click)=\"isEditingEmail = true\" (keydown.enter)=\"isEditingEmail = true\" (keydown.space)=\"isEditingEmail = true\"></i>\n </ng-container>\n\n <ng-template #editEmail>\n <input\n class=\"form-control d-inline w-auto\"\n [(ngModel)]=\"editingEmail\"\n />\n <button class=\"btn btn-sm btn-primary ms-2\" (click)=\"saveEmail()\">Save</button>\n <button class=\"btn btn-sm btn-secondary ms-2\" (click)=\"isEditingEmail = false\">Cancel</button>\n </ng-template>\n </p>\n <span class=\"email-section mt-3 address-text\">\n <span class=\"user-info-label\">\n Address:\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer ms-2 text-white\"\n title=\"Edit Address\"\n (click)=\"isEditingStreet = true\"\n (keydown.enter)=\"isEditingStreet = true\"\n (keydown.space)=\"isEditingStreet = true\"></i>\n </span><br/>\n\n <ng-container *ngIf=\"!isEditingStreet; else editStreetBlock\">\n <span class=\"address-text user-info\">{{ street }}</span>\n </ng-container>\n\n <ng-template #editStreetBlock>\n <div class=\"d-flex align-items-center mt-3\">\n <input class=\"form-control form-control-sm\" [(ngModel)]=\"editingStreet\" />\n <button class=\"btn btn-sm btn-primary ms-2\" (click)=\"saveStreet()\">Save</button>\n <button class=\"btn btn-sm btn-secondary ms-2\" (click)=\"cancelStreet()\">Cancel</button>\n </div>\n </ng-template>\n\n </span>\n\n </div>\n <div class=\"d-flex\">\n <img [src]=\"logo\"\n alt=\"Company logo\"\n class=\"img-fluid mt-4 logo-image cursor-pointer\"\n width=\"160\"\n height=\"35\"\n (click)=\"scrollToTop()\"\n (keydown.enter)=\"scrollToTop()\"\n (keydown.space)=\"scrollToTop()\"\n title=\"Click to go to top of page\" />\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon fa-sm ms-3 cursor-pointer text-white align-self-center mt-3\"\n (click)=\"openLogoEditModal()\"\n (keydown.enter)=\"openLogoEditModal()\"\n (keydown.space)=\"openLogoEditModal()\"\n title=\"Edit Logo\"></i>\n </div>\n </div>\n\n <!-- RIGHT COLUMN -->\n <div class=\"col-md-6\" *ngIf=\"isFooterVisible\">\n <ng-container *ngIf=\"getFooterHubspotForm() as footerItem; else defaultForm\">\n <div class=\"d-flex\">\n <div\n *ngIf=\"isHubspotReady\"\n class=\"hubspot-container w-100 content-loaded\"\n [innerHTML]=\"hubspotHtml\"\n (load)=\"onHubspotLoad($event)\">\n </div>\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer\"\n (click)=\"openHubspotEditModal(footerItem)\"\n (keydown.enter)=\"openHubspotEditModal(footerItem)\"\n (keydown.space)=\"openHubspotEditModal(footerItem)\"\n title=\"Edit Hubspot Embed\"></i>\n </div>\n </ng-container>\n\n <ng-template #defaultForm>\n <div class=\"d-flex\">\n <h3 class=\"text-white mb-4\"> <span class=\"text-white\">Get in touch:</span></h3>\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer ms-3 mt-2\"\n (click)=\"openQuestionsEditModal()\"\n (keydown.enter)=\"openQuestionsEditModal()\"\n (keydown.space)=\"openQuestionsEditModal()\"\n title=\"Edit Questions\"></i>\n </div>\n <div class=\"contact-form\">\n <form [formGroup]=\"form\">\n <div class=\"mb-3\">\n <div class=\"email\">\n <div class=\"form-field\">\n <label for=\"email\">Email:</label>\n <div class=\"w-100\">\n <input type=\"text\"\n class=\"mb-1\"\n id=\"email\"\n formControlName=\"email\" />\n <pw-field-error-display [displayError]=\"\n !form.get('email').valid && (form.get('email').touched || submitted)\n \"\n errorMsg=\"Email is required\">\n </pw-field-error-display>\n </div>\n </div>\n <div class=\"form-field\">\n <label for=\"first_name\">First name:</label>\n <div class=\"w-100\">\n <input input type=\"text\"\n id=\"first_name\"\n formControlName=\"first_name\" />\n <pw-field-error-display [displayError]=\"\n !form.get('first_name').valid && (form.get('first_name').touched || submitted)\n \"\n errorMsg=\"First name is required\">\n </pw-field-error-display>\n </div>\n </div>\n <div class=\"form-field\">\n <label for=\"last_name\">Last name:</label>\n <input type=\"text\"\n id=\"last_name\"\n formControlName=\"last_name\" />\n </div>\n <div class=\"form-field\">\n <label for=\"company\">Company:</label>\n <input type=\"text\"\n id=\"company\"\n formControlName=\"company\" />\n </div>\n <div class=\"form-field\" *ngIf=\"hasValidOptions()\">\n <label for=\"psa\" class=\"select-label\">{{question}}</label>\n <p-dropdown\n formControlName=\"psa\"\n [options]=\"psaOptions\"\n [placeholder]=\"'Select PSA'\"\n styleClass=\"input-select\">\n </p-dropdown>\n </div>\n <div class=\"form-field\">\n <label for=\"enquiry\" class=\"select-label\">How can we help you?</label>\n <div class=\"enquiry-field\">\n <textarea id=\"enquiry\" formControlName=\"enquiry\" class=\"\">\n </textarea>\n <pw-field-error-display [displayError]=\"\n !form.get('enquiry').valid && (form.get('enquiry').touched || submitted)\n \"\n errorMsg=\"Enquiry is required\">\n </pw-field-error-display>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-end\">\n <div class=\"captcha-wrapper-container\"\n *ngIf=\"isCaptchaVerified\">\n <ngx-recaptcha2 [ngModelOptions]=\"{ standalone: true }\"\n [siteKey]=\"captchaKeyV2\"\n size=\"normal\"\n [(ngModel)]=\"recaptcha\"\n (success)=\"handleSuccess($event)\">\n </ngx-recaptcha2>\n </div>\n <button type=\"submit\"\n (click)=\"onSubmit()\"\n *ngIf=\"!isCaptchaVerified\"\n class=\"sign-btn sign-header-btn mt-3\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n\n <div class=\"d-flex align-items-center mt-4\">\n <div class=\"icons d-flex align-items-center\">\n <a [eventTracker]=\"{\n category: 'youtube',\n action: 'click',\n label: 'cloudolive-landing-page-b',\n value: 1\n }\"\n [href]=\"youtubeUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <img src=\"/assets/img/icons/youtube.png\"\n class=\"img-fluid youtube-icon\"\n width=\"54\"\n height=\"54\"\n alt=\"\" />\n </a>\n <a [eventTracker]=\"{\n category: 'linkedin',\n action: 'click',\n label: 'cloudolive-landing-page-b',\n value: 1\n }\"\n [href]=\"linkedInUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"ms-3\">\n <img src=\"/assets/img/icons/social/linkedin.svg\"\n class=\"img-fluid linkedin-icon\"\n width=\"48\"\n height=\"48\"\n alt=\"\" />\n </a>\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon text-white cursor-pointer ms-3\"\n (click)=\"openSocialEditModal()\"\n (keydown.enter)=\"openSocialEditModal()\"\n (keydown.space)=\"openSocialEditModal()\"\n title=\"Edit Social Links & Company Name\"></i>\n </div>\n <div class=\"copyright text-white\">\n 2025 {{companyName}}.\n </div>\n </div>\n </form>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n\n\n\n<ng-template #bookMeeting\n let-modal>\n <div class=\"modal-header\">\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <h3 class=\"text-center modal-basic-title\">\n Thanks for getting in touch! Our team will be in contact shortly, or we\n can compare calendars now & schedule a time\n </h3>\n <button type=\"button\"\n [eventTracker]=\"{\n category: 'request-demo',\n action: 'click',\n label: 'cloudolive-landing-page-b',\n value: 1\n }\"\n (click)=\"navigateToBookMeeting()\"\n class=\"sign-btn sign-header-btn mx-auto d-block mb-3\">\n Let's do it\n </button>\n </div>\n</ng-template>\n\n\n<ng-template #editFooterLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Footer Links</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <h4 class=\"mb-3\">Footer Links Section</h4>\n <div cdkDropList (cdkDropListDropped)=\"dropFooterLinks($event)\">\n <div *ngFor=\"let footer of editingFooterLinks.items; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5 mb-2\">\n <label for=\"footerTitle{{i}}\" class=\"form-label\">Title</label>\n <input id=\"footerTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"footer.title\" />\n </div>\n <div class=\"col-md-5 mb-2\">\n <label for=\"footerPath{{i}}\" class=\"form-label\">Path</label>\n <input id=\"footerPath{{i}}\" class=\"form-control\" [(ngModel)]=\"footer.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeFooterLink(i)\" (keydown.enter)=\"removeFooterLink(i)\" (keydown.space)=\"removeFooterLink(i)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n\n <!-- Subtitles -->\n <div cdkDropList (cdkDropListDropped)=\"dropSubtitles(i, $event)\">\n <div *ngFor=\"let sub of footer.subtitles; let j = index\" class=\"row border p-3 mb-2 align-items-center\" cdkDrag>\n <div class=\"col-md-5\">\n <label for=\"subtitleTitle{{i}}{{j}}\" class=\"form-label\">Subtitle Title</label>\n <input id=\"subtitleTitle{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"sub.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"subtitlePath{{i}}{{j}}\" class=\"form-label\">Subtitle Path</label>\n <input id=\"subtitlePath{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"sub.path\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeSubtitle(i, j)\" (keydown.enter)=\"removeSubtitle(i, j)\" (keydown.space)=\"removeSubtitle(i, j)\"></i>\n <i class=\"fa fa-bars cursor-move in-page-bars-icon\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addSubtitle(i)\">\n + Add Subtitle\n </button>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-3\" (click)=\"addFooterLink()\">\n + Add Footer Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveFooterLinks(modal)\">Save</button>\n </div>\n</ng-template>\n\n\n\n\n\n<ng-template #logoModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Logo</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <pw-custom-uploader\n [aspectRatio]=\"'fullLogo'\"\n [title]=\"'Main Contrast Logo'\"\n [controlName]=\"'logo_main_contrast'\"\n [previewData]=\"previewData\"\n (saveEvent)=\"onSaveFile($event)\">\n </pw-custom-uploader>\n </div>\n</ng-template>\n\n\n\n<ng-template #hubspotEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Hubspot Embed</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label for=\"hubspotId\" class=\"form-label\">Hubspot ID</label>\n <input id=\"hubspotId\" [(ngModel)]=\"editingHubspotId\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"hubspotEmbedDiv\" class=\"form-label\">Embed DIV</label>\n <textarea id=\"hubspotEmbedDiv\" [(ngModel)]=\"editingHubspotHtml\" rows=\"8\" class=\"form-control\"></textarea>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveHubspotHtml(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n<ng-template #socialEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Social Links & Company Name</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"mb-3\">\n <label for=\"youtubeUrl\" class=\"form-label\">YouTube URL</label>\n <input id=\"youtubeUrl\" [(ngModel)]=\"editingYoutubeUrl\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"linkedinUrl\" class=\"form-label\">LinkedIn URL</label>\n <input id=\"linkedinUrl\" [(ngModel)]=\"editingLinkedInUrl\" class=\"form-control\" />\n </div>\n <div class=\"mb-3\">\n <label for=\"companyName\" class=\"form-label\">Company Name</label>\n <input id=\"companyName\" [(ngModel)]=\"editingCompanyName\" class=\"form-control\" />\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-primary\" (click)=\"saveSocialLinks(modal)\">Save</button>\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n </div>\n</ng-template>\n\n\n\n<ng-template #questionsEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Questions</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\">Questions Section</h4>\n <div cdkDropList (cdkDropListDropped)=\"dropQuestions($event)\">\n <div *ngFor=\"let q of editingQuestions; let i = index\" class=\"border p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-11 mb-2\">\n <label for=\"questionText{{i}}\" class=\"form-label\">Question</label>\n <input id=\"questionText{{i}}\" class=\"form-control\" [(ngModel)]=\"q.question\" placeholder=\"Enter question\" />\n </div>\n <div class=\"col-md-1 d-flex justify-content-end align-items-start mt-4\">\n <i class=\"fa fa-bars in-page-bars-icon cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n\n <!-- Options Section -->\n <div cdkDropList (cdkDropListDropped)=\"dropQuestionOptions(i, $event)\">\n <div *ngFor=\"let opt of q.options; let j = index\" class=\"row border p-3 mb-2 align-items-center\" cdkDrag>\n <div class=\"col-md-7 mb-2\">\n <label for=\"questionOption{{i}}{{j}}\" class=\"form-label\">Option</label>\n <input id=\"questionOption{{i}}{{j}}\" class=\"form-control\" [(ngModel)]=\"opt.option\" placeholder=\"Enter option\" />\n </div>\n <div class=\"col-md-2 d-flex justify-content-between align-items-center mt-4\">\n <i class=\"fa fa-trash in-page-trash-icon text-danger cursor-pointer\" (click)=\"removeQuestionOption(i, j)\" (keydown.enter)=\"removeQuestionOption(i, j)\" (keydown.enter)=\"removeQuestionOption(i, j)\"></i>\n <i class=\"fa fa-bars in-page-bars-icon cursor-move\" cdkDragHandle></i>\n </div>\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addQuestionOption(i)\">+ Add Option</button>\n </div>\n </div>\n\n <button class=\"btn btn-primary mt-3\" (click)=\"addNewQuestion()\">+ Add Question</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)=\"saveQuestions(modal)\">Save</button>\n </div>\n</ng-template>\n\n\n\n","import { DOCUMENT } from '@angular/common';\nimport {\n Component,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { CustomUploaderComponent } from '../custom-uploader/custom-uploader.component';\n\ninterface LogoConfig {\n url?: string;\n version_100x100?: {\n url?: string;\n };\n}\n\ninterface LogosConfig {\n main_contrast?: LogoConfig;\n main_dark?: LogoConfig;\n}\n\n@Component({\n selector: 'pw-resource-header',\n templateUrl: './resource-header.component.html',\n styleUrls: ['./resource-header.component.scss']\n})\nexport class ResourceHeaderComponent extends AppBaseComponent implements OnInit, OnChanges {\n @ViewChild('collapsibleNavbar') navbarCollapse: ElementRef;\n @ViewChild('logoEditModal') logoEditModal: TemplateRef<CustomUploaderComponent>;\n @Input() user: User;\n @Input() userLoggedIn: boolean;\n\n isScrolled = false;\n open = false;\n logo = '/assets/img/landing-page/site-logo.png'; // Static fallback for LCP optimization\n navbarItems = this.appConfig?.pages_config?.navbar?.items;\n domainId = this.appConfig?.domain_id;\n contrastImageUrl = this.appConfig?.company?.logos?.main_contrast?.url;\n darkImageUrl = this.appConfig?.company?.logos?.main_dark?.url;\n\n editingNavbar = {\n items: []\n };\n id: string;\n scrollTimeout;\n\n canEditResourcesValue = false;\n\n constructor(\n injector: Injector,\n @Inject(DOCUMENT) private readonly document: Document,\n private readonly adminService: AdminService,\n private readonly modalService: NgbModal\n ) {\n super(injector);\n }\n\n ngOnInit() {\n console.log('In Header');\n // Subscribe to appConfig changes to update logo dynamically\n this.appConfigService.appConfig$.subscribe(config => {\n if (config?.company?.logos) {\n const isAboutUs = this.router.url?.includes('/about-us');\n const logos = config.company.logos as LogosConfig;\n\n // Use smaller version for better performance (100x100 instead of 1200x264)\n this.logo = isAboutUs\n ? logos.main_contrast?.url || '/assets/img/landing-page/site-logo.png'\n : logos.main_dark?.url || '/assets/img/landing-page/site-logo.png';\n }\n });\n\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.id = data?.subscriptionId;\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['user'] || changes['userLoggedIn']) {\n if (this.userLoggedIn && this.user) {\n this.updateCanEditResourcesValue();\n }\n }\n }\n\n openLogoEditModal() {\n this.modalService.open(this.logoEditModal, { centered: true, size: 'md' });\n }\n\n onSaveLogo(event) {\n const formData = new FormData();\n formData.append('subscription_id', this.id);\n if (event.file instanceof File) {\n formData.append(this.isScrolled ? 'logo_main_contrast' : 'logo_main_dark', event.file);\n } else {\n formData.append(\n this.isScrolled ? 'remove_logo_main_contrast' : 'remove_logo_main_dark',\n 'true'\n );\n }\n\n this.adminService.updateDomainConfig(this.domainId, formData).subscribe(() => {\n if (event.file) {\n this.logo = URL.createObjectURL(event.file);\n if (this.isScrolled) {\n this.contrastImageUrl = URL.createObjectURL(event.file);\n } else {\n this.darkImageUrl = URL.createObjectURL(event.file);\n }\n this.modalService.dismissAll();\n }\n this.toast.success(event.file ? 'Logo updated' : 'Logo removed');\n });\n }\n\n @HostListener('window:scroll', [])\n onScroll(): void {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = setTimeout(() => {\n requestAnimationFrame(() => {\n const isAboutUs = this.router?.url?.includes('/about-us');\n const shouldScroll = window.scrollY > 150;\n this.isScrolled = shouldScroll;\n\n if (!isAboutUs) {\n // Use smaller versions for better performance\n const logos = this.appConfig?.company?.logos as LogosConfig;\n const newLogo = shouldScroll\n ? logos?.main_contrast?.url ??\n this.contrastImageUrl ??\n '/assets/img/landing-page/site-logo.png'\n : logos?.main_dark?.url ??\n this.darkImageUrl ??\n '/assets/img/landing-page/site-logo.png';\n if (this.logo !== newLogo) {\n this.logo = newLogo;\n }\n }\n\n if (window.innerWidth < 768) {\n this.open = false;\n const collapseElement = this.navbarCollapse?.nativeElement;\n if (collapseElement?.classList.contains('show')) {\n collapseElement.classList.remove('show');\n }\n }\n\n // Close all dropdowns when scrolling\n this.closeAllDropdowns();\n });\n }, 50);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event): void {\n // Close all dropdowns when clicking outside\n const target = event.target as HTMLElement;\n if (\n !target.closest('.nav-item') &&\n !target.closest('.popup') &&\n !target.closest('.sign-btn')\n ) {\n this.closeAllDropdowns();\n }\n }\n\n closeAllDropdowns(): void {\n if (this.navbarItems) {\n this.navbarItems.forEach(item => {\n if (item.open) {\n item.open = false;\n }\n });\n }\n }\n\n openDropdown(item): void {\n // Close other dropdowns first\n this.navbarItems.forEach(navItem => {\n if (navItem !== item) {\n navItem.open = false;\n }\n });\n item.open = true;\n }\n\n onDropdownItemClick(item): void {\n item.open = false;\n }\n\n async openEditNavbarModal(): Promise<void> {\n const navbarConfig = this.appConfig.pages_config?.navbar ?? {};\n navbarConfig.items = navbarConfig.items ?? [];\n\n this.editingNavbar = JSON.parse(JSON.stringify(navbarConfig));\n\n try {\n // Dynamically import EditNavbarModalComponent (includes DragDropModule)\n // This only loads when the edit modal is opened (user is logged in with edit permissions)\n // Reduces bundle size for landing pages where users aren't logged in\n const { EditNavbarModalComponent } = await import('./edit-navbar-modal.component');\n\n const modalRef = this.modalService.open(EditNavbarModalComponent, {\n size: 'lg',\n centered: true,\n windowClass: 'modal-holder'\n });\n\n modalRef.componentInstance.editingNavbar = this.editingNavbar;\n modalRef.componentInstance.save.subscribe((updatedNavbar) => {\n this.saveNavbarLinks(modalRef, updatedNavbar);\n });\n modalRef.componentInstance.close.subscribe(() => {\n modalRef.close();\n });\n } catch (error) {\n console.error('Failed to load edit navbar modal:', error);\n this.toast.error('Failed to open edit modal. Please try again.');\n }\n }\n\n saveNavbarLinks(modal, updatedNavbar?: any): void {\n const navbarToSave = updatedNavbar || this.editingNavbar;\n const updatedConfig = {\n navbar: navbarToSave,\n subscription_id: this.id\n };\n\n this.adminService\n .updateDomainConfig(this.appConfig?.domain_id, updatedConfig)\n .subscribe(() => {\n this.toast.success('Navbar links updated');\n this.navbarItems = [...navbarToSave.items];\n // Update the appConfig to reflect the saved changes\n this.appConfig.pages_config = this.appConfig.pages_config ?? {};\n this.appConfig.pages_config.navbar = { ...navbarToSave };\n modal.close();\n });\n }\n\n private updateCanEditResourcesValue(): void {\n this.canEditResourcesValue = HelperService.canEditResources(\n this.user,\n this.userLoggedIn,\n this.permissionService\n );\n }\n\n canEditResources(): boolean {\n return this.canEditResourcesValue;\n }\n\n navigateToLogin(): void {\n window.location.href = '/login';\n }\n}\n","<nav class=\"navbar navbar-expand-md navbar-dark fixed-top primary-nav-bg-color resource-header\"\n id=\"banner\">\n <div class=\"container container-wrapper banner-section\">\n\n <!-- Toggler/collapsibe Button -->\n <button class=\"navbar-toggler header-menu-bar\"\n type=\"button\"\n aria-label=\"Toggle navigation\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#collapsibleNavbar\">\n <img src=\"/assets/img/products/trial/navbar-toggle-icon.png\"\n class=\"img-fluid navbar-toggle-icon\"\n alt=\"\" />\n </button>\n\n <!-- Mobile Logo -->\n <div class=\"d-md-none mb-icon\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openLogoEditModal()\"\n (keydown.enter)=\"openLogoEditModal()\"\n (keydown.space)=\"openLogoEditModal()\"\n title=\"Edit Logo\"></i>\n\n\n <!-- Navbar links -->\n <div class=\"collapse navbar-collapse mt-3 mt-md-0\"\n id=\"collapsibleNavbar\"\n #collapsibleNavbar>\n <div class=\"row align-items-center w-100\">\n\n <!-- Always occupy 3 columns for logo -->\n <div class=\"col-md-2 d-none d-md-flex align-items-center\">\n <div>\n <img src=\"/assets/img/landing-page/site-logo.png\"\n [src]=\"logo || '/assets/img/landing-page/site-logo.png'\"\n routerLink=\"/\"\n alt=\"logo\"\n class=\"img-fluid logo_img\"\n width=\"100\"\n height=\"100\"\n loading=\"eager\"\n fetchpriority=\"high\"\n sizes=\"100px\" />\n </div>\n </div>\n\n\n <div class=\"col-md-7 d-flex justify-content-start\">\n <ul #anchorLinks\n class=\"navbar-nav flex gap-4 me-0 wow fadeInUp position-relative\"\n data-wow-duration=\"2s\">\n\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon cursor-pointer text-black me-3\"\n (click)=\"openEditNavbarModal()\"\n (keydown.enter)=\"openEditNavbarModal()\"\n (keydown.space)=\"openEditNavbarModal()\"\n title=\"Edit Navbar Links\"></i>\n <li class=\"nav-item\" *ngFor=\"let item of navbarItems\">\n <div class=\"dropdown-container\"\n (mouseenter)=\"openDropdown(item)\">\n <a\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n [ngClass]=\"{ 'scrolled-nav-link': isScrolled }\"\n (click)=\"item.subtitles?.length ? (item.open = !item.open) : null\"\n [attr.href]=\"!(item.subtitles?.length) ? item.path : null\"\n >\n {{ item?.title }}\n <i *ngIf=\"item.subtitles.length > 0 && item.open\" class=\"fa-solid fa-caret-down\"></i>\n </a>\n <div class=\"popup position-absolute\"\n *ngIf=\"item.subtitles.length > 0 && item.open\">\n <ul>\n <li\n *ngFor=\"let sub of item.subtitles\"\n [routerLink]=\"sub.path\"\n class=\"dropdownItem\"\n (click)=\"onDropdownItemClick(item)\"\n (keydown.enter)=\"onDropdownItemClick(item)\"\n (keydown.space)=\"onDropdownItemClick(item)\"\n >\n {{ sub.title }}\n </li>\n </ul>\n </div>\n </div>\n </li>\n\n <li class=\"nav-item ms-2 mb-3 d-flex d-md-none\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </li>\n </ul>\n </div>\n\n <!-- Always 3 columns for login -->\n <div class=\"col-md-3 d-none d-md-flex justify-content-end\">\n <a class=\"sign-btn sign-header-btn\"\n (click)=\"navigateToLogin()\">Log In</a>\n </div>\n\n </div>\n </div>\n </div>\n</nav>\n\n<ng-template #logoEditModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Logo</h5>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <pw-custom-uploader\n [title]=\"'Main Logo'\"\n [controlName]=\"'logo_main'\"\n [aspectRatio]=\"'fullLogo'\"\n [previewData]=\"{ url: logo, name: 'logo_main.png' }\"\n (saveEvent)=\"onSaveLogo($event)\">\n </pw-custom-uploader>\n </div>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\n\nimport { ResourceHeaderComponent } from './resource-header.component';\nimport { ProfileImageCropperModule } from '../image-cropper/profile-image-cropper.module';\n\n\n/**\n * ResourceHeaderModule - Optimized\n * DragDropModule removed - now lazy-loaded only when edit modal opens\n * This reduces bundle size for landing pages where users aren't logged in\n */\n@NgModule({\n declarations: [ResourceHeaderComponent],\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n ],\n exports: [ResourceHeaderComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class ResourceSharedHeaderModule {}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';\n\n@Component({\n selector: 'pw-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss']\n})\nexport class ProfileImageCropperComponent {\n imageChangedEvent: Event | string = '';\n croppedImage = '';\n\n @Output() imageSelectionEvent: EventEmitter<string> = new EventEmitter<string>();\n @Output() closeEvent: EventEmitter<void> = new EventEmitter<void>();\n @Output() fileChangeEvent: EventEmitter<string> = new EventEmitter<string>();\n\n @Input() aspectRatio = 'auto';\n @Input() dynamicData;\n\n transform: ImageTransform = {};\n canvasRotation = 0;\n showCropper = false;\n\n busy: boolean;\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.imageChangedEvent = event;\n this.fileChangeEvent.emit(input.files[0].name);\n }\n }\n\n imageCropped(event: ImageCroppedEvent) {\n const reader = new FileReader();\n reader.onloadend = () => {\n this.croppedImage = reader.result as string;\n this.cdr.detectChanges();\n };\n reader.readAsDataURL(event.blob);\n }\n\n imageLoaded() {\n this.showCropper = true;\n }\n\n rotateLeft() {\n this.canvasRotation--;\n this.flipAfterRotate();\n }\n\n rotateRight() {\n this.canvasRotation++;\n this.flipAfterRotate();\n }\n\n private flipAfterRotate() {\n const flippedH = this.transform.flipH;\n const flippedV = this.transform.flipV;\n this.transform = {\n ...this.transform,\n flipH: flippedV,\n flipV: flippedH\n };\n }\n\n flipHorizontal() {\n this.transform = {\n ...this.transform,\n flipH: !this.transform.flipH\n };\n }\n\n flipVertical() {\n this.transform = {\n ...this.transform,\n flipV: !this.transform.flipV\n };\n }\n\n saveProfilePicture() {\n if (this.croppedImage) {\n this.imageSelectionEvent.emit(this.croppedImage);\n this.busy = true;\n }\n }\n\n onCloseModal() {\n this.closeEvent.emit();\n }\n}\n","<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label for=\"custom-input\">\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n (keydown.enter)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n (keydown.enter)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n (keydown.enter)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n (keydown.enter)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'rectangular'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"3 / 1\"\n [onlyScaleDown]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'dynamic'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"false\"\n [resizeToWidth]=\"0\"\n [cropperStaticWidth]=\"0\"\n [cropperStaticHeight]=\"0\"\n [cropperMinWidth]=\"10\"\n [cropperMinHeight]=\"10\"\n [onlyScaleDown]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n [imageQuality]=\"100\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [style.display]=\"showCropper ? null : 'none'\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div *ngIf=\"croppedImage\" class=\"col-4 mt-2\">\n <img [src]=\"croppedImage\"\n class=\"cropped-image\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n","import { DOCUMENT } from '@angular/common';\nimport { Component, EventEmitter, Inject, Injector, Input, Output } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-custom-uploader',\n templateUrl: './custom-uploader.component.html',\n styleUrls: ['./custom-uploader.component.scss']\n})\nexport class CustomUploaderComponent extends AppBaseComponent {\n @Output() saveEvent: EventEmitter<{ file: string; name: string }> = new EventEmitter<{\n file: string;\n name: string;\n }>();\n\n @Input() controlName: string;\n\n @Input() previewData: { url: string; name?: string };\n\n @Input() aspectRatio = 'auto';\n\n @Input() title: string;\n\n uploadedFile = null;\n\n selectedFileName: string;\n\n buttonBusy: boolean;\n\n constructor(\n injector: Injector,\n private readonly modalService: NgbModal,\n @Inject(DOCUMENT) private readonly document: Document\n ) {\n super(injector);\n }\n\n deleteExistingFile() {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.previewData = null;\n this.onSaveFile();\n }\n });\n }\n\n onSaveFile() {\n this.buttonBusy = true;\n this.saveEvent.emit({\n file: this.previewData?.url ? this.previewData : this.uploadedFile,\n name: this.controlName\n });\n }\n\n // modal image cropper\n\n onFileChange(value) {\n this.selectedFileName = value;\n }\n\n private dataURLtoBlob(dataUrl: string) {\n const arr = dataUrl?.split(',');\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n // eslint-disable-next-line no-plusplus\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const file: File = new File([blob], this.selectedFileName);\n this.uploadedFile = file;\n this.onSaveFile();\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n clearValues() {\n this.uploadedFile = null;\n this.selectedFileName = null;\n this.updateHeight();\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n updateHeight() {\n // wait for update card height\n setTimeout(() => {\n this.onImgChange();\n });\n }\n\n onImgChange(event?: Event) {\n if (event) {\n const target = event.target as HTMLImageElement;\n target.src = 'assets/img/icons/imagenotavailable.png';\n }\n const el = this.document.querySelectorAll(\n 'pw-domain-config-interface,pw-domain-config-build div[matchheight=\"card\"]'\n );\n el.forEach((item: Element) => {\n HelperService.matchHeights(item as HTMLElement, 'card');\n });\n }\n}\n","<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\n\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { ButtonModule } from 'primeng/button';\n\nimport { CustomUploaderComponent } from '../custom-uploader/custom-uploader.component';\n\nimport { ProfileImageCropperComponent } from './image-cropper.component';\n\n/**\n * Lightweight module for pw-image-cropper component\n *\n * Minimal dependencies - only CommonModule, ImageCropperModule, DirectivesModule\n * Use this instead of ResourceSharedComponentsModule when you only need image cropping\n */\n@NgModule({\n declarations: [ProfileImageCropperComponent, CustomUploaderComponent],\n imports: [\n CommonModule,\n CoreTranslocoModule,\n ButtonModule,\n ImageCropperModule, // for <image-cropper>\n DirectivesModule // for [buttonBusy] directive\n ],\n exports: [ProfileImageCropperComponent, CustomUploaderComponent]\n})\nexport class ProfileImageCropperModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FieldErrorDisplayComponent } from './field-error-display.component';\n\n/**\n * Standalone module for FieldErrorDisplayComponent.\n * Import this lightweight module instead of SharedComponentsModule\n * when you only need field error display functionality.\n */\n@NgModule({\n declarations: [FieldErrorDisplayComponent],\n imports: [CommonModule],\n exports: [FieldErrorDisplayComponent]\n})\nexport class FieldErrorDisplayModule {}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\nimport { Trial4ContactUsComponent } from \"./resource-contact-us.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { FieldErrorDisplayModule } from \"../field-error-display/field-error-display.module\";\nimport { DropdownModule } from \"primeng/dropdown\";\nimport { NgxCaptchaModule } from \"ngx-captcha\";\nimport { RouterModule } from \"@angular/router\";\nimport { PipesModule } from \"@posiwise/pipes\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { CoreTranslocoModule } from \"@posiwise/core-transloco\";\nimport { AdminModuleUtilsModule } from \"@posiwise/admin-module-utils\";\nimport { DirectivesModule } from \"@posiwise/directives\";\n\n@NgModule({\n declarations: [Trial4ContactUsComponent],\n imports: [CommonModule, FieldErrorDisplayModule, DropdownModule,ReactiveFormsModule, NgxCaptchaModule, RouterModule, PipesModule, FormsModule, CoreTranslocoModule, AdminModuleUtilsModule, DirectivesModule],\n exports: [Trial4ContactUsComponent, CommonModule, FieldErrorDisplayModule, DropdownModule,ReactiveFormsModule, NgxCaptchaModule, RouterModule, PipesModule, FormsModule, CoreTranslocoModule, AdminModuleUtilsModule, DirectivesModule],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n })\n export class Trial4ContactUsComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i8.FieldErrorDisplayComponent","i2","i3","i4","i5.ProfileImageCropperComponent","i6"],"mappings":"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"}
|