[site,newsletter][s]: fix hero newsletter form (broken after Brevo update)
This commit is contained in:
@@ -3,31 +3,6 @@ import ButtonLink from './ButtonLink';
|
|||||||
import NewsletterForm from './NewsletterForm';
|
import NewsletterForm from './NewsletterForm';
|
||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import DatahubExampleImg from '@/public/images/showcases/datahub.webp';
|
import DatahubExampleImg from '@/public/images/showcases/datahub.webp';
|
||||||
|
|
||||||
const codeLanguage = 'javascript';
|
|
||||||
const code = `export default {
|
|
||||||
strategy: 'predictive',
|
|
||||||
engine: {
|
|
||||||
cpus: 12,
|
|
||||||
backups: ['./storage/cache.wtf'],
|
|
||||||
},
|
|
||||||
}`;
|
|
||||||
|
|
||||||
const tabs = [
|
|
||||||
{ name: 'cache-advance.config.js', isActive: true },
|
|
||||||
{ name: 'package.json', isActive: false },
|
|
||||||
];
|
|
||||||
|
|
||||||
function TrafficLightsIcon(props) {
|
|
||||||
return (
|
|
||||||
<svg aria-hidden="true" viewBox="0 0 42 10" fill="none" {...props}>
|
|
||||||
<circle cx="5" cy="5" r="4.5" />
|
|
||||||
<circle cx="21" cy="5" r="4.5" />
|
|
||||||
<circle cx="37" cy="5" r="4.5" />
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* eslint jsx-a11y/label-has-associated-control: off */
|
/* eslint jsx-a11y/label-has-associated-control: off */
|
||||||
export function Hero() {
|
export function Hero() {
|
||||||
const el = useRef(null);
|
const el = useRef(null);
|
||||||
|
|||||||
@@ -1,6 +1,27 @@
|
|||||||
|
import { loadScripts } from '@/lib/loadNewsletterScripts';
|
||||||
import Script from 'next/script';
|
import Script from 'next/script';
|
||||||
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
export default function NewsletterForm() {
|
export default function NewsletterForm() {
|
||||||
|
useEffect(() => {
|
||||||
|
/*
|
||||||
|
* The newsletter scripts MUST be loaded after
|
||||||
|
* the document is loaded, as they depend on
|
||||||
|
* the presence of some elements
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
if (document.readyState === 'complete') {
|
||||||
|
const { resetElements } = loadScripts();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
resetElements();
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
window.addEventListener('load', loadScripts);
|
||||||
|
return () => window.removeEventListener('load', loadScripts);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div
|
||||||
@@ -88,37 +109,6 @@ export default function NewsletterForm() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Script
|
|
||||||
id="newsletter-form-validation-message"
|
|
||||||
dangerouslySetInnerHTML={{
|
|
||||||
__html: `
|
|
||||||
window.REQUIRED_CODE_ERROR_MESSAGE = 'Please choose a country code';
|
|
||||||
window.LOCALE = 'en';
|
|
||||||
window.EMAIL_INVALID_MESSAGE = window.SMS_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again.";
|
|
||||||
|
|
||||||
window.REQUIRED_ERROR_MESSAGE = "This field cannot be left blank. ";
|
|
||||||
|
|
||||||
window.GENERIC_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again.";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
window.translation = {
|
|
||||||
common: {
|
|
||||||
selectedList: '{quantity} list selected',
|
|
||||||
selectedLists: '{quantity} lists selected'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var AUTOHIDE = Boolean(0);
|
|
||||||
`,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<Script
|
|
||||||
strategy="worker"
|
|
||||||
id="newsletter-submit-form"
|
|
||||||
src="https://sibforms.com/forms/end-form/build/main.js"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
45
site/lib/loadNewsletterScripts.ts
Normal file
45
site/lib/loadNewsletterScripts.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
import { HTMLProps } from "react";
|
||||||
|
|
||||||
|
const loadScript = (
|
||||||
|
props: HTMLProps<HTMLScriptElement> & { textContent?: string }
|
||||||
|
): (() => void) => {
|
||||||
|
const script = document.createElement("script");
|
||||||
|
Object.assign(script, props);
|
||||||
|
document.head.appendChild(script);
|
||||||
|
return () => document.head.removeChild(script);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const loadScripts = () => {
|
||||||
|
const formValidationScript = loadScript({
|
||||||
|
id: "newsletter-form-validation-message",
|
||||||
|
textContent: `
|
||||||
|
window.LOCALE = 'en';
|
||||||
|
window.EMAIL_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again.";
|
||||||
|
window.REQUIRED_ERROR_MESSAGE = "This field cannot be left blank. ";
|
||||||
|
window.GENERIC_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again.";
|
||||||
|
window.translation = {
|
||||||
|
common: {
|
||||||
|
selectedList: '{quantity} list selected',
|
||||||
|
selectedLists: '{quantity} lists selected'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var AUTOHIDE = Boolean(0);
|
||||||
|
`,
|
||||||
|
});
|
||||||
|
|
||||||
|
const formSubmitScript = loadScript({
|
||||||
|
id: "newsletter-submit-form",
|
||||||
|
src: "https://sibforms.com/forms/end-form/build/main.js",
|
||||||
|
async: true,
|
||||||
|
defer: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
resetElements: () => {
|
||||||
|
formSubmitScript();
|
||||||
|
formValidationScript();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
Reference in New Issue
Block a user