Skip to content

Commit 3b1617e

Browse files
committed
Replaced setError prop with clearErrorField to properly clear field errors on change
1 parent 445bf70 commit 3b1617e

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

Clients/src/presentation/components/Policies/PolicyForm.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const PolicyForm: React.FC<PolicyFormProps> = ({
3232
setFormData,
3333
tags,
3434
errors,
35+
clearFieldError,
3536
}) => {
3637
const theme = useTheme();
3738
const { users } = useUsers();
@@ -43,8 +44,9 @@ const PolicyForm: React.FC<PolicyFormProps> = ({
4344
...prevValues,
4445
[prop]: newValue,
4546
}));
47+
clearFieldError(prop);
4648
},
47-
[]
49+
[clearFieldError]
4850
);
4951

5052
const handleDateChange = useCallback((newDate: Dayjs | null) => {
@@ -53,8 +55,9 @@ const PolicyForm: React.FC<PolicyFormProps> = ({
5355
...prevValues,
5456
nextReviewDate: newDate ? newDate.toISOString() : "",
5557
}));
58+
clearFieldError("nextReviewDate");
5659
}
57-
}, []);
60+
}, [clearFieldError]);
5861

5962
const autocompleteSlotProps = {
6063
paper: {
@@ -88,9 +91,10 @@ const PolicyForm: React.FC<PolicyFormProps> = ({
8891
label="Policy title"
8992
width="100%"
9093
value={formData.title ?? ""}
91-
onChange={(e) =>
92-
setFormData((prev) => ({ ...prev, title: e.target.value }))
93-
}
94+
onChange={(e) => {
95+
setFormData((prev) => ({ ...prev, title: e.target.value }));
96+
clearFieldError("title");
97+
}}
9498
error={errors.title}
9599
sx={{
96100
backgroundColor: `${background.main}`,
@@ -306,6 +310,7 @@ const PolicyForm: React.FC<PolicyFormProps> = ({
306310
const statusValue = e.target.value;
307311
if (typeof statusValue === "string") {
308312
setFormData((prev) => ({ ...prev, status: statusValue }));
313+
clearFieldError("status");
309314
}
310315
}}
311316
items={statuses.map((s) => ({ _id: s, name: s }))}

Clients/src/presentation/pages/PolicyDashboard/PolicyEditorPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ export default function PolicyEditorPage() {
497497
[]
498498
);
499499

500-
const { errors: validationErrors, validateAll, resetErrors } =
500+
const { errors: validationErrors, validateAll, resetErrors, clearFieldError } =
501501
useFormValidation<PolicyFormData>(validators);
502502

503503
const displayErrors = useMemo(
@@ -1740,7 +1740,7 @@ export default function PolicyEditorPage() {
17401740
setFormData={setFormData}
17411741
tags={tags}
17421742
errors={displayErrors}
1743-
setErrors={() => {}}
1743+
clearFieldError={clearFieldError}
17441744
/>
17451745
</Box>
17461746

Clients/src/presentation/types/interfaces/i.policy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export interface PolicyFormProps {
4848
setFormData: React.Dispatch<React.SetStateAction<import("../../../domain/interfaces/i.policy").PolicyFormData>>;
4949
tags: string[];
5050
errors: import("../../../domain/interfaces/i.policy").PolicyFormErrors;
51-
setErrors: React.Dispatch<React.SetStateAction<import("../../../domain/interfaces/i.policy").PolicyFormErrors>>;
51+
clearFieldError: (field: keyof import("../../../domain/interfaces/i.policy").PolicyFormData) => void;
5252
}
5353

5454
/**

0 commit comments

Comments
 (0)