import React from "react"; import { SpinnerCircular } from 'spinners-react'; import { GoogleReCaptchaProvider, GoogleReCaptcha, withGoogleReCaptcha } from 'react-google-recaptcha-v3'; import { sendLeasingOrder } from "../../../actions"; class FormContent extends React.Component { constructor(props) { super(props); this.state = { name: "", phone: "", email: "", company: "", accept: true, success: false, fail: false, leasing_form_submitting: false, errors: {}, }; } isEmail = (email) => { var regex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return regex.test(email); } checkErrors = () => { let valid = true; let errors = {}; const { name, phone, email } = this.state; if(name === "") { valid = false; errors['name'] = "Необходимо указать Ваши ФИО"; } if(phone === "") { valid = false; errors['phone'] = "Необходимо указать номер Вашего телефона"; } if(email === "") { valid = false; errors['email'] = "Необходимо указать Ваш адрес E-mail"; } else { if(!this.isEmail(email)) { valid = false; errors['email'] = "Пожалуйста, укажите правильный адрес E-mail"; } } this.setState({ errors: errors }); return valid; } _onFormSubmit = (event) => { event.preventDefault(); const { accept, leasing_form_submitting } = this.state; if(accept && !leasing_form_submitting && this.checkErrors()) { const { executeRecaptcha } = this.props.googleReCaptchaProps; this.setState({ leasing_form_submitting: true }, () => { executeRecaptcha() .then((token) => { sendLeasingOrder({ ...this.state, ...{ recaptcha_token: token } }) .then(() => { this.setState({ leasing_form_submitting: false, success: true, fail: false }); }) .catch((response) => { if(response.message === "recaptcha_error") { this.setState({ leasing_form_submitting: false, success: false, fail: true }); } else { this.setState({ leasing_form_submitting: false, success: false, fail: false }); } }); }) .catch((error) => { console.error("error", error); this.setState({ leasing_form_submitting: false }); }); }); } } _handle_onChange_name = (value) => { const errors = { ...this.state.errors }; errors.name = undefined; this.setState({ name: value, errors: errors }); } _handle_onChange_phone = (value) => { const errors = { ...this.state.errors }; errors.phone = undefined; this.setState({ phone: value, errors: errors }); } _handle_onChange_email = (value) => { const errors = { ...this.state.errors }; errors.email = undefined; this.setState({ email: value, errors: errors }); } _handle_onChange_accept = (accept) => { console.log(accept); this.setState({ accept: accept }); } _handle_onPersonaData = () => { window.open(`${ process.env.NEXT_PUBLIC_MAIN_SITE }/personal_data/`, "_blank"); } render() { const { name, phone, email, company, accept, success, fail, errors, leasing_form_submitting } = this.state; return (

Купить в лизинг?

Напишите на buy@evoleasing.ru или заполните форму

this._onFormSubmit(event) } style={ !fail ? {} : { backgroundColor: "#2C2D2E" }}> { !success ? !fail ? ( <>
this._handle_onChange_name(event.target.value) }/>
this._handle_onChange_phone(event.target.value) }/>
this._handle_onChange_email(event.target.value) }/>
this.setState({ company: event.target.value }) }/>
this._handle_onChange_accept(event.target.checked) }/>
защита от спама reCAPTCHA
Конфиденциальность - Условия использования
) : (<>

Сожалеем, запросы, отправляемые с Вашего устройства похожи на автоматические. Пожалуйста, воспользуйтесь другим браузером/подключением или попробуйте позднее.

) : (

Благодарим Вас за обращение, наши специалисты свяжутся с Вами в ближайшее время.

) }
) } } export const FormContentWithRecaptcha = withGoogleReCaptcha(FormContent); export default class FormRequest extends React.Component { constructor(props) { super(props); this.state = { }; } render() { return ( ) } } /* export default class FormRequest extends React.Component { constructor(props) { super(props); this.state = { recaptcha_token: null, }; } componentDidMount() { setTimeout(() => { this.setState({ recaptcha_token: null }); }, 120000); } render() { const { recaptcha_token } = this.state; return ( { recaptcha_token === null && ( { console.log("GoogleReCaptcha", "token response", token); this.setState({ recaptcha_token: token })} }/> ) } ) } } */