Commit 92b61b84 by Ravindra Kanojiya

updated contact form

1 parent 242f1461
import React from "react";
import { Col, Row } from "react-bootstrap";
import Heading from "@/components/Heading";
import axios from "axios";
import { useForm } from "react-hook-form";
import * as yup from "yup";
import { yupResolver } from "@hookform/resolvers/yup";
import { useRouter } from "next/router";
const GetInTouchForm = () => {
/* ---------------- VALIDATION SCHEMA ---------------- */
const schema = yup.object({
requestType: yup.string().required("Select Request Type is required"),
name: yup.string().required("Full name is required"),
email: yup
.string()
.email("Enter a valid email address")
.required("Email is required"),
phone: yup
.string()
.matches(/^[0-9]{10}$/, "Phone number must be 10 digits")
.required("Phone number is required"),
city: yup.string().required("Please select city is required"),
country: yup.string().required("Please select country is required"),
message: yup.string().required("Message is required"),
consent: yup.boolean().oneOf([true], "You must accept the terms"),
});
const router = useRouter();
const {
register,
handleSubmit,
watch,
formState: { errors, isSubmitting, isValid },
reset,
} = useForm({
resolver: yupResolver(schema),
mode: "onChange", // important for button enable/disable
});
const onSubmit = async (data) => {
try {
const payload = {
data: {
// FormSource: "Contact Form",
RequestType: data.requestType,
FullName: data.name,
Email: data.email,
MobileNumber: data.phone,
City: data.city,
Country: data.country,
Message: data.message,
},
};
await axios.post(
`${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/contact-leads`,
payload,
);
reset();
router.push("/thankyou");
} catch (error) {
console.error(error);
alert("Failed to submit form. Please try again.");
}
};
return (
<>
<div className="get-in-touch-sec">
......@@ -10,11 +77,15 @@ const GetInTouchForm = () => {
<Heading el="h2" heading="Get in touch" />
</Col>
</Row>
<form action="" className="get-in-touch-form">
<form
className="get-in-touch-form"
onSubmit={handleSubmit(onSubmit)}
noValidate
>
<Row>
<Col md={12} className="mb-3">
<div>
<select className="form-select" id="requestType">
<select className="form-select" id="requestType" {...register("requestType")}>
<option value="">Select Request Type</option>
<option value="general">General Inquiry</option>
<option value="support">Support</option>
......@@ -30,7 +101,9 @@ const GetInTouchForm = () => {
placeholder="Full Name"
name="Full Name"
className="inputField nameInput"
{...register("name")}
/>
{errors.name && <p className="error">{errors.name.message}</p>}
</div>
</Col>
</Row>
......@@ -42,80 +115,360 @@ const GetInTouchForm = () => {
placeholder="Mobile Number"
name="Mobile Number"
className="inputField nameInput"
{...register("phone")}
/>
{errors.phone && (
<p className="error">{errors.phone.message}</p>
)}
</div>
</Col>
<Col md={12} className="mb-3">
<Col md={12} className="mb-3">
<div>
<input
type="text"
placeholder="Email Address"
name="Email Address"
className="inputField nameInput"
{...register("email")}
/>
{errors.email && (
<p className="error">{errors.email.message}</p>
)}
</div>
</Col>
</Row>
<Row>
<Col md={12} className="mb-3">
<div>
<select className="form-select" id="requestType">
<option value="">City</option>
<option value="mumbai">Mumbai</option>
<option value="pune">Pune</option>
<option value="delhi">Delhi</option>
</select>
</div>
</Col>
<Col md={12} className="mb-3">
<div>
<select className="form-select" id="requestType">
<select
className="form-select"
id="requestType"
{...register("country")}
>
<option value="">Country</option>
<option value="Afghanistan">Afghanistan</option>
<option value="Albania">Albania</option>
<option value="Algeria">Algeria</option>
<option value="American Samoa">American Samoa</option>
<option value="Andorra">Andorra</option>
<option value="Angola">Angola</option>
<option value="Antigua and Barbuda">
Antigua and Barbuda
</option>
<option value="Argentina">Argentina</option>
<option value="Armenia">Armenia</option>
<option value="Aruba">Aruba</option>
<option value="Australia">Australia</option>
<option value="Austria">Austria</option>
<option value="Azerbaijan">Azerbaijan</option>
<option value="Bahamas">Bahamas</option>
<option value="Bahrain">Bahrain</option>
<option value="Bangladesh">Bangladesh</option>
<option value="Barbados">Barbados</option>
<option value="Belarus">Belarus</option>
<option value="Belgium">Belgium</option>
<option value="Belize">Belize</option>
<option value="Benin">Benin</option>
<option value="Bermuda">Bermuda</option>
<option value="Bhutan">Bhutan</option>
<option value="Bolivia, Plurinational State of">
Bolivia, Plurinational State of
</option>
<option value="Bosnia and Herzegovina">
Bosnia and Herzegovina
</option>
<option value="Botswana">Botswana</option>
<option value="Brazil">Brazil</option>
<option value="Brunei Darussalam">Brunei Darussalam</option>
<option value="Bulgaria">Bulgaria</option>
<option value="Burkina Faso">Burkina Faso</option>
<option value="Burundi">Burundi</option>
<option value="Cabo Verde">Cabo Verde</option>
<option value="Cambodia">Cambodia</option>
<option value="Cameroon">Cameroon</option>
<option value="Canada">Canada</option>
<option value="Cayman Islands">Cayman Islands</option>
<option value="Central African Republic">
Central African Republic
</option>
<option value="Chad">Chad</option>
<option value="Chile">Chile</option>
<option value="China">China</option>
<option value="Colombia">Colombia</option>
<option value="Comoros">Comoros</option>
<option value="Congo">Congo</option>
<option value="Congo, Democratic Republic of the">
Congo, Democratic Republic of the
</option>
<option value="Cook Islands">Cook Islands</option>
<option value="Costa Rica">Costa Rica</option>
<option value="Croatia">Croatia</option>
<option value="Cuba">Cuba</option>
<option value="Cyprus">Cyprus</option>
<option value="Czechia">Czechia</option>
<option value="Côte d'Ivoire">Côte d'Ivoire</option>
<option value="Denmark">Denmark</option>
<option value="Djibouti">Djibouti</option>
<option value="Dominica">Dominica</option>
<option value="Dominican Republic">Dominican Republic</option>
<option value="Ecuador">Ecuador</option>
<option value="Egypt">Egypt</option>
<option value="El Salvador">El Salvador</option>
<option value="Equatorial Guinea">Equatorial Guinea</option>
<option value="Eritrea">Eritrea</option>
<option value="Estonia">Estonia</option>
<option value="Eswatini">Eswatini</option>
<option value="Ethiopia">Ethiopia</option>
<option value="Fiji">Fiji</option>
<option value="Finland">Finland</option>
<option value="France">France</option>
<option value="Gabon">Gabon</option>
<option value="Gambia">Gambia</option>
<option value="Georgia">Georgia</option>
<option value="Germany">Germany</option>
<option value="Ghana">Ghana</option>
<option value="Greece">Greece</option>
<option value="Grenada">Grenada</option>
<option value="Guam">Guam</option>
<option value="Guatemala">Guatemala</option>
<option value="Guinea">Guinea</option>
<option value="Guinea-Bissau">Guinea-Bissau</option>
<option value="Guyana">Guyana</option>
<option value="Haiti">Haiti</option>
<option value="Honduras">Honduras</option>
<option value="Hong Kong">Hong Kong</option>
<option value="Hungary">Hungary</option>
<option value="Iceland">Iceland</option>
<option value="India">India</option>
<option value="Dubai">Dubai</option>
<option value="Indonesia">Indonesia</option>
<option value="Iran, Islamic Republic of">
Iran, Islamic Republic of
</option>
<option value="Iraq">Iraq</option>
<option value="Ireland">Ireland</option>
<option value="Israel">Israel</option>
<option value="Italy">Italy</option>
<option value="Jamaica">Jamaica</option>
<option value="Japan">Japan</option>
<option value="Jordan">Jordan</option>
<option value="Kazakhstan">Kazakhstan</option>
<option value="Kenya">Kenya</option>
<option value="Kiribati">Kiribati</option>
<option value="Korea, Democratic People's Republic of">
Korea, Democratic People's Republic of
</option>
<option value="Korea, Republic of">Korea, Republic of</option>
<option value="Kuwait">Kuwait</option>
<option value="Kyrgyzstan">Kyrgyzstan</option>
<option value="Lao People's Democratic Republic">
Lao People's Democratic Republic
</option>
<option value="Latvia">Latvia</option>
<option value="Lebanon">Lebanon</option>
<option value="Lesotho">Lesotho</option>
<option value="Liberia">Liberia</option>
<option value="Libya">Libya</option>
<option value="Liechtenstein">Liechtenstein</option>
<option value="Lithuania">Lithuania</option>
<option value="Luxembourg">Luxembourg</option>
<option value="Madagascar">Madagascar</option>
<option value="Malawi">Malawi</option>
<option value="Malaysia">Malaysia</option>
<option value="Maldives">Maldives</option>
<option value="Mali">Mali</option>
<option value="Malta">Malta</option>
<option value="Marshall Islands">Marshall Islands</option>
<option value="Mauritania">Mauritania</option>
<option value="Mauritius">Mauritius</option>
<option value="Mexico">Mexico</option>
<option value="Micronesia, Federated States of">
Micronesia, Federated States of
</option>
<option value="Moldova, Republic of">
Moldova, Republic of
</option>
<option value="Monaco">Monaco</option>
<option value="Mongolia">Mongolia</option>
<option value="Montenegro">Montenegro</option>
<option value="Morocco">Morocco</option>
<option value="Mozambique">Mozambique</option>
<option value="Myanmar">Myanmar</option>
<option value="Namibia">Namibia</option>
<option value="Nauru">Nauru</option>
<option value="Nepal">Nepal</option>
<option value="Netherlands">Netherlands</option>
<option value="New Zealand">New Zealand</option>
<option value="Nicaragua">Nicaragua</option>
<option value="Niger">Niger</option>
<option value="Nigeria">Nigeria</option>
<option value="North Macedonia">North Macedonia</option>
<option value="Norway">Norway</option>
<option value="Oman">Oman</option>
<option value="Pakistan">Pakistan</option>
<option value="Palau">Palau</option>
<option value="Palestine, State of">
Palestine, State of
</option>
<option value="Panama">Panama</option>
<option value="Papua New Guinea">Papua New Guinea</option>
<option value="Paraguay">Paraguay</option>
<option value="Peru">Peru</option>
<option value="Philippines">Philippines</option>
<option value="Poland">Poland</option>
<option value="Portugal">Portugal</option>
<option value="Puerto Rico">Puerto Rico</option>
<option value="Qatar">Qatar</option>
<option value="Romania">Romania</option>
<option value="Russian Federation">Russian Federation</option>
<option value="Rwanda">Rwanda</option>
<option value="Saint Kitts and Nevis">
Saint Kitts and Nevis
</option>
<option value="Saint Lucia">Saint Lucia</option>
<option value="Saint Vincent and the Grenadines">
Saint Vincent and the Grenadines
</option>
<option value="Samoa">Samoa</option>
<option value="San Marino">San Marino</option>
<option value="Sao Tome and Principe">
Sao Tome and Principe
</option>
<option value="Saudi Arabia">Saudi Arabia</option>
<option value="Senegal">Senegal</option>
<option value="Serbia">Serbia</option>
<option value="Seychelles">Seychelles</option>
<option value="Sierra Leone">Sierra Leone</option>
<option value="Singapore">Singapore</option>
<option value="Slovakia">Slovakia</option>
<option value="Slovenia">Slovenia</option>
<option value="Solomon Islands">Solomon Islands</option>
<option value="Somalia">Somalia</option>
<option value="South Africa">South Africa</option>
<option value="South Sudan">South Sudan</option>
<option value="Spain">Spain</option>
<option value="Sri Lanka">Sri Lanka</option>
<option value="Sudan">Sudan</option>
<option value="Suriname">Suriname</option>
<option value="Sweden">Sweden</option>
<option value="Switzerland">Switzerland</option>
<option value="Syrian Arab Republic">
Syrian Arab Republic
</option>
<option value="Taiwan, Province of China">
Taiwan, Province of China
</option>
<option value="Tajikistan">Tajikistan</option>
<option value="Tanzania, United Republic of">
Tanzania, United Republic of
</option>
<option value="Thailand">Thailand</option>
<option value="Timor-Leste">Timor-Leste</option>
<option value="Togo">Togo</option>
<option value="Tonga">Tonga</option>
<option value="Trinidad and Tobago">
Trinidad and Tobago
</option>
<option value="Tunisia">Tunisia</option>
<option value="Turkmenistan">Turkmenistan</option>
<option value="Tuvalu">Tuvalu</option>
<option value="Türkiye">Türkiye</option>
<option value="Uganda">Uganda</option>
<option value="Ukraine">Ukraine</option>
<option value="United Arab Emirates">
United Arab Emirates
</option>
<option value="United Kingdom">United Kingdom</option>
<option value="United States of America">
United States of America
</option>
<option value="Uruguay">Uruguay</option>
<option value="Uzbekistan">Uzbekistan</option>
<option value="Vanuatu">Vanuatu</option>
<option value="Venezuela, Bolivarian Republic of">
Venezuela, Bolivarian Republic of
</option>
<option value="Viet Nam">Viet Nam</option>
<option value="Virgin Islands, British">
Virgin Islands, British
</option>
<option value="Virgin Islands, U.S.">
Virgin Islands, U.S.
</option>
<option value="Yemen">Yemen</option>
<option value="Zambia">Zambia</option>
<option value="Zimbabwe">Zimbabwe</option>
</select>
{errors.country && (
<p className="error">{errors.country.message}</p>
)}
</div>
</Col>
<Col md={12} className="mb-3">
<div>
<input
type="text"
placeholder="City"
name="City"
className="inputField nameInput"
{...register("city")}
/>
{errors.city && <p className="error">{errors.city.message}</p>}
</div>
</Col>
</Row>
<Row>
<Col md={12} className="mb-3">
<div>
<textarea rows="4"
<textarea
rows="4"
type="text"
placeholder="Message*"
name="Message"
className="inputField nameInput"
{...register("message")}
/>
{errors.message && (
<p className="error">{errors.message.message}</p>
)}
</div>
</Col>
</Row>
<Row>
<Col className="mb-3">
<div className="form-check">
<input
className="form-check-input"
type="checkbox"
value=""
id="checkChecked"
/>
<label className="form-check-label" for="checkChecked">
By Continuing, I Declare that i have read the privacy policy of akurti luxe.
</label>
</div>
<div className="form-check">
<input
className="form-check-input"
type="checkbox"
value=""
id="checkChecked"
{...register("consent")}
/>
<label className="form-check-label" for="checkChecked">
By Continuing, I Declare that i have read the privacy policy
of akurti luxe.
</label>
{errors.consent && (
<p className="error">{errors.consent.message}</p>
)}
</div>
</Col>
</Row>
<Row>
<Row>
<Col className="mb-3">
<div className="d-flex gap-3">
<button className="btn2">Submit <i className="fa-solid fa-arrow-right"></i></button>
</div>
<div className="d-flex gap-3">
<button type="submit"
className="btn2"
disabled={!isValid || isSubmitting}
>
{isSubmitting ? "Submitting..." : "Submit"}{" "}
<i className="fa-solid fa-arrow-right"></i>
</button>
</div>
</Col>
</Row>
</Row>
</form>
</div>
</>
......
......@@ -871,7 +871,7 @@ h2.heading>p{
margin-top: 4px;
}
/* Disabled state */
.btn3:disabled {
:disabled {
background-color: #cccccc; /* grey background */
color: #666666; /* darker grey text */
cursor: not-allowed;
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!