Image is required for creating an item, required fields actually required, Available After and Available Before defaults changed, delete confirmation modal for deleting an item
This commit is contained in:
@@ -90,17 +90,17 @@ const EditItem: React.FC = () => {
|
||||
zipCode: "",
|
||||
country: "US",
|
||||
rules: "",
|
||||
generalAvailableAfter: "09:00",
|
||||
generalAvailableBefore: "17:00",
|
||||
generalAvailableAfter: "00:00",
|
||||
generalAvailableBefore: "23:00",
|
||||
specifyTimesPerDay: false,
|
||||
weeklyTimes: {
|
||||
sunday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
monday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
tuesday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
wednesday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
thursday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
friday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
saturday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
sunday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
monday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
tuesday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
wednesday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
thursday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
friday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
saturday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
},
|
||||
});
|
||||
|
||||
@@ -151,17 +151,17 @@ const EditItem: React.FC = () => {
|
||||
latitude: item.latitude,
|
||||
longitude: item.longitude,
|
||||
rules: item.rules || "",
|
||||
generalAvailableAfter: item.availableAfter || "09:00",
|
||||
generalAvailableBefore: item.availableBefore || "17:00",
|
||||
generalAvailableAfter: item.availableAfter || "00:00",
|
||||
generalAvailableBefore: item.availableBefore || "23:00",
|
||||
specifyTimesPerDay: item.specifyTimesPerDay || false,
|
||||
weeklyTimes: item.weeklyTimes || {
|
||||
sunday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
monday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
tuesday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
wednesday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
thursday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
friday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
saturday: { availableAfter: "09:00", availableBefore: "17:00" },
|
||||
sunday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
monday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
tuesday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
wednesday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
thursday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
friday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
saturday: { availableAfter: "00:00", availableBefore: "23:00" },
|
||||
},
|
||||
});
|
||||
|
||||
@@ -259,6 +259,51 @@ const EditItem: React.FC = () => {
|
||||
const handleSubmit = async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
setError(null);
|
||||
|
||||
// Check total images (existing + new)
|
||||
const totalImages = existingImageKeys.length + imageFiles.length;
|
||||
if (totalImages === 0) {
|
||||
setError("At least one image is required for a listing");
|
||||
document.getElementById("image-upload-section")?.scrollIntoView({ behavior: "smooth", block: "center" });
|
||||
return;
|
||||
}
|
||||
|
||||
if (!formData.name.trim()) {
|
||||
setError("Item name is required");
|
||||
document.getElementById("name")?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!formData.address1.trim()) {
|
||||
setError("Address is required");
|
||||
document.getElementById("address1")?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!formData.city.trim()) {
|
||||
setError("City is required");
|
||||
document.getElementById("city")?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!formData.state.trim()) {
|
||||
setError("State is required");
|
||||
document.getElementById("state")?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!formData.zipCode.trim()) {
|
||||
setError("ZIP code is required");
|
||||
document.getElementById("zipCode")?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!formData.replacementCost || Number(formData.replacementCost) <= 0) {
|
||||
setError("Replacement cost is required");
|
||||
document.getElementById("replacementCost")?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
setSubmitting(true);
|
||||
|
||||
// Try to geocode the address before submitting
|
||||
@@ -358,6 +403,7 @@ const EditItem: React.FC = () => {
|
||||
|
||||
const newImageFiles = [...imageFiles, ...files];
|
||||
setImageFiles(newImageFiles);
|
||||
setError(null); // Clear any previous error
|
||||
|
||||
// Create previews
|
||||
files.forEach((file) => {
|
||||
@@ -492,14 +538,16 @@ const EditItem: React.FC = () => {
|
||||
</div>
|
||||
)}
|
||||
|
||||
<form onSubmit={handleSubmit}>
|
||||
<ImageUpload
|
||||
imageFiles={imageFiles}
|
||||
imagePreviews={imagePreviews}
|
||||
onImageChange={handleImageChange}
|
||||
onRemoveImage={removeImage}
|
||||
error={error || ""}
|
||||
/>
|
||||
<form onSubmit={handleSubmit} noValidate>
|
||||
<div id="image-upload-section">
|
||||
<ImageUpload
|
||||
imageFiles={imageFiles}
|
||||
imagePreviews={imagePreviews}
|
||||
onImageChange={handleImageChange}
|
||||
onRemoveImage={removeImage}
|
||||
error={error || ""}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<ItemInformation
|
||||
name={formData.name}
|
||||
|
||||
Reference in New Issue
Block a user