-
- {
- isLoading
- ?
- : t(`buttonText`)
- }
-
-
-
,
- termsLink:
,
- }}
+
- {/*
*/}
- >
+ )}
+
+
);
+ async function handleCaptchaSuccess(captchaToken: string) {
+ const response = await validateCaptchaToken(captchaToken);
+
+ if (response.status === `ok`) {
+ setIsCaptchaVerified(true);
+ }
+
+ setShowCaptcha(false);
+ }
+
async function handleFormSubmit(event: FormEvent) {
event.preventDefault();
setIsLoading(true);
try {
- if (!recaptchaRef.current) {
- return;
- }
-
- const token = await recaptchaRef.current.executeAsync();
-
- if (!token) {
+ if (!isCaptchaVerified) {
+ setShowCaptcha(true);
return;
}
const formData = new FormData(event.target as HTMLFormElement);
- formData.append(`g-recaptcha-response`, token);
- onSubmit(formData);
+ await onSubmit(formData);
- recaptchaRef.current.reset();
+ setIsCaptchaVerified(false);
} finally {
setIsLoading(false);
}
diff --git a/components/FormModal/FormModal.tsx b/components/FormModal/FormModal.tsx
index 5d319e88..3eb42e40 100644
--- a/components/FormModal/FormModal.tsx
+++ b/components/FormModal/FormModal.tsx
@@ -18,6 +18,7 @@ export function FormModal({
);
diff --git a/components/HeroBlockTechnology/HeroBlockTechnology.scss b/components/HeroBlockTechnology/HeroBlockTechnology.scss
index 2c4673e3..cef5176c 100644
--- a/components/HeroBlockTechnology/HeroBlockTechnology.scss
+++ b/components/HeroBlockTechnology/HeroBlockTechnology.scss
@@ -85,7 +85,6 @@
line-height: 1.37;
letter-spacing: 0.02em;
text-align: center;
- text-decoration: none;
color: $color-white;
background-color: initial;
cursor: pointer;
diff --git a/components/HeroBlockTechnology/HeroBlockTechnology.tsx b/components/HeroBlockTechnology/HeroBlockTechnology.tsx
index 9be92ca5..c384f1d1 100644
--- a/components/HeroBlockTechnology/HeroBlockTechnology.tsx
+++ b/components/HeroBlockTechnology/HeroBlockTechnology.tsx
@@ -28,20 +28,13 @@ export function HeroBlockTechnology() {
{t(`title`)}
{t(`description`)}
- {/* Todo: uncomment after editing the form */}
- {/*
*/}
-
- {t(`buttonText`)}
-
+
void;
}) {
const {
t,
@@ -42,6 +44,7 @@ export function FormBlockRedesign({
isSubmit={isSubmit}
setIsSubmit={setIsSubmit}
isModal={isModal}
+ onCloseModal={onCloseModal}
/>
@@ -70,6 +73,7 @@ export function FormBlockRedesign({
isSubmit={isSubmit}
setIsSubmit={setIsSubmit}
isModal={isModal}
+ onCloseModal={onCloseModal}
/>
)
diff --git a/components/redesign/FormRedesign/FormRedesign.scss b/components/redesign/FormRedesign/FormRedesign.scss
index fad727dc..1de7a962 100644
--- a/components/redesign/FormRedesign/FormRedesign.scss
+++ b/components/redesign/FormRedesign/FormRedesign.scss
@@ -1,7 +1,6 @@
.form-redesign {
$this: &;
- position: relative;
display: flex;
align-items: center;
flex-direction: column;
@@ -155,6 +154,7 @@
}
&__footer {
+ position: relative;
margin-top: 32px;
width: 100%;
@@ -196,7 +196,8 @@
&__captcha {
position: absolute;
- transform: translate(0, -20%);
+ left: 0;
+ top: 0;
}
&.is-modal {
diff --git a/components/redesign/FormRedesign/FormRedesign.tsx b/components/redesign/FormRedesign/FormRedesign.tsx
index 349aded0..11c2a919 100644
--- a/components/redesign/FormRedesign/FormRedesign.tsx
+++ b/components/redesign/FormRedesign/FormRedesign.tsx
@@ -1,5 +1,10 @@
import { Trans, useTranslation } from 'next-i18next';
-import { ChangeEvent, FormEvent, useState } from 'react';
+import {
+ ChangeEvent,
+ FormEvent,
+ useMemo,
+ useState,
+} from 'react';
import clsx from 'clsx';
import Link from 'next/link';
import Image from 'next/image';
@@ -10,17 +15,20 @@ import { InputRedesign } from './components/InputRedesign/InputRedesign';
import { TextareaRedesign } from './components/TextareaRedesign/TextareaRedesign';
import { Spinner } from '../../Spinner/Spinner';
import { validateCaptchaToken } from '../../../services/smartCaptchaService/validateCaptchaToken';
+import { DEFAULT_LOCALE } from '../../../common/constants';
export function FormRedesign({
onSubmit,
isSubmit,
setIsSubmit,
isModal,
+ onCloseModal,
} : {
onSubmit: (formData: FormData) => unknown;
isSubmit: boolean;
setIsSubmit: (value: boolean) => void;
isModal?: boolean;
+ onCloseModal?: () => void;
}) {
const {
t,
@@ -33,6 +41,14 @@ export function FormRedesign({
const [isLoading, setIsLoading] = useState(false);
const [email, setEmail] = useState(``);
+ const routerLocale = useMemo(() => {
+ if (!locale) {
+ return DEFAULT_LOCALE;
+ }
+
+ return locale;
+ }, [locale]);
+
const [showCaptcha, setShowCaptcha] = useState(false);
const [isCaptchaVerified, setIsCaptchaVerified] = useState