@posiwise/resource-contact-us 0.0.14 → 0.0.16
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/fesm2022/posiwise-resource-contact-us.mjs +50 -28
- package/fesm2022/posiwise-resource-contact-us.mjs.map +1 -1
- package/package.json +5 -5
- package/{lib/resource-contact-us/resource-contact-us.component.d.ts → types/posiwise-resource-contact-us.d.ts} +67 -6
- package/index.d.ts +0 -5
- package/lib/demo-cards/demo-cards.component.d.ts +0 -33
- package/lib/demo-cards/demo-cards.module.d.ts +0 -14
- package/lib/resource-contact-us/resource-contact-us.module.d.ts +0 -17
- package/lib/shared/resource-modal.interface.d.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posiwise-resource-contact-us.mjs","sources":["../../../../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-contact-us/resource-contact-us.module.ts","../../../../libs/resource-contact-us/src/lib/demo-cards/demo-cards.component.ts","../../../../libs/resource-contact-us/src/lib/demo-cards/demo-cards.component.html","../../../../libs/resource-contact-us/src/lib/demo-cards/demo-cards.module.ts","../../../../libs/resource-contact-us/src/posiwise-resource-contact-us.ts"],"sourcesContent":["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 { CrmService } from '@posiwise/smart-crm-shared';\nimport { CustomUploaderComponent } from '@posiwise/utils';\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\n standalone: false\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 private heightCheckTimeout;\n private hubspotReadyTimeout;\n\n // Footer is always visible to prevent layout shift\n // Removed IntersectionObserver lazy loading\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 // Defer Hubspot ready state to avoid blocking initial render\n // Use requestIdleCallback if available, otherwise setTimeout with longer delay\n if ('requestIdleCallback' in window) {\n requestIdleCallback(\n () => {\n setTimeout(() => (this.isHubspotReady = true), 0);\n this.cdr.markForCheck();\n },\n { timeout: 2000 }\n );\n } else {\n setTimeout(() => {\n this.isHubspotReady = true;\n this.cdr.markForCheck();\n }, 2000);\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 this.cdr.markForCheck();\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 // Defer iframe watching to avoid blocking initial render\n // Use requestIdleCallback or setTimeout to defer to next event loop\n if ('requestIdleCallback' in window) {\n requestIdleCallback(\n () => {\n this.watchIframeHeightChange();\n },\n { timeout: 1000 }\n );\n } else {\n setTimeout(() => {\n this.watchIframeHeightChange();\n }, 0);\n }\n // Removed IntersectionObserver to prevent layout shift\n // Footer is now visible immediately, space is reserved via CSS min-height\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\n // Use requestAnimationFrame for better performance instead of setInterval\n // This reduces blocking time and is more efficient\n let lastHeight = 0;\n let checkCount = 0;\n const maxChecks = 20; // Stop after ~10 seconds (20 * 500ms)\n\n const checkHeight = () => {\n checkCount++;\n const newHeight = iframe['offsetHeight'];\n if (newHeight === 250 && newHeight !== lastHeight) {\n this.callAbTestFinish();\n return; // Stop checking once target height is reached\n }\n lastHeight = newHeight;\n // Check less frequently (every ~500ms equivalent) using requestAnimationFrame\n // Only continue if height hasn't reached target and we haven't exceeded max checks\n if (newHeight !== 250 && checkCount < maxChecks) {\n this.heightCheckTimeout = setTimeout(() => {\n requestAnimationFrame(checkHeight);\n }, 500);\n }\n };\n\n // Start checking after a short delay to avoid blocking initial render\n this.heightCheckTimeout = setTimeout(() => {\n requestAnimationFrame(checkHeight);\n }, 100);\n }\n\n override ngOnDestroy() {\n // Clean up timeouts to prevent memory leaks\n if (this.heightCheckTimeout) {\n clearTimeout(this.heightCheckTimeout);\n }\n if (this.hubspotReadyTimeout) {\n clearTimeout(this.hubspotReadyTimeout);\n }\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 // Defer layout recalculation to avoid blocking\n if ('requestIdleCallback' in window) {\n requestIdleCallback(() => {\n window.dispatchEvent(new Event('resize'));\n });\n } else {\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n }\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 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","<section #footerSection class=\"bg-black text-white py-5 footer-section\">\n <div class=\"container\">\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 id=\"input_editingEmail_7936\" name=\"input_editingEmail_7936\" />\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\" id=\"input_editingStreet_4768\" name=\"input_editingStreet_4768\" />\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\">\n <ng-container *ngIf=\"getFooterHubspotForm() as footerItem; else defaultForm\">\n <div class=\"d-flex\">\n <div\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\" name=\"input_email_3\"/>\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\" name=\"input_first_name_4\"/>\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\" name=\"input_last_name_5\"/>\n </div>\n <div class=\"form-field\">\n <label for=\"company\">Company:</label>\n <input type=\"text\"\n id=\"company\"\n formControlName=\"company\" name=\"input_company_6\"/>\n </div>\n <div class=\"form-field\" *ngIf=\"hasValidOptions()\">\n <label id=\"resource-contact-psa-label\" class=\"select-label\">{{question}}</label>\n <p-select\n [attr.aria-labelledby]=\"'resource-contact-psa-label'\"\n formControlName=\"psa\"\n [options]=\"psaOptions\"\n [placeholder]=\"'Select PSA'\"\n styleClass=\"input-select\">\n </p-select>\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\" name=\"input_footer.title_7\"/>\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\" name=\"input_footer.path_8\"/>\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\" name=\"input_sub.title_9\"/>\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\" name=\"input_sub.path_10\"/>\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\" name=\"input_editingHubspotId_11\"/>\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\" name=\"input_editingYoutubeUrl_12\"/>\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\" name=\"input_editingLinkedInUrl_13\"/>\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\" name=\"input_editingCompanyName_14\"/>\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\" name=\"input_q.question_15\"/>\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\" name=\"input_opt.option_16\"/>\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 { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, 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 } from '@posiwise/utils';\n\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { SelectModule } from 'primeng/select';\n\nimport { Trial4ContactUsComponent } from './resource-contact-us.component';\n\n@NgModule({\n declarations: [Trial4ContactUsComponent],\n imports: [\n CommonModule,\n FieldErrorDisplayModule,\n SelectModule,\n ReactiveFormsModule,\n NgxCaptchaModule,\n RouterModule,\n PipesModule,\n FormsModule,\n CoreTranslocoModule,\n AdminModuleUtilsModule,\n DirectivesModule\n ],\n exports: [\n Trial4ContactUsComponent,\n CommonModule,\n FieldErrorDisplayModule,\n SelectModule,\n ReactiveFormsModule,\n NgxCaptchaModule,\n RouterModule,\n PipesModule,\n FormsModule,\n CoreTranslocoModule,\n AdminModuleUtilsModule,\n DirectivesModule\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class Trial4SharedContactUsModule {}\n","import { moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n Component,\n Injector,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\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';\nimport { CustomUploaderComponent } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-demo-card',\n templateUrl: './demo-cards.component.html',\n styleUrls: ['./demo-cards.component.scss'],\n\n standalone: false\n})\nexport class DemoCardsComponent extends AppBaseComponent implements OnInit, OnChanges {\n @Input() user: User;\n @Input() userLoggedIn: boolean;\n\n bookingLinks;\n editingBookingLinks = [];\n\n domainId = this.appConfig?.domain_id;\n subscriptionId: string;\n\n canEditResourcesValue;\n\n @ViewChild('editBookLinksModal', { static: true })\n editBookLinksModal!: TemplateRef<CustomUploaderComponent>;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n private readonly modalService: NgbModal,\n private readonly adminService: AdminService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n });\n }\n\n this.bookingLinks = (this.appConfig?.pages_config?.book_demo?.items ?? [])\n .filter(link => link?.url)\n .map(link => ({\n ...link,\n // NOSONAR: Trusted iframe URL content is handled safely here\n url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR\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 openEditBookLinks(modal) {\n this.editingBookingLinks = JSON.parse(\n JSON.stringify(this.appConfig?.pages_config?.book_demo?.items ?? [])\n );\n this.modalService.open(modal, { size: 'lg', centered: true, windowClass: 'modal-holder' });\n }\n\n addBookingLink() {\n this.editingBookingLinks.push({ title: '', url: '' });\n }\n\n removeBookDemoLink(i: number) {\n this.editingBookingLinks.splice(i, 1);\n }\n\n dropBookingLink(event) {\n moveItemInArray(this.editingBookingLinks, event.previousIndex, event.currentIndex);\n }\n\n saveBookingLinks(modal) {\n this.adminService\n .updateDomainConfig(this.domainId, {\n book_demo: {\n ...this.appConfig?.pages_config?.book_demo,\n items: this.editingBookingLinks\n },\n subscription_id: this.subscriptionId\n })\n .subscribe(() => {\n this.toast.success('Booking links updated');\n this.bookingLinks = this.editingBookingLinks\n .filter(link => link?.url)\n .map(link => ({\n ...link,\n // NOSONAR: Trusted iframe URL content is handled safely here\n url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR\n }));\n this.appConfig.pages_config.book_demo.items = [...this.editingBookingLinks]; // ✅ Like CTAs\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","<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"canEditResourcesValue\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\" *ngIf=\"link?.url && link?.title\">{{ link?.title }}</h5>\n <iframe *ngIf=\"link?.url\"\n [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" name=\"input_item.title_1\"/>\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" name=\"input_item.url_2\"/>\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AdminModuleUtilsModule } from '@posiwise/admin-module-utils';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\n\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { DemoCardsComponent } from './demo-cards.component';\n\n@NgModule({\n declarations: [DemoCardsComponent],\n imports: [\n CommonModule,\n FormsModule,\n DragDropModule,\n NgbModalModule,\n DirectivesModule,\n PipesModule,\n AdminModuleUtilsModule\n ],\n exports: [DemoCardsComponent]\n})\nexport class DemoCardsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"posiwise-resource-contact-us.mjs","sources":["../../../../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-contact-us/resource-contact-us.module.ts","../../../../libs/resource-contact-us/src/lib/demo-cards/demo-cards.component.ts","../../../../libs/resource-contact-us/src/lib/demo-cards/demo-cards.component.html","../../../../libs/resource-contact-us/src/lib/demo-cards/demo-cards.module.ts","../../../../libs/resource-contact-us/src/posiwise-resource-contact-us.ts"],"sourcesContent":["import { moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DOCUMENT,\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 { CrmService } from '@posiwise/smart-crm-shared';\nimport { CustomUploaderComponent } from '@posiwise/utils';\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\n standalone: false\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 private heightCheckTimeout;\n private hubspotReadyTimeout;\n\n // Footer is always visible to prevent layout shift\n // Removed IntersectionObserver lazy loading\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 // Defer Hubspot ready state to avoid blocking initial render\n // Use requestIdleCallback if available, otherwise setTimeout with longer delay\n if ('requestIdleCallback' in window) {\n requestIdleCallback(\n () => {\n setTimeout(() => (this.isHubspotReady = true), 0);\n this.cdr.markForCheck();\n },\n { timeout: 2000 }\n );\n } else {\n setTimeout(() => {\n this.isHubspotReady = true;\n this.cdr.markForCheck();\n }, 2000);\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\n });\n }\n\n saveQuestions(modal): void {\n const normalizedQuestions = (this.editingQuestions ?? []).map(question => ({\n question: question?.question ?? '',\n options: (question?.options ?? [])\n .filter(option => option?.option?.trim())\n .map(option => ({ option: option.option }))\n }));\n\n const updateData = {\n contact_us: {\n description: this.appConfig?.pages_config?.contact_us?.description ?? '',\n url: this.appConfig?.pages_config?.contact_us?.url ?? '',\n hubspot: this.appConfig?.pages_config?.contact_us?.hubspot ?? [],\n questions: normalizedQuestions\n },\n subscription_id: this.id\n };\n\n this.adminService.updateDomainConfig(this.domainId, updateData).subscribe(() => {\n this.questions = normalizedQuestions;\n this.toast.success('Questions updated');\n this.question = normalizedQuestions?.[0]?.question;\n if (normalizedQuestions?.[0]?.options?.length > 0) {\n this.psaOptions = [\n { label: 'Select PSA', value: '' },\n ...(normalizedQuestions?.[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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\n });\n }\n\n hasValidOptions(): boolean {\n return this.questions?.[0]?.options?.some(opt => opt.option?.trim());\n }\n\n ngAfterViewInit() {\n // Defer iframe watching to avoid blocking initial render\n // Use requestIdleCallback or setTimeout to defer to next event loop\n if ('requestIdleCallback' in window) {\n requestIdleCallback(\n () => {\n this.watchIframeHeightChange();\n },\n { timeout: 1000 }\n );\n } else {\n setTimeout(() => {\n this.watchIframeHeightChange();\n }, 0);\n }\n // Removed IntersectionObserver to prevent layout shift\n // Footer is now visible immediately, space is reserved via CSS min-height\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\n // Use requestAnimationFrame for better performance instead of setInterval\n // This reduces blocking time and is more efficient\n let lastHeight = 0;\n let checkCount = 0;\n const maxChecks = 20; // Stop after ~10 seconds (20 * 500ms)\n\n const checkHeight = () => {\n checkCount++;\n const newHeight = iframe['offsetHeight'];\n if (newHeight === 250 && newHeight !== lastHeight) {\n this.callAbTestFinish();\n return; // Stop checking once target height is reached\n }\n lastHeight = newHeight;\n // Check less frequently (every ~500ms equivalent) using requestAnimationFrame\n // Only continue if height hasn't reached target and we haven't exceeded max checks\n if (newHeight !== 250 && checkCount < maxChecks) {\n this.heightCheckTimeout = setTimeout(() => {\n requestAnimationFrame(checkHeight);\n }, 500);\n }\n };\n\n // Start checking after a short delay to avoid blocking initial render\n this.heightCheckTimeout = setTimeout(() => {\n requestAnimationFrame(checkHeight);\n }, 100);\n }\n\n override ngOnDestroy() {\n // Clean up timeouts to prevent memory leaks\n if (this.heightCheckTimeout) {\n clearTimeout(this.heightCheckTimeout);\n }\n if (this.hubspotReadyTimeout) {\n clearTimeout(this.hubspotReadyTimeout);\n }\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 // Defer layout recalculation to avoid blocking\n if ('requestIdleCallback' in window) {\n requestIdleCallback(() => {\n window.dispatchEvent(new Event('resize'));\n });\n } else {\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 100);\n }\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\n });\n } else {\n Swal.fire(resp.message);\n }\n }\n this.form.reset();\n this.isCaptchaVerified = false;\n this.cdr.markForCheck();\n });\n }\n this.cdr.markForCheck();\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 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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\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","<section #footerSection class=\"bg-black text-white py-5 footer-section\">\n <div class=\"container\">\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 @if (canEditResourcesValue) {\n <i 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 }\n </h3>\n <ul class=\"mt-4\">\n <li routerLink=\"/\"\n class=\"cursor-pointer user-info-label link-label\"> Home </li>\n @for (link of footerLinks; track link) {\n <li [routerLink]=\"link?.path\"\n class=\"cursor-pointer user-info-label link-label mt-4\">@if (link?.title) {\n <span >{{link?.title}}</span>\n } </li>\n }\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 @if (!isEditingEmail) {\n <span class=\"user-info\">{{ email }}</span>\n @if (canEditResourcesValue) {\n <i 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 }\n } @else {\n <input\n class=\"form-control d-inline w-auto\"\n [(ngModel)]=\"editingEmail\"\n id=\"input_editingEmail_7936\" name=\"input_editingEmail_7936\" />\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 }\n\n </p>\n <span class=\"email-section mt-3 address-text\">\n <span class=\"user-info-label\">\n Address:\n @if (canEditResourcesValue) {\n <i\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 }\n </span><br/>\n\n @if (!isEditingStreet) {\n <span class=\"address-text user-info\">{{ street }}</span>\n } @else {\n <div class=\"d-flex align-items-center mt-3\">\n <input class=\"form-control form-control-sm\" [(ngModel)]=\"editingStreet\" id=\"input_editingStreet_4768\" name=\"input_editingStreet_4768\" />\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 }\n\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 @if (canEditResourcesValue) {\n <i\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 }\n </div>\n </div>\n\n <!-- RIGHT COLUMN -->\n <div class=\"col-md-6\">\n @if (getFooterHubspotForm(); as footerItem) {\n <div class=\"d-flex\">\n <div\n class=\"hubspot-container w-100 content-loaded\"\n [innerHTML]=\"hubspotHtml\"\n (load)=\"onHubspotLoad($event)\">\n </div>\n @if (canEditResourcesValue) {\n <i\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 }\n </div>\n } @else {\n <div class=\"d-flex\">\n <h3 class=\"text-white mb-4\"> <span class=\"text-white\">Get in touch:</span></h3>\n @if (canEditResourcesValue) {\n <i\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 }\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\" name=\"input_email_3\"/>\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\" name=\"input_first_name_4\"/>\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\" name=\"input_last_name_5\"/>\n </div>\n <div class=\"form-field\">\n <label for=\"company\">Company:</label>\n <input type=\"text\"\n id=\"company\"\n formControlName=\"company\" name=\"input_company_6\"/>\n </div>\n @if (hasValidOptions()) {\n <div class=\"form-field\">\n <span id=\"resource-contact-psa-label\" class=\"select-label pw-label-style\">{{question}}</span>\n <p-select\n [attr.aria-labelledby]=\"'resource-contact-psa-label'\"\n formControlName=\"psa\"\n [options]=\"psaOptions\"\n [placeholder]=\"'Select PSA'\"\n styleClass=\"input-select\">\n </p-select>\n </div>\n }\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 @if (isCaptchaVerified) {\n <div class=\"captcha-wrapper-container\"\n >\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 }\n @if (!isCaptchaVerified) {\n <button type=\"submit\"\n (click)=\"onSubmit()\"\n class=\"sign-btn sign-header-btn mt-3\">\n {{ 'Button.Submit' | transloco }}\n </button>\n }\n </div>\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 @if (canEditResourcesValue) {\n <i\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 }\n </div>\n <div class=\"copyright text-white\">\n 2025 {{companyName}}.\n </div>\n </div>\n </form>\n </div>\n }\n\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 @for (footer of editingFooterLinks.items; track footer; let i = $index) {\n <div 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\" name=\"input_footer.title_7\"/>\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\" name=\"input_footer.path_8\"/>\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 <!-- Subtitles -->\n <div cdkDropList (cdkDropListDropped)=\"dropSubtitles(i, $event)\">\n @for (sub of footer.subtitles; track sub; let j = $index) {\n <div 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\" name=\"input_sub.title_9\"/>\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\" name=\"input_sub.path_10\"/>\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 }\n </div>\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addSubtitle(i)\">\n + Add Subtitle\n </button>\n </div>\n }\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\" name=\"input_editingHubspotId_11\"/>\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\" name=\"input_editingYoutubeUrl_12\"/>\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\" name=\"input_editingLinkedInUrl_13\"/>\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\" name=\"input_editingCompanyName_14\"/>\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 @for (q of editingQuestions; track q; let i = $index) {\n <div 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\" name=\"input_q.question_15\"/>\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 <!-- Options Section -->\n <div cdkDropList (cdkDropListDropped)=\"dropQuestionOptions(i, $event)\">\n @for (opt of q.options; track opt; let j = $index) {\n <div 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\" name=\"input_opt.option_16\"/>\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 }\n </div>\n <button class=\"btn btn-outline-primary btn-sm mt-2\" (click)=\"addQuestionOption(i)\">+ Add Option</button>\n </div>\n }\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 { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, 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 } from '@posiwise/utils';\n\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { SelectModule } from 'primeng/select';\n\nimport { Trial4ContactUsComponent } from './resource-contact-us.component';\n\n@NgModule({\n declarations: [Trial4ContactUsComponent],\n imports: [\n CommonModule,\n FieldErrorDisplayModule,\n SelectModule,\n ReactiveFormsModule,\n NgxCaptchaModule,\n RouterModule,\n PipesModule,\n FormsModule,\n CoreTranslocoModule,\n AdminModuleUtilsModule,\n DirectivesModule\n ],\n exports: [\n Trial4ContactUsComponent,\n CommonModule,\n FieldErrorDisplayModule,\n SelectModule,\n ReactiveFormsModule,\n NgxCaptchaModule,\n RouterModule,\n PipesModule,\n FormsModule,\n CoreTranslocoModule,\n AdminModuleUtilsModule,\n DirectivesModule\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class Trial4SharedContactUsModule {}\n","import { moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\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';\nimport { CustomUploaderComponent } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-demo-card',\n templateUrl: './demo-cards.component.html',\n styleUrls: ['./demo-cards.component.scss'],\n\n standalone: false\n})\nexport class DemoCardsComponent extends AppBaseComponent implements OnInit, OnChanges {\n @Input() user: User;\n @Input() userLoggedIn: boolean;\n\n bookingLinks;\n editingBookingLinks = [];\n\n domainId = this.appConfig?.domain_id;\n subscriptionId: string;\n\n canEditResourcesValue;\n\n @ViewChild('editBookLinksModal', { static: true })\n editBookLinksModal!: TemplateRef<CustomUploaderComponent>;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n private readonly modalService: NgbModal,\n private readonly adminService: AdminService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n this.cdr.markForCheck();\n });\n }\n\n this.bookingLinks = (this.appConfig?.pages_config?.book_demo?.items ?? [])\n .filter(link => link?.url)\n .map(link => ({\n ...link,\n // NOSONAR: Trusted iframe URL content is handled safely here\n url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR\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 openEditBookLinks(modal) {\n this.editingBookingLinks = JSON.parse(\n JSON.stringify(this.appConfig?.pages_config?.book_demo?.items ?? [])\n );\n this.modalService.open(modal, { size: 'lg', centered: true, windowClass: 'modal-holder' });\n }\n\n addBookingLink() {\n this.editingBookingLinks.push({ title: '', url: '' });\n }\n\n removeBookDemoLink(i: number) {\n this.editingBookingLinks.splice(i, 1);\n }\n\n dropBookingLink(event) {\n moveItemInArray(this.editingBookingLinks, event.previousIndex, event.currentIndex);\n }\n\n saveBookingLinks(modal) {\n this.adminService\n .updateDomainConfig(this.domainId, {\n book_demo: {\n ...this.appConfig?.pages_config?.book_demo,\n items: this.editingBookingLinks\n },\n subscription_id: this.subscriptionId\n })\n .subscribe(() => {\n this.toast.success('Booking links updated');\n this.bookingLinks = this.editingBookingLinks\n .filter(link => link?.url)\n .map(link => ({\n ...link,\n // NOSONAR: Trusted iframe URL content is handled safely here\n url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR\n }));\n this.appConfig.pages_config.book_demo.items = [...this.editingBookingLinks]; // ✅ Like CTAs\n modal.close();\n this.cdr.markForCheck();\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","<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n @if (canEditResourcesValue) {\n <i\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n }\n @for (link of bookingLinks; track link) {\n <div class=\"col-md-6 col-lg-4\">\n @if (link?.url && link?.title) {\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n }\n @if (link?.url) {\n <iframe\n [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n }\n </div>\n }\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n @for (item of editingBookingLinks; track item; let i = $index) {\n <div class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" name=\"input_item.title_1\"/>\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" name=\"input_item.url_2\"/>\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n }\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AdminModuleUtilsModule } from '@posiwise/admin-module-utils';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\n\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { DemoCardsComponent } from './demo-cards.component';\n\n@NgModule({\n declarations: [DemoCardsComponent],\n imports: [\n CommonModule,\n FormsModule,\n DragDropModule,\n NgbModalModule,\n DirectivesModule,\n PipesModule,\n AdminModuleUtilsModule\n ],\n exports: [DemoCardsComponent]\n})\nexport class DemoCardsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posiwise/resource-contact-us",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
5
|
+
"@angular/common": "^21.2.6",
|
|
6
|
+
"@angular/core": "^21.2.6"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"tslib": "^2.6.2"
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": false,
|
|
12
12
|
"module": "fesm2022/posiwise-resource-contact-us.mjs",
|
|
13
|
-
"typings": "
|
|
13
|
+
"typings": "types/posiwise-resource-contact-us.d.ts",
|
|
14
14
|
"exports": {
|
|
15
15
|
"./package.json": {
|
|
16
16
|
"default": "./package.json"
|
|
17
17
|
},
|
|
18
18
|
".": {
|
|
19
|
-
"types": "./
|
|
19
|
+
"types": "./types/posiwise-resource-contact-us.d.ts",
|
|
20
20
|
"default": "./fesm2022/posiwise-resource-contact-us.mjs"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,16 +1,35 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, AfterViewInit, OnChanges, OnDestroy, ElementRef, TemplateRef, Injector, ChangeDetectorRef, SimpleChanges } from '@angular/core';
|
|
3
|
+
import * as i5 from '@angular/forms';
|
|
4
|
+
import { UntypedFormGroup, UntypedFormBuilder } from '@angular/forms';
|
|
3
5
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
6
|
+
import * as i10 from '@posiwise/admin-module-utils';
|
|
4
7
|
import { AdminService } from '@posiwise/admin-module-utils';
|
|
5
8
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
6
|
-
import {
|
|
9
|
+
import { AuthService, AbTestService } from '@posiwise/common-services';
|
|
7
10
|
import { User } from '@posiwise/common-utilities';
|
|
8
11
|
import { CrmService } from '@posiwise/smart-crm-shared';
|
|
12
|
+
import * as i3 from '@posiwise/utils';
|
|
9
13
|
import { CustomUploaderComponent } from '@posiwise/utils';
|
|
14
|
+
import * as i5$1 from '@ng-bootstrap/ng-bootstrap';
|
|
10
15
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
11
|
-
import
|
|
12
|
-
import * as
|
|
13
|
-
|
|
16
|
+
import * as i2 from '@angular/common';
|
|
17
|
+
import * as i4 from 'primeng/select';
|
|
18
|
+
import * as i6 from 'ngx-captcha';
|
|
19
|
+
import * as i7 from '@angular/router';
|
|
20
|
+
import * as i8 from '@posiwise/pipes';
|
|
21
|
+
import * as i9 from '@posiwise/core-transloco';
|
|
22
|
+
import * as i11 from '@posiwise/directives';
|
|
23
|
+
import * as i4$1 from '@angular/cdk/drag-drop';
|
|
24
|
+
|
|
25
|
+
interface ResourceModalContext {
|
|
26
|
+
modal: {
|
|
27
|
+
dismiss: () => void;
|
|
28
|
+
close: () => void;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
declare class Trial4ContactUsComponent extends AppBaseComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {
|
|
14
33
|
private readonly fb;
|
|
15
34
|
private readonly authService;
|
|
16
35
|
private readonly crmService;
|
|
@@ -124,3 +143,45 @@ export declare class Trial4ContactUsComponent extends AppBaseComponent implement
|
|
|
124
143
|
static ɵfac: i0.ɵɵFactoryDeclaration<Trial4ContactUsComponent, never>;
|
|
125
144
|
static ɵcmp: i0.ɵɵComponentDeclaration<Trial4ContactUsComponent, "pw-trial-4-contact-us", never, { "subscriptionId": { "alias": "subscriptionId"; "required": false; }; "sourceId": { "alias": "sourceId"; "required": false; }; "masterSubscriptionId": { "alias": "masterSubscriptionId"; "required": false; }; "experimentName": { "alias": "experimentName"; "required": false; }; "microserviceName": { "alias": "microserviceName"; "required": false; }; "shardName": { "alias": "shardName"; "required": false; }; "user": { "alias": "user"; "required": false; }; "userLoggedIn": { "alias": "userLoggedIn"; "required": false; }; }, {}, never, never, false, never>;
|
|
126
145
|
}
|
|
146
|
+
|
|
147
|
+
declare class Trial4SharedContactUsModule {
|
|
148
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Trial4SharedContactUsModule, never>;
|
|
149
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<Trial4SharedContactUsModule, [typeof Trial4ContactUsComponent], [typeof i2.CommonModule, typeof i3.FieldErrorDisplayModule, typeof i4.SelectModule, typeof i5.ReactiveFormsModule, typeof i6.NgxCaptchaModule, typeof i7.RouterModule, typeof i8.PipesModule, typeof i5.FormsModule, typeof i9.CoreTranslocoModule, typeof i10.AdminModuleUtilsModule, typeof i11.DirectivesModule], [typeof Trial4ContactUsComponent, typeof i2.CommonModule, typeof i3.FieldErrorDisplayModule, typeof i4.SelectModule, typeof i5.ReactiveFormsModule, typeof i6.NgxCaptchaModule, typeof i7.RouterModule, typeof i8.PipesModule, typeof i5.FormsModule, typeof i9.CoreTranslocoModule, typeof i10.AdminModuleUtilsModule, typeof i11.DirectivesModule]>;
|
|
150
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<Trial4SharedContactUsModule>;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
declare class DemoCardsComponent extends AppBaseComponent implements OnInit, OnChanges {
|
|
154
|
+
private readonly sanitizer;
|
|
155
|
+
private readonly modalService;
|
|
156
|
+
private readonly adminService;
|
|
157
|
+
private readonly cdr;
|
|
158
|
+
user: User;
|
|
159
|
+
userLoggedIn: boolean;
|
|
160
|
+
bookingLinks: any;
|
|
161
|
+
editingBookingLinks: any[];
|
|
162
|
+
domainId: any;
|
|
163
|
+
subscriptionId: string;
|
|
164
|
+
canEditResourcesValue: any;
|
|
165
|
+
editBookLinksModal: TemplateRef<CustomUploaderComponent>;
|
|
166
|
+
constructor(sanitizer: DomSanitizer, modalService: NgbModal, adminService: AdminService, injector: Injector, cdr: ChangeDetectorRef);
|
|
167
|
+
ngOnInit(): void;
|
|
168
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
169
|
+
openEditBookLinks(modal: any): void;
|
|
170
|
+
addBookingLink(): void;
|
|
171
|
+
removeBookDemoLink(i: number): void;
|
|
172
|
+
dropBookingLink(event: any): void;
|
|
173
|
+
saveBookingLinks(modal: any): void;
|
|
174
|
+
private updateCanEditResourcesValue;
|
|
175
|
+
canEditResources(): boolean;
|
|
176
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DemoCardsComponent, never>;
|
|
177
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DemoCardsComponent, "pw-demo-card", never, { "user": { "alias": "user"; "required": false; }; "userLoggedIn": { "alias": "userLoggedIn"; "required": false; }; }, {}, never, never, false, never>;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
declare class DemoCardsModule {
|
|
181
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DemoCardsModule, never>;
|
|
182
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DemoCardsModule, [typeof DemoCardsComponent], [typeof i2.CommonModule, typeof i5.FormsModule, typeof i4$1.DragDropModule, typeof i5$1.NgbModalModule, typeof i11.DirectivesModule, typeof i8.PipesModule, typeof i10.AdminModuleUtilsModule], [typeof DemoCardsComponent]>;
|
|
183
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DemoCardsModule>;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export { DemoCardsComponent, DemoCardsModule, Trial4ContactUsComponent, Trial4SharedContactUsModule };
|
|
187
|
+
export type { ResourceModalContext };
|
package/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './lib/resource-contact-us/resource-contact-us.component';
|
|
2
|
-
export * from './lib/shared/resource-modal.interface';
|
|
3
|
-
export * from './lib/resource-contact-us/resource-contact-us.module';
|
|
4
|
-
export * from './lib/demo-cards/demo-cards.component';
|
|
5
|
-
export * from './lib/demo-cards/demo-cards.module';
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Injector, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
|
|
2
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
-
import { AdminService } from '@posiwise/admin-module-utils';
|
|
4
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
5
|
-
import { User } from '@posiwise/common-utilities';
|
|
6
|
-
import { CustomUploaderComponent } from '@posiwise/utils';
|
|
7
|
-
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export declare class DemoCardsComponent extends AppBaseComponent implements OnInit, OnChanges {
|
|
10
|
-
private readonly sanitizer;
|
|
11
|
-
private readonly modalService;
|
|
12
|
-
private readonly adminService;
|
|
13
|
-
user: User;
|
|
14
|
-
userLoggedIn: boolean;
|
|
15
|
-
bookingLinks: any;
|
|
16
|
-
editingBookingLinks: any[];
|
|
17
|
-
domainId: any;
|
|
18
|
-
subscriptionId: string;
|
|
19
|
-
canEditResourcesValue: any;
|
|
20
|
-
editBookLinksModal: TemplateRef<CustomUploaderComponent>;
|
|
21
|
-
constructor(sanitizer: DomSanitizer, modalService: NgbModal, adminService: AdminService, injector: Injector);
|
|
22
|
-
ngOnInit(): void;
|
|
23
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
24
|
-
openEditBookLinks(modal: any): void;
|
|
25
|
-
addBookingLink(): void;
|
|
26
|
-
removeBookDemoLink(i: number): void;
|
|
27
|
-
dropBookingLink(event: any): void;
|
|
28
|
-
saveBookingLinks(modal: any): void;
|
|
29
|
-
private updateCanEditResourcesValue;
|
|
30
|
-
canEditResources(): boolean;
|
|
31
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DemoCardsComponent, never>;
|
|
32
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DemoCardsComponent, "pw-demo-card", never, { "user": { "alias": "user"; "required": false; }; "userLoggedIn": { "alias": "userLoggedIn"; "required": false; }; }, {}, never, never, false, never>;
|
|
33
|
-
}
|