You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
i have an array of objcets for day,fromTime and toTime the validation for each field is passing and i have set that if one object is present it should pass but in my jsx there is 7 days and if i select one it gives validation for rest
#10901
const formValidationSchema = Yup.object().shape({
name: Yup.string().required("Clinic Name is required"),
registration_number: Yup.string().required("Registration Number is required"),
clinic_loyalty_number: Yup.string(),
clinic_type: Yup.string().required("Clinic Type is required"),
email: Yup.string().email("Invalid email").required("Email is required"),
alternate_email: Yup.string().email("invalid email"),
phone: Yup.number()
.transform((value) => (Number.isNaN(value) ? null : value))
.nullable()
.test("min-length", "Please enter at least 10 digits", (value) => {
// Check if the value is null or undefined (nullable), or if it has at least 10 digits
return (
value === null || value === undefined || value.toString().length >= 10
);
})
.required("pls enter phone number"),
// radio: Yup.string().required("pls select"),
telemedicine: Yup.string().required("pls select"),
specialist: Yup.string().required("pls select"),
labTest: Yup.string().required("pls select"),
doctorPresence: Yup.string().required("pls select"),
address: Yup.string().required("pls enter address"),
area: Yup.string().required("pls enter area"),
country: Yup.string().required("select country"),
state: Yup.string().required("select state"),
city: Yup.string().required("select city"),
pincode: Yup.number()
.typeError("Pincode must be a number")
.required("Please enter a pin code"),
// mobile: Yup.number()
// .typeError("Mobile must be a number")
// .min(10, "pls enter 10 digits")
// .required("Please enter mobile number"),
mobile: Yup.array()
.of(
Yup.string()
.matches(/^\d{10}$/, "Mobile number must be 10 digits")
.required("Please enter a mobile number")
)
.min(1, "Please enter at least one mobile number"),
website: Yup.string().required("pls enter website URL"),
location: Yup.string().required("pls enter location"),
image: Yup.mixed()
.required("Please select a logo")
.test("required", "You need to provide a file", (file) => {
return file && file.length;
}),
timeslot: Yup.number()
.typeError("timeslot must be a number")
.required("Please select"),
gst: Yup.string().required("pls enter gst number"),
// selectedDays: Yup.array()
// .of(Yup.string())
// .min(1, "Please select at least one day")
// .required("Please select at least one day"),
selectedDays: Yup.array()
.of(
Yup.object().shape({
day: Yup.string()
.required("Please select a day")
.oneOf(
[
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
],
"pls select a day"
),
fromTime: Yup.mixed()
.required("Please select a from time")
.test("is-string", "Invalid time format", (value) => {
const fromTimeString = Array.isArray(value) ? value[0] : value;
return /^([01]\d|2[0-3]):([0-5]\d)$/.test(fromTimeString);
}),
toTime: Yup.mixed()
.test("is-string", "Invalid time format", (value) => {
// Use a custom Yup test to extract the string value if it's in an array
const toTimeString = Array.isArray(value) ? value[0] : value;
// Use a regular expression or any other method to validate the time format
return /^([01]\d|2[0-3]):([0-5]\d)$/.test(toTimeString);
})
.required("Please select a to time"),
})
)
.min(1, "Please select at least one day"),
{index > 0 && ( // Render delete button only for rows after the first one
<button
className="btn btn-danger btn-sm"
onClick={() => deleteRow(item.day, index)}
>
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
import * as Yup from "yup";
const formValidationSchema = Yup.object().shape({
name: Yup.string().required("Clinic Name is required"),
registration_number: Yup.string().required("Registration Number is required"),
clinic_loyalty_number: Yup.string(),
clinic_type: Yup.string().required("Clinic Type is required"),
email: Yup.string().email("Invalid email").required("Email is required"),
alternate_email: Yup.string().email("invalid email"),
phone: Yup.number()
.transform((value) => (Number.isNaN(value) ? null : value))
.nullable()
.test("min-length", "Please enter at least 10 digits", (value) => {
// Check if the value is null or undefined (nullable), or if it has at least 10 digits
return (
value === null || value === undefined || value.toString().length >= 10
);
})
.required("pls enter phone number"),
// radio: Yup.string().required("pls select"),
telemedicine: Yup.string().required("pls select"),
specialist: Yup.string().required("pls select"),
labTest: Yup.string().required("pls select"),
doctorPresence: Yup.string().required("pls select"),
address: Yup.string().required("pls enter address"),
area: Yup.string().required("pls enter area"),
country: Yup.string().required("select country"),
state: Yup.string().required("select state"),
city: Yup.string().required("select city"),
pincode: Yup.number()
.typeError("Pincode must be a number")
.required("Please enter a pin code"),
// mobile: Yup.number()
// .typeError("Mobile must be a number")
// .min(10, "pls enter 10 digits")
// .required("Please enter mobile number"),
mobile: Yup.array()
.of(
Yup.string()
.matches(/^\d{10}$/, "Mobile number must be 10 digits")
.required("Please enter a mobile number")
)
.min(1, "Please enter at least one mobile number"),
website: Yup.string().required("pls enter website URL"),
location: Yup.string().required("pls enter location"),
image: Yup.mixed()
.required("Please select a logo")
.test("required", "You need to provide a file", (file) => {
return file && file.length;
}),
timeslot: Yup.number()
.typeError("timeslot must be a number")
.required("Please select"),
gst: Yup.string().required("pls enter gst number"),
// selectedDays: Yup.array()
// .of(Yup.string())
// .min(1, "Please select at least one day")
// .required("Please select at least one day"),
selectedDays: Yup.array()
type: Yup.string().required("Please select type"),
});
export default formValidationSchema;
{tableData.map((item, dayIndex) => (
<input
type="checkbox"
// name={
selectedDays[${dayIndex}].day
}value={item.day}
{...register(
selectedDays[${dayIndex}].day
)}className="classInputCheckbox classClinicTiming"
onChange={() => handleDayClick(item.day)}
/>
{item.day}
<p style={{ color: "red" }}>
{errors.selectedDays?.message}
{item.timings.map((timing, index) => (
{console.log(index)}
From
<input
type="time"
name={
selectedDays[${dayIndex}].fromTime[${index}]
}value={timing.fromTime}
{...register(
selectedDays[${dayIndex}].fromTime[${index}]
)}
onChange={(e) =>
handleTimeChange(
item.day,
index,
"fromTime",
e.target.value
)
}
disabled={
!selectedDays.some(
(selectedDay) =>
selectedDay.day === item.day
)
}
/>
To
<input
type="time"
name={
selectedDays[${dayIndex}].toTime[${index}]
}{...register(
selectedDays[${dayIndex}].toTime[${index}]
)}
value={timing.toTime}
onChange={(e) =>
handleTimeChange(
item.day,
index,
"toTime",
e.target.value
)
}
disabled={
!selectedDays.some(
(selectedDay) =>
selectedDay.day === item.day
)
}
/>
{index > 0 && ( // Render delete button only for rows after the first one
<button
className="btn btn-danger btn-sm"
onClick={() => deleteRow(item.day, index)}
>
)}
))}
Beta Was this translation helpful? Give feedback.
All reactions