Files
web/apps/scandic-web/components/Blocks/Jotform/index.tsx
Bianca Widstam 1dce74c95f Merged in feat/BOOK-591-jotform (pull request #3350)
Feat/BOOK-591 jotform

* feat(BOOK-591): create jotform

* feat(BOOK-591): jotform

* feat(BOOK-591): jotform

* fix(BOOK-591): add embedhandler

* feat(BOOK-591): refactor jotform

* feat(BOOK-591): remove inline styles

* feat(BOOK-591): remove typename

* feat(BOOK-591): add jotformembedhandler


Approved-by: Erik Tiekstra
2025-12-16 14:35:45 +00:00

59 lines
1.4 KiB
TypeScript

"use client"
import Script from "next/script"
import { useEffect, useRef, useState } from "react"
import useLang from "@/hooks/useLang"
import styles from "./jotform.module.css"
type JotformProps = {
formId: string | null | undefined
}
export default function Jotform({ formId }: JotformProps) {
const lang = useLang()
const [scriptInitialized, setScriptInitialized] = useState(
() =>
typeof window !== "undefined" &&
typeof window.jotformEmbedHandler === "function"
)
const componentInitialized = useRef(false)
useEffect(() => {
if (
formId &&
scriptInitialized &&
!componentInitialized.current &&
window.jotformEmbedHandler
) {
window.jotformEmbedHandler(
`iframe[id='JotFormIFrame-${formId}']`,
"https://scandichotels.jotform.com/"
)
componentInitialized.current = true
}
}, [formId, scriptInitialized])
if (!formId) {
return null
}
const src = `https://scandichotels.jotform.com/${formId}?language=${lang}`
return (
<>
<Script
src="https://scandichotels.jotform.com/s/umd/latest/for-form-embed-handler.js"
onLoad={() => setScriptInitialized(true)}
strategy="lazyOnload"
/>
<iframe
id={`JotFormIFrame-${formId}`}
src={src}
className={styles.iframe}
scrolling="no"
/>
</>
)
}