mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-09-30 05:43:12 +00:00
Fix controlled input warning on all form pages
- Merge API response into form state instead of replacing it - Null values from the API now fall back to the form's default values - Prevents React controlled-to-uncontrolled input warning
This commit is contained in:
parent
9ae7c9b262
commit
fad2b7d661
6 changed files with 42 additions and 6 deletions
|
|
@ -28,7 +28,13 @@ export default function PmScheduleFormPage() {
|
|||
try {
|
||||
const pm = await getPMScheduleById(id);
|
||||
if (pm) {
|
||||
setFormData(pm);
|
||||
setFormData(prev => {
|
||||
const merged = { ...prev };
|
||||
for (const key of Object.keys(merged)) {
|
||||
if (pm[key] != null) merged[key] = pm[key];
|
||||
}
|
||||
return merged;
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Failed to load PM schedule", err);
|
||||
|
|
|
|||
|
|
@ -63,7 +63,13 @@ export default function EventFormPage() {
|
|||
try {
|
||||
const event = await getEventById(id);
|
||||
if (event) {
|
||||
setFormData(event);
|
||||
setFormData(prev => {
|
||||
const merged = { ...prev };
|
||||
for (const key of Object.keys(merged)) {
|
||||
if (event[key] != null) merged[key] = event[key];
|
||||
}
|
||||
return merged;
|
||||
});
|
||||
setTitleCounter(100 - (event.title?.length || 0));
|
||||
setLocationCounter(150 - (event.location?.length || 0));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,13 @@ export default function EmployeeFormPage() {
|
|||
try {
|
||||
const employee = await getEmployeeById(id);
|
||||
if (employee) {
|
||||
setFormData(employee);
|
||||
setFormData(prev => {
|
||||
const merged = { ...prev };
|
||||
for (const key of Object.keys(merged)) {
|
||||
if (employee[key] != null) merged[key] = employee[key];
|
||||
}
|
||||
return merged;
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Failed to load employee", err);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,13 @@ export default function FollowUpFormPage() {
|
|||
try {
|
||||
const followUp = await getFollowUpById(id);
|
||||
if (followUp) {
|
||||
setFormData(followUp);
|
||||
setFormData(prev => {
|
||||
const merged = { ...prev };
|
||||
for (const key of Object.keys(merged)) {
|
||||
if (followUp[key] != null) merged[key] = followUp[key];
|
||||
}
|
||||
return merged;
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Failed to load follow up", err);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,13 @@ export default function LocationFormPage() {
|
|||
try {
|
||||
const location = await getLocationById(id);
|
||||
if (location) {
|
||||
setFormData(location);
|
||||
setFormData(prev => {
|
||||
const merged = { ...prev };
|
||||
for (const key of Object.keys(merged)) {
|
||||
if (location[key] != null) merged[key] = location[key];
|
||||
}
|
||||
return merged;
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Failed to load location", err);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,13 @@ export default function WorkOrderFormPage() {
|
|||
try {
|
||||
const wo = await getWorkOrderById(id);
|
||||
if (wo) {
|
||||
setFormData(wo);
|
||||
setFormData(prev => {
|
||||
const merged = { ...prev };
|
||||
for (const key of Object.keys(merged)) {
|
||||
if (wo[key] != null) merged[key] = wo[key];
|
||||
}
|
||||
return merged;
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Failed to load work order", err);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue