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:
Adam Moussa 2026-04-16 17:34:53 -04:00
parent 9ae7c9b262
commit fad2b7d661
6 changed files with 42 additions and 6 deletions

View file

@ -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);

View file

@ -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));
}

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);