import React, { useEffect, useRef, useState } from "react"; import * as Yup from "yup"; import { useDispatch, useSelector } from "react-redux"; import makeAnimated from "react-select/animated"; import { getLoggedInVendor, pincodeSearchByFilter } from "../../redux/actions/vendorActions"; import axios from "axios"; import { Form, Formik } from "formik"; import { sanitizeTimeFormat } from "../../services/imageHandling"; import { toast } from "react-toastify"; import { createActivity } from "../../redux/actions/activityAction"; const format = "HH:mm"; let timeArray = []; const hoursArray = [ { value: "01", label: "01" }, { value: "02", label: "02" }, { value: "03", label: "03" }, { value: "04", label: "04" }, { value: "05", label: "05" }, { value: "06", label: "06" }, { value: "07", label: "07" }, { value: "08", label: "08" }, { value: "09", label: "09" }, { value: "10", label: "10" }, { value: "11", label: "11" }, { value: "12", label: "12" } ]; const minutesArray = [ { value: "00", label: "00" }, { value: "01", label: "01" }, { value: "02", label: "02" }, { value: "03", label: "03" }, { value: "04", label: "04" }, { value: "05", label: "05" }, { value: "06", label: "06" }, { value: "07", label: "07" }, { value: "08", label: "08" }, { value: "09", label: "09" }, { value: "10", label: "10" }, { value: "11", label: "11" }, { value: "12", label: "12" }, { value: "13", label: "13" }, { value: "14", label: "14" }, { value: "15", label: "15" }, { value: "16", label: "16" }, { value: "17", label: "17" }, { value: "18", label: "18" }, { value: "19", label: "19" }, { value: "20", label: "20" }, { value: "21", label: "21" }, { value: "22", label: "22" }, { value: "23", label: "23" }, { value: "24", label: "24" }, { value: "25", label: "25" }, { value: "26", label: "26" }, { value: "27", label: "27" }, { value: "28", label: "28" }, { value: "29", label: "29" }, { value: "30", label: "30" }, { value: "31", label: "31" }, { value: "32", label: "32" }, { value: "33", label: "33" }, { value: "34", label: "34" }, { value: "35", label: "35" }, { value: "36", label: "36" }, { value: "37", label: "37" }, { value: "38", label: "38" }, { value: "39", label: "39" }, { value: "40", label: "40" }, { value: "41", label: "41" }, { value: "42", label: "42" }, { value: "43", label: "43" }, { value: "44", label: "44" }, { value: "45", label: "45" }, { value: "46", label: "46" }, { value: "47", label: "47" }, { value: "48", label: "48" }, { value: "49", label: "49" }, { value: "50", label: "50" }, { value: "51", label: "51" }, { value: "52", label: "52" }, { value: "53", label: "53" }, { value: "54", label: "54" }, { value: "55", label: "55" }, { value: "56", label: "56" }, { value: "57", label: "57" }, { value: "58", label: "58" }, { value: "59", label: "59" } ]; const monthsArray = [ { value: "january", label: "January" }, { value: "february", label: "February" }, { value: "march", label: "March" }, { value: "april", label: "April" }, { value: "may", label: "May" }, { value: "june", label: "June" }, { value: "july", label: "July" }, { value: "august", label: "August" }, { value: "september", label: "September" }, { value: "october", label: "October" }, { value: "november", label: "November" }, { value: "december", label: "December" } ]; // import { colourOptions } from '../data'; const animatedComponents = makeAnimated(); const UpdateActivity = () => { const dispatch = useDispatch(); const { categories } = useSelector(state => state.categories); const { subCategories } = useSelector(state => state.subCategories); const { loggedInVendor } = useSelector(state => state.loggedInVendor); let categoryRef = useRef(); let timeLines; const activityDetailsValidationSchema = Yup.object().shape({ category: Yup.string().required("Category is Required"), subCategory: Yup.string().required("Sub Category is Required"), activityName: Yup.string().required("Activity Name is Required"), activityDescription: Yup.string().required("Activity Description is Required"), location: Yup.string().required("Location is Required"), addressLine1: Yup.string().required("Address is Required"), addressLine2: Yup.string(), pricePerPerson: Yup.string().required("Price Per Person is Required"), giftingToSomeone: Yup.string().required("Required field"), place: Yup.string().required("Place is Required"), activityType: Yup.string().required("Required field"), contactPersonForActivity: Yup.string().required("Contact Person Name is Required"), minGroupSize: Yup.string().required("Min Group Size is Required"), maxGroupSize: Yup.string().required("Max Group Size is Required"), months: Yup.array(), minDuration: Yup.string().required("Min Duration is Required"), maxDuration: Yup.string().required("Max Duration is Required"), durationUnit: Yup.string().required("Duration Unit is Required"), ageGroup: Yup.string().required("Age Group is Required"), linkOfBooking: Yup.string().required("Link of Booking is Required"), activityImages: Yup.array(), contactPersonForBooking: Yup.string().required("Contact person is a required field"), countryCode: Yup.string(), contactNumberForBooking: Yup.string().required("Number is a required field"), cancellationPolicyFile: Yup.string(), termsConditionsFile: Yup.string() }); const [pincodeData, setPinCodeData] = useState(); const [activeDays, setActiveDays] = useState(); const [minDisabled, setMinDisabled] = useState(true); const [months, setMonths] = useState(true); const [masterDays, setMasterDays] = useState(); const [timeSlotError, setTimeSlotError] = useState(); // const [timeArray, setTimeArray] = useState([]); console.log("loggedInVendor", loggedInVendor); // const [timeLines, setTimeLines] = useState() const ref = useRef(null); // let const handleSearch = async pin => { if (isNaN(pin)) { return; } let pincodeDataSet = await pincodeSearchByFilter(pin); // console.log("pincodeData", pincodeDataSet.data.data); setPinCodeData(pincodeDataSet.data.data); }; // let masterDays; const getMasterDays = async () => { const config = { headers: { "Content-Type": "application/json" } }; const response = await axios.get(`${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/master-days`, config); // console.log("response", response.data); setMasterDays(response.data.data); return response.data; }; useEffect(() => { getMasterDays(); }, []); useEffect(() => { dispatch(getLoggedInVendor()); }, []); return ( <div> <Fragment> <div className="container p-1"> <div className="row"> <div className="col-12 col-lg-8"> <div className="content-div business-details"> <div className="form-container"> <Formik initialValues={{ category: "", subCategory: "", activityName: "", activityDescription: "", location: "", addressLine1: "", addressLine2: "", pricePerPerson: "", giftingToSomeone: "", place: "", contactPersonForActivity: "", minGroupSize: "", maxGroupSize: "", months: [], minDuration: "", maxDuration: "", durationUnit: "", ageGroup: "", linkOfBooking: "", activityImages: [], contactPersonForBooking: "", countryCode: "", contactNumberForBooking: "", cancellationPolicyFile: "", termsConditionsFile: "" }} validationSchema={activityDetailsValidationSchema} // enableReinitialize={true} onSubmit={values => {}} > {({ values, errors, touched, handleChange, handleBlur, handleSubmit, setFieldValue, resetForm }) => ( <Form onSubmit={async e => { e.preventDefault(); console.log("activity details values", values); let timeSlots = []; timeSlots = timeArray.map(item => { console.log("sanitizeTimeFormat({ data: item })", sanitizeTimeFormat({ data: item })); if (!sanitizeTimeFormat({ data: item })) { console.log("sanitize 1", sanitizeTimeFormat({ data: item })); toast.error("Time slots can not be empty!"); setTimeSlotError(true); return; } console.log("sanitize 2", sanitizeTimeFormat({ data: item })); timeSlots = [...timeSlots, sanitizeTimeFormat({ data: item })]; return sanitizeTimeFormat({ data: item }); }); if (timeSlotError) { return; } handleSubmit(); console.log("timeslots", timeSlots); values = { ...values, timeSlots, months, pincode: ref.current.state.selected[0], vendor: loggedInVendor, name: values.activityName, description: values.activityDescription, address: `${values.addressLine1}, ${values.addressLine2}`, minimumDuration: values.minDuration, maximumDuration: values.maxDuration, ageLowerLimit: values.ageGroup, phoneNumber: values.contactNumberForBooking, link: values.linkOfBooking, giftSomeone: values.giftingToSomeone }; console.log("values 123", values); const res = await dispatch(createActivity(values)); console.log("res", res); if (res.success) { toast.success("Activity added successfully!"); resetForm(); setActiveDays([]); setMonths([]); } }} > <div className="activityDetails"> <div> <div className="mt-4"> {/* <p className="textH">Basic Details</p> */} <div className="d-flex justify-content-between"> <p className="textH">Basic Details</p> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Category</label> <select ref={categoryRef} value={values.category} name="category" onChange={async e => { handleChange(e); console.log(categoryRef); // console.log("subCategories", categoryRef.current.value); await dispatch(getAllSubCategories(categoryRef.current.value)); }} onBlur={handleBlur} > <option value="">Select</option> {categories && categories?.data.length > 0 && categories.data.map((item, index) => { return ( <option key={index} value={item.attributes.name}> {item.attributes.name} </option> ); })} {/* <option value="Category 2">Category 2</option> */} </select> {touched.category && errors.category && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.category} </span> )} {/* <ErrorMessage name="category" component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Sub Category</label> <select id={`subCategory`} value={values.subCategory} name={`subCategory`} onChange={handleChange} onBlur={handleBlur}> <option value="">Select</option> {subCategories && subCategories?.data.length > 0 && subCategories.data.map((item, index) => { return ( <option key={index} value={item.value}> {item.attributes.name} </option> ); })} </select> {touched.subCategory && errors.subCategory && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.subCategory} </span> )} {/* <ErrorMessage name={`subCategory`} component="div" className="form-error" /> */} </div> </div> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Activity Name</label> <input type="text" name={`activityName`} onChange={handleChange} onBlur={handleBlur} value={values.activityName} /> {touched.activityName && errors.activityName && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.activityName} </span> )} {/* <ErrorMessage name={`activityName`} component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Activity Description</label> <textarea rows="4" name={`activityDescription`} onChange={handleChange} onBlur={handleBlur} value={values.activityDescription} /> {touched.activityDescription && errors.activityDescription && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.activityDescription} </span> )} {/* <ErrorMessage name={`activityDescription`} component="div" className="form-error" /> */} </div> </div> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Location</label> <AsyncTypeahead type="number" onSearch={handleSearch} minLength={3} value={values.location} id="basic-behaviors-example" labelKey="name" options={ pincodeData && pincodeData.length > 0 && pincodeData.map(item => { return { name: item.attributes.name, id: item.id }; }) } placeholder="Choose a pincode" ref={ref} onBlur={() => { console.log(ref.current); if (!ref.current.state.selected.length > 0) { ref.current?.clear(); } }} onChange={e => { console.log("input change", e); // handleChange(e); }} /> {/* <select id={`location`} value={values.location} name={`location`} onChange={handleChange} onBlur={handleBlur}> <option value="">Select</option> <option value="Location 1">Location 1</option> <option value="Location 2">Location 2</option> </select> */} {/* <ErrorMessage name={`location`} component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Price (per person)</label> <input type="text" name={`pricePerPerson`} onChange={handleChange} onBlur={handleBlur} value={values.pricePerPerson} /> {touched.pricePerPerson && errors.pricePerPerson && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.pricePerPerson} </span> )} {/* <ErrorMessage name={`pricePerPerson`} component="div" className="form-error" /> */} </div> </div> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Address Line 1</label> <input type="text" name={`addressLine1`} onChange={handleChange} onBlur={handleBlur} value={values.addressLine1} /> {touched.addressLine1 && errors.addressLine1 && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.addressLine1} </span> )} {/* <ErrorMessage name={`addressLine1`} component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Address Line 2</label> <input type="text" name={`addressLine2`} onChange={handleChange} onBlur={handleBlur} value={values.addressLine2} /> {/* {touched.addressLine2 && errors.addressLine2 && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.addressLine2} </span> )} */} {/* <ErrorMessage name={`addressLine2`} component="div" className="form-error" /> */} </div> </div> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group mb-2"> <label>Gifting to Someone</label> <div className="row"> <div className="col-12 col-lg-12"> <select id="giftingToSomeone" name="giftingToSomeone" value={values.giftingToSomeone} onChange={handleChange} onBlur={handleBlur}> {" "} Gift someone <option value="">Select</option> <option value={true}>Yes</option> <option value={false}>No</option> </select> </div> {touched.giftingToSomeone && errors.giftingToSomeone && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.giftingToSomeone} </span> )} </div> {/* <ErrorMessage name={`giftingToSomeone`} component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group mb-2"> <label>Place</label> <div className="row"> <div className=""> <div className="col-12 col-lg-12"> <select id="activityType" name="activityType" onChange={handleChange} onBlur={handleBlur} value={values.activityType}> {" "} Activity Type <option value="">Select</option> <option value={"indoor"}>Indoor</option> <option value={"outdoor"}>Outdoor</option> </select> </div> {touched.activityType && errors.activityType && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.activityType} </span> )} </div> </div> {/* <ErrorMessage name={`place`} component="div" className="form-error" /> */} </div> </div> </div> </div> <hr /> <div className="mt-4"> <p className="textH">Group Information</p> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Contact Person for the Activity</label> <input type="text" name={`contactPersonForActivity`} onChange={handleChange} onBlur={handleBlur} value={values.contactPersonForActivity} /> {touched.contactPersonForActivity && errors.contactPersonForActivity && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.contactPersonForActivity} </span> )} {/* <ErrorMessage name={`contactPersonForActivity`} component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Size of the Group</label> <div className="row"> <div className="col-6 col-lg-5"> <input type="text" placeholder="Min." name={`minGroupSize`} onChange={handleChange} onBlur={handleBlur} value={values.minGroupSize} /> {touched.minGroupSize && errors.minGroupSize && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.minGroupSize} </span> )} {/* <ErrorMessage name={`minGroupSize`} component="div" className="form-error" /> */} </div> <div className="col-6 col-lg-5"> <input type="text" placeholder="Max." name={`maxGroupSize`} onChange={handleChange} onBlur={handleBlur} value={values.maxGroupSize} /> {touched.maxGroupSize && errors.maxGroupSize && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.maxGroupSize} </span> )} {/* <ErrorMessage name={`maxGroupSize`} component="div" className="form-error" /> */} </div> </div> </div> </div> </div> </div> <hr /> <div className="mt-4"> <p className="textH">Availability</p> <div className="row"> <div className="col-md-6 "> <div className="input-group"> <label>Months</label> <Select className="multi-select" closeMenuOnSelect={false} // value={values.months} components={animatedComponents} onBlur={handleBlur} isMulti id={`months`} name={`months`} onChange={e => { console.log(e); // handleChange(e) setMonths(e); }} options={monthsArray} // value={values.months} /> {/* {touched.months && errors.months && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.months} </span> )} */} {/* <ErrorMessage name={`months`} component="div" className="form-error" /> */} </div> </div> <div className="col-md-6 "> <div className="input-group"> <label>Day & Time</label> <Select className="multi-select" closeMenuOnSelect={true} components={animatedComponents} isMulti id={`dayTime`} name={`dayTime`} onChange={e => { console.log("days", e); setActiveDays(e); timeArray.length > 0 && timeArray.map((item, index) => { // item.day -> active days if (!e.map(j => j.value).includes(item.day)) { return timeArray.splice(index, 1); } }); console.log("time final", timeArray); }} options={ // masterDays && // masterDays.map(item => { // return { value: { day: item.attributes.name, id: item.id }, label: item.attributes.name }; // }) [ { value: "monday", label: "Monday" }, { value: "tuesday", label: "Tuesday" }, { value: "wednesday", label: "Wednesday" }, { value: "thursday", label: "Thursday" }, { value: "friday", label: "Friday" }, { value: "saturday", label: "Saturday" }, { value: "sunday", label: "Sunday" } ] } /> {/* <select id={`dayTime`} name={`dayTime`} onChange={handleChange} onBlur={handleBlur}> <option value="">Select</option> <option value="Location 1">Location 1</option> <option value="Location 2">Location 2</option> </select> */} {/* <ErrorMessage name={`dayTime`} component="div" className="form-error" /> */} {/* {console.log("time Array", timeArray)} */} <div> {activeDays && activeDays.length > 0 && activeDays.map((item, index) => { // console.log(item); return ( <div key={index} className="row"> {/* {console.log("time Array", timeArray)} */} <div className="col-md-6">Day:</div> <div className="col-md-6">{item.label}</div> <div className="col-md-2">From</div> <AntSelect className="col-md-3" placeholder="hours" onChange={e => { setTimeSlotError(false); let stop = false; setMinDisabled(false); if (!timeArray.length > 0) { timeArray = [{ day: item.value, fromHours: e }]; return; } console.log("here time array", timeArray); // timeArray.filter(i => i.day==) timeArray.map((object, index) => { if (stop) { return; } console.log("object", timeArray.map(j => j.day).includes(object.day), object.day); if (object.day == item.value) { console.log("here 1"); object.fromHours = e; return; } else if (!timeArray.map(j => j.day).includes(item.value)) { console.log("here 2"); timeArray = [...timeArray, { day: item.value, fromHours: e }]; stop = true; return timeArray; } // console.log("object", timeArray); }); console.log("timeArray", timeArray); }} options={hoursArray} /> : <AntSelect disabled={minDisabled} className="col-md-3" placeholder="minutes" onChange={e => { setTimeSlotError(false); if (!timeArray || !timeArray.length > 0) { timeArray = [{ day: item.value, fromMins: e }]; return; } timeArray.map((object, index) => { console.log("object", object.day, item.value, object.day == item.value); if (object.day == item.value) { object.fromMins = e; // return; } else if (!object.day) { console.log("mins second condition"); timeArray = [...timeArray, { day: item.value, fromMins: e }]; } // else { // object.fromMins = e; // } // console.log("object", timeArray); }); console.log("timeArray", timeArray); }} options={minutesArray} /> <AntSelect className="col-md-3 " placeholder="select" options={[ { value: "am", label: "AM" }, { value: "pm", label: "PM" } ]} onChange={e => { setTimeSlotError(false); if (!timeArray || !timeArray.length > 0) { timeArray = [{ day: item.value, fromDayTime: e }]; return; } timeArray.map((object, index) => { if (object.day == item.value) { object.fromDayTime = e; return; } else if (!object.day) { timeArray = [...timeArray, { day: item.value, fromDayTime: e }]; } // else { // object.fromDayTime = e; // } // console.log("object", timeArray); }); console.log("timeArray", timeArray); }} /> <div className="col-md-2">To</div> <AntSelect onChange={e => { setTimeSlotError(false); let stop = false; // setMinDisabled(false); if (!timeArray.length > 0) { timeArray = [{ day: item.value, toHours: e }]; return; } // timeArray.filter(i => i.day==) timeArray.map((object, index) => { if (stop) { return; } if (object.day == item.value) { console.log("here 1"); object.toHours = e; return; } else if (!timeArray.map(j => j.day).includes(item.value)) { console.log("here 2"); timeArray = [...timeArray, { day: item.value, toHours: e }]; stop = true; return timeArray; } // console.log("object", timeArray); }); console.log("timeArray", timeArray); }} className="col-md-3" placeholder="hours" options={hoursArray} /> : <AntSelect onChange={e => { setTimeSlotError(false); if (!timeArray || !timeArray.length > 0) { timeArray = [{ day: item.value, toMins: e }]; return; } timeArray.map((object, index) => { console.log("object", object.day, item.value, object.day == item.value); if (object.day == item.value) { object.toMins = e; // return; } else if (!object.day) { console.log("mins second condition"); timeArray = [...timeArray, { day: item.value, toMins: e }]; } // else { // object.fromMins = e; // } // console.log("object", timeArray); }); console.log("timeArray", timeArray); }} className="col-md-3" placeholder="minutes" options={minutesArray} /> <AntSelect onChange={e => { setTimeSlotError(false); if (!timeArray || !timeArray.length > 0) { timeArray = [{ day: item.value, toDayTime: e }]; return; } timeArray.map((object, index) => { if (object.day == item.value) { object.toDayTime = e; return; } else if (!object.day) { timeArray = [...timeArray, { day: item.value, toDayTime: e }]; } // else { // object.toDayTime = e; // } // console.log("object", timeArray); }); console.log("timeArray", timeArray); }} className="col-md-3 " placeholder="select" options={[ { value: "am", label: "AM" }, { value: "pm", label: "PM" } ]} /> <br /> <br /> <hr /> </div> ); })} </div> </div> </div> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Duration</label> <div className="row"> <div className="col-5 col-lg-4"> <select id="minDuration" name="minDuration" onChange={handleChange} onBlur={handleBlur}> <option value="min">Min</option> <option value="min">Min</option> </select> {touched.minDuration && errors.minDuration && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.minDuration} </span> )} </div> <div className="col-5 col-lg-4"> <select id="maxDuration" name="maxDuration" onChange={handleChange} onBlur={handleBlur} style={{ width: "100%" }}> <option value="max">Max</option> <option value="max">Max</option> </select> {errors.maxDuration && touched.maxDuration && <span className="form-error">{errors.maxDuration}</span>} </div> <div className="col-2 col-lg-4"> <select id="durationUnit" name="durationUnit" onChange={handleChange} onBlur={handleBlur}> <option value="Hrs">Hrs</option> <option value="Mins">Mins</option> </select> {errors.durationUnit && touched.durationUnit && <span className="form-error">{errors.durationUnit}</span>} </div> </div> </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Age Group</label> <select id={"ageGroup"} name={"ageGroup"} onChange={handleChange} onBlur={handleBlur}> <option value="">Select</option> <option value="Location 1">Location 1</option> <option value="Location 2">Location 2</option> </select> {touched.ageGroup && errors.ageGroup && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.ageGroup} </span> )} {/* <ErrorMessage name={"ageGroup"} component="div" className="form-error" /> */} </div> </div> </div> </div> <hr /> <div className="mt-4"> <p className="textH">Booking & Activity Information</p> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Link of Booking</label> <input type="text" name={`linkOfBooking`} onChange={handleChange} onBlur={handleBlur} value={values.linkOfBooking} /> {touched.linkOfBooking && errors.linkOfBooking && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.linkOfBooking} </span> )} {/* <ErrorMessage name={`linkOfBooking`} component="div" className="form-error" /> */} </div> </div> </div> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Contact Person Name</label> <input type="text" name={`contactPersonForBooking`} onChange={handleChange} onBlur={handleBlur} value={values.contactPersonForBooking} /> {touched.contactPersonForBooking && errors.contactPersonForBooking && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.contactPersonForBooking} </span> )} {/* <ErrorMessage name={`contactPersonForBooking`} component="div" className="form-error" /> */} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Contact Person Number</label> <div className="contact-number"> <select id={`countryCode`} name={`countryCode`} onChange={handleChange} onBlur={handleBlur} style={{ width: "80px" }}> <option value="+91">+91</option> <option value="+44">+44</option> </select> <input type="text" name={`contactNumberForBooking`} onChange={handleChange} onBlur={handleBlur} value={values.contactNumberForBooking} /> </div> {touched.contactNumberForBooking && errors.contactNumberForBooking && ( <span className="form-error" style={{ color: "red", fontSize: "10px" }}> {errors.contactNumberForBooking} </span> )} {/* <ErrorMessage name={`contactNumberForBooking`} component="div" className="form-error" /> */} </div> </div> </div> </div> <hr /> <div className="mt-4"> <p className="textH">Policy & Terms</p> <div className="row"> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Cancellation Policy</label> <div className="custom-file"> <input type="file" className="custom-file-input" id={`cancellationPolicyFile`} name={`cancellationPolicyFile`} onChange={event => { if (event) { const file = event.currentTarget.files[0]; setFieldValue(`cancellationPolicyFile`, file); } }} onBlur={handleBlur} onClick={event => { const { target = {} } = event || {}; target.value = ""; }} /> <label className="custom-file-label" htmlFor={`cancellationPolicyFile`}> Upload </label> </div> {/* <ErrorMessage name={`cancellationPolicyFile`} component="div" className="form-error" /> */} {values.cancellationPolicyFile && ( <div className="d-flex align-items-center justify-content-between p-1" style={{ width: "100%" }}> <p className="textS m-0">{values.cancellationPolicyFile.name}</p> <FaTimes style={{ cursor: "pointer" }} onClick={() => { setFieldValue(`cancellationPolicyFile`, ""); }} /> </div> )} </div> </div> <div className="col-12 col-lg-6"> <div className="input-group"> <label>Terms & Conditions</label> <div className="custom-file"> <input type="file" className="custom-file-input" id={`termsConditionsFile`} name={`termsConditionsFile`} onChange={event => { if (event) { const file = event.currentTarget.files[0]; setFieldValue(`termsConditionsFile`, file); } }} onBlur={handleBlur} onClick={event => { const { target = {} } = event || {}; target.value = ""; }} /> <label className="custom-file-label" htmlFor={`termsConditionsFile`}> Upload </label> </div> {/* <ErrorMessage name={`termsConditionsFile`} component="div" className="form-error" /> */} {values.termsConditionsFile && ( <div className="d-flex align-items-center justify-content-between p-1" style={{ width: "100%" }}> <p className="textS m-0">{values.termsConditionsFile.name}</p> <FaTimes style={{ cursor: "pointer" }} onClick={() => { setFieldValue(`termsConditionsFile`, ""); }} /> </div> )} </div> </div> </div> </div> </div> <div className="row"> <div className="col-12 col-lg-5"> <div className="input-group"> <Button type="submit" className="btn btn-primary btn-submit"> Submit </Button> {/* <button type="submit" onClick={handleSubmit}>submit</button> */} </div> </div> </div> </div> </Form> )} </Formik> </div> </div> </div> <div className="col-12 col-lg-4"> <div className="content-div help-center"> <h2>Help Center</h2> <ul className="helplist"> <li> <img src="/images/vendor/question.svg" className="img-fluid" /> <p>Lorem Ipsum Dolor Sit?</p> </li> <li> <img src="/images/vendor/question.svg" className="img-fluid" /> <p>Lorem Ipsum Dolor Sit?</p> </li> <li> <img src="/images/vendor/question.svg" className="img-fluid" /> <p>Lorem Ipsum Dolor Sit?</p> </li> <li> <img src="/images/vendor/question.svg" className="img-fluid" /> <p>Lorem Ipsum Dolor Sit?</p> </li> <li> <img src="/images/vendor/call.svg" className="img-fluid" /> <p>+1 (407) 8798 789</p> </li> </ul> </div> </div> </div> </div> </Fragment> </div> ); }; export default UpdateActivity;