refactor(FE): Use local state for record date and disable

reinitialization
This commit is contained in:
rstubryan
2026-01-22 14:20:16 +07:00
parent eca8bd7026
commit 49e9e958fa
@@ -197,6 +197,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
const router = useRouter();
// ===== STATE MANAGEMENT =====
const [selectedRecordDate, setSelectedRecordDate] = useState<string>(
initialValues?.record_datetime
? new Date(initialValues.record_datetime).toISOString().split('T')[0]
: new Date().toISOString().split('T')[0]
);
const [selectedStocks, setSelectedStocks] = useState<number[]>([]);
const [selectedDepletions, setSelectedDepletions] = useState<number[]>([]);
const [selectedEggs, setSelectedEggs] = useState<number[]>([]);
@@ -911,6 +916,8 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
baseValues = getRecordingGrowingFormInitialValues(initialValues);
}
baseValues.record_date = selectedRecordDate;
if (type === 'add') {
baseValues.location = selectedLocation
? {
@@ -967,13 +974,22 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
}
return baseValues;
}, [initialValues, isLayingCategory, projectFlockKandangDetail, type]);
}, [
initialValues,
isLayingCategory,
projectFlockKandangDetail,
type,
selectedRecordDate,
selectedLocation,
selectedProjectFlock,
selectedKandang,
]);
const formik = useFormik<
RecordingGrowingFormValues | RecordingLayingFormValues
>({
initialValues: formikInitialValues,
enableReinitialize: true,
enableReinitialize: false,
validationSchema: (() => {
let schema;
if (isLayingCategory) {
@@ -1333,6 +1349,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
(e: React.ChangeEvent<HTMLInputElement>) => {
const newDate = e.target.value;
formik.setFieldValue('record_date', newDate);
setSelectedRecordDate(newDate);
setCurrentRecordDate(newDate);
if (duplicateErrorShown) {
toast.dismiss();