done token recaptcha
This commit is contained in:
parent
d4749582c1
commit
7d21ab9c94
|
@ -15,9 +15,8 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/src/main.jsx"></script>
|
<script type="module" src="/src/main.jsx"></script>
|
||||||
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
|
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
|
||||||
async defer>
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -1,22 +1,10 @@
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { img10 } from "./asset"; // Pastikan img10 ada dan benar path-nya
|
import { img10 } from "../asset"; // Pastikan img10 ada dan benar path-nya
|
||||||
import ReCAPTCHA from "react-google-recaptcha"; // Pastikan penulisan benar (ReCAPTCHA)
|
import ReCAPTCHA from "react-google-recaptcha"; // Pastikan penulisan benar (ReCAPTCHA)
|
||||||
|
import useRecaptcha from './useRecaptcha';
|
||||||
|
|
||||||
const ContactForm = () => {
|
const ContactForm = () => {
|
||||||
// State untuk melacak status reCAPTCHA
|
const { capchaToken, recaptchaRef, handleRecaptcha } = useRecaptcha();
|
||||||
const [isCaptchaVerified, setIsCaptchaVerified] = useState(false);
|
|
||||||
|
|
||||||
// Callback yang dijalankan setelah reCAPTCHA dimuat
|
|
||||||
const callback = function () {
|
|
||||||
console.log("Done!!!!");
|
|
||||||
};
|
|
||||||
|
|
||||||
// Callback verifikasi reCAPTCHA
|
|
||||||
const verifyCallback = function (response) {
|
|
||||||
if (response) {
|
|
||||||
setIsCaptchaVerified(true); // Jika reCAPTCHA berhasil, set state menjadi true
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
@ -101,7 +89,7 @@ const ContactForm = () => {
|
||||||
</select>
|
</select>
|
||||||
<div className="absolute inset-y-0 right-5 flex items-center pointer-events-none">
|
<div className="absolute inset-y-0 right-5 flex items-center pointer-events-none">
|
||||||
<svg
|
<svg
|
||||||
className="w-8 h-28 mt-7 text-[#5B59E8]"
|
className="w-6 text-[#5B59E8]"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
fill="none"
|
fill="none"
|
||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
|
@ -121,15 +109,14 @@ const ContactForm = () => {
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<ReCAPTCHA
|
<ReCAPTCHA
|
||||||
sitekey="6LcIYNYqAAAAAJW_YJRWbBDBGt1gsKwsL9vK1SfW"
|
sitekey="6LcIYNYqAAAAAJW_YJRWbBDBGt1gsKwsL9vK1SfW"
|
||||||
onChange={verifyCallback} // Mengganti render="explicit" dengan onChange yang lebih sederhana
|
onChange={handleRecaptcha} // Mengganti render="explicit" dengan onChange yang lebih sederhana
|
||||||
onLoad={callback} // Callback ketika ReCAPTCHA sudah dimuat
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
className="bg-indigo-500 hover:bg-indigo-600 text-white py-3 px-6 rounded-lg shadow-md transition-all w-[173px] 2xl:w-[200px] 2xl:py-4"
|
className="bg-[#5B59E0] hover:bg-indigo-700 text-white py-3 px-6 rounded-lg shadow-md transition-all w-[173px] 2xl:w-[200px] 2xl:py-4"
|
||||||
disabled={!isCaptchaVerified} // Tombol dinonaktifkan jika reCAPTCHA belum dicentang
|
disabled={!capchaToken} // Tombol dinonaktifkan jika reCAPTCHA belum dicentang
|
||||||
>
|
>
|
||||||
Kirim Pesan
|
Kirim Pesan
|
||||||
</button>
|
</button>
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { useState, useRef } from "react";
|
||||||
|
|
||||||
|
const useRecaptcha = () => {
|
||||||
|
const [capchaToken, setCapchaToken] = useState(null); // Menyimpan token reCAPTCHA
|
||||||
|
const recaptchaRef = useRef(); // Menggunakan ref untuk reCAPTCHA jika perlu manipulasi lebih lanjut
|
||||||
|
|
||||||
|
// Fungsi untuk menangani perubahan token setelah reCAPTCHA berhasil
|
||||||
|
const handleRecaptcha = (token) => {
|
||||||
|
if (token) {
|
||||||
|
setCapchaToken(token); // Set token jika berhasil
|
||||||
|
} else {
|
||||||
|
setCapchaToken(null); // Reset token jika tidak ada token
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
capchaToken, // Mengembalikan token
|
||||||
|
recaptchaRef, // Referensi reCAPTCHA
|
||||||
|
handleRecaptcha, // Fungsi untuk menangani perubahan token
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default useRecaptcha;
|
|
@ -1,6 +1,6 @@
|
||||||
import Header from "../components/beranda/Header"
|
import Header from "../components/beranda/Header"
|
||||||
import CustomerService from "../components/contact/CustomerService"
|
import CustomerService from "../components/contact/CustomerService"
|
||||||
import FormSection from "../components/contact/FormSection"
|
import FormSection from "../components/contact/Form/FormSection"
|
||||||
import FAQSection from "../components/contact/FAQSection"
|
import FAQSection from "../components/contact/FAQSection"
|
||||||
import BottomCTA from "../components/contact/BottomCTA"
|
import BottomCTA from "../components/contact/BottomCTA"
|
||||||
import WhatsAppButton from "../components/beranda/WhatsAppButon"
|
import WhatsAppButton from "../components/beranda/WhatsAppButon"
|
||||||
|
|
Loading…
Reference in New Issue