setFormErrorList([])}
- />
- )}
+
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/bank/form/BankForm.tsx b/src/components/pages/master-data/bank/form/BankForm.tsx
index ac5cc531..13c85422 100644
--- a/src/components/pages/master-data/bank/form/BankForm.tsx
+++ b/src/components/pages/master-data/bank/form/BankForm.tsx
@@ -25,6 +25,8 @@ import {
} from '@/types/api/master-data/bank';
import { BankApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
+import AlertErrorList from '@/components/helper/form/FormErrors';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
interface BankFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -124,6 +126,9 @@ const BankForm = ({ type = 'add', initialValues }: BankFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -145,7 +150,7 @@ const BankForm = ({ type = 'add', initialValues }: BankFormProps) => {
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/customer/form/CustomerForm.tsx b/src/components/pages/master-data/customer/form/CustomerForm.tsx
index fd3cea6f..0a629b36 100644
--- a/src/components/pages/master-data/customer/form/CustomerForm.tsx
+++ b/src/components/pages/master-data/customer/form/CustomerForm.tsx
@@ -28,6 +28,8 @@ import useSWR from 'swr';
import { UserApi } from '@/services/api/user';
import { TYPE_OPTIONS } from '@/config/constant';
import RequirePermission from '@/components/helper/RequirePermission';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
+import AlertErrorList from '@/components/helper/form/FormErrors';
interface CustomerFormProps {
formType?: 'add' | 'edit' | 'detail';
@@ -191,6 +193,9 @@ const CustomerForm = ({
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
// Render
return (
<>
@@ -213,7 +218,7 @@ const CustomerForm = ({
)}
+
+
{formType !== 'detail' && (
Submit
diff --git a/src/components/pages/master-data/fcr/form/FcrForm.tsx b/src/components/pages/master-data/fcr/form/FcrForm.tsx
index f30ec7e9..807e7e45 100644
--- a/src/components/pages/master-data/fcr/form/FcrForm.tsx
+++ b/src/components/pages/master-data/fcr/form/FcrForm.tsx
@@ -26,6 +26,8 @@ import {
} from '@/types/api/master-data/fcr';
import { FcrApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
+import AlertErrorList from '@/components/helper/form/FormErrors';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
interface FcrFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -158,6 +160,9 @@ const FcrForm = ({ type = 'add', initialValues }: FcrFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -179,7 +184,7 @@ const FcrForm = ({ type = 'add', initialValues }: FcrFormProps) => {
+
+
{type !== 'add' && (
@@ -349,7 +356,7 @@ const FcrForm = ({ type = 'add', initialValues }: FcrFormProps) => {
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/flock/form/FlockForm.tsx b/src/components/pages/master-data/flock/form/FlockForm.tsx
index 5db61656..51ed4325 100644
--- a/src/components/pages/master-data/flock/form/FlockForm.tsx
+++ b/src/components/pages/master-data/flock/form/FlockForm.tsx
@@ -17,6 +17,8 @@ import TextInput from '@/components/input/TextInput';
import { cn } from '@/lib/helper';
import ConfirmationModal from '@/components/modal/ConfirmationModal';
import RequirePermission from '@/components/helper/RequirePermission';
+import AlertErrorList from '@/components/helper/form/FormErrors';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
interface FlockCustomProps {
formType?: 'add' | 'edit' | 'detail';
@@ -86,6 +88,9 @@ const FlockForm = ({ formType = 'add', initialValues }: FlockCustomProps) => {
formikSetValues(formikInitialValue);
}, [formikSetValues, formikInitialValue]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
// Render
return (
<>
@@ -107,7 +112,7 @@ const FlockForm = ({ formType = 'add', initialValues }: FlockCustomProps) => {
)}
+
+
{formType !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/kandang/form/KandangForm.tsx b/src/components/pages/master-data/kandang/form/KandangForm.tsx
index 81911ab0..ffea5718 100644
--- a/src/components/pages/master-data/kandang/form/KandangForm.tsx
+++ b/src/components/pages/master-data/kandang/form/KandangForm.tsx
@@ -29,6 +29,8 @@ import { LocationApi, KandangApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
import { UserApi } from '@/services/api/user';
import NumberInput from '@/components/input/NumberInput';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
+import AlertErrorList from '@/components/helper/form/FormErrors';
interface KandangFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -198,6 +200,9 @@ const KandangForm = ({ type = 'add', initialValues }: KandangFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -219,7 +224,7 @@ const KandangForm = ({ type = 'add', initialValues }: KandangFormProps) => {
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/location/form/LocationForm.tsx b/src/components/pages/master-data/location/form/LocationForm.tsx
index 68a10527..9f77cf86 100644
--- a/src/components/pages/master-data/location/form/LocationForm.tsx
+++ b/src/components/pages/master-data/location/form/LocationForm.tsx
@@ -27,6 +27,8 @@ import {
} from '@/types/api/master-data/location';
import { AreaApi, LocationApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
+import AlertErrorList from '@/components/helper/form/FormErrors';
interface LocationFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -160,6 +162,9 @@ const LocationForm = ({ type = 'add', initialValues }: LocationFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -181,7 +186,7 @@ const LocationForm = ({ type = 'add', initialValues }: LocationFormProps) => {
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/nonstock/form/NonstockForm.tsx b/src/components/pages/master-data/nonstock/form/NonstockForm.tsx
index af72f22f..7d8b8784 100644
--- a/src/components/pages/master-data/nonstock/form/NonstockForm.tsx
+++ b/src/components/pages/master-data/nonstock/form/NonstockForm.tsx
@@ -29,6 +29,8 @@ import { NonstockApi, SupplierApi, UomApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
import { flags } from '@/types/api/api-general';
import { SUPPLIER_FLAG_OPTIONS } from '@/config/constant';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
+import AlertErrorList from '@/components/helper/form/FormErrors';
interface NonstockFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -213,6 +215,9 @@ const NonstockForm = ({ type = 'add', initialValues }: NonstockFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -234,7 +239,7 @@ const NonstockForm = ({ type = 'add', initialValues }: NonstockFormProps) => {
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/product-category/form/ProductCategoryForm.tsx b/src/components/pages/master-data/product-category/form/ProductCategoryForm.tsx
index d241a3dd..1e61879c 100644
--- a/src/components/pages/master-data/product-category/form/ProductCategoryForm.tsx
+++ b/src/components/pages/master-data/product-category/form/ProductCategoryForm.tsx
@@ -11,7 +11,6 @@ import TextInput from '@/components/input/TextInput';
import { useModal } from '@/components/Modal';
import ConfirmationModal from '@/components/modal/ConfirmationModal';
import RequirePermission from '@/components/helper/RequirePermission';
-import { getUniqueFormikErrors } from '@/lib/formik-helper';
import AlertErrorList from '@/components/helper/form/FormErrors';
import {
@@ -27,6 +26,7 @@ import {
} from '@/types/api/master-data/product-category';
import { ProductCategoryApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
interface ProductCategoryFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -41,7 +41,6 @@ const ProductCategoryForm = ({
const deleteModal = useModal();
const [formErrorMessage, setFormErrorMessage] = useState('');
- const [formErrorList, setFormErrorList] = useState([]);
const [isDeleteLoading, setIsDeleteLoading] = useState(false);
const createProductCategoryHandler = useCallback(
@@ -132,21 +131,8 @@ const ProductCategoryForm = ({
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
- const handleValidateForm = async () => {
- const errors = await formik.validateForm();
-
- if (Object.keys(errors).length > 0) {
- const errorMessages = getUniqueFormikErrors(errors);
- setFormErrorList(errorMessages);
- return;
- }
- };
-
- const handleFormSubmit = (e: React.FormEvent) => {
- e.preventDefault();
- handleValidateForm();
- formik.handleSubmit(e);
- };
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
return (
<>
@@ -184,13 +170,7 @@ const ProductCategoryForm = ({
)}
- {/* Error List Alert */}
- {formErrorList.length > 0 && (
-
setFormErrorList([])}
- />
- )}
+
{
const deleteModal = useModal();
const [productFormErrorMessage, setProductFormErrorMessage] = useState('');
- const [formErrorList, setFormErrorList] = useState([]);
const [isDeleteLoading, setIsDeleteLoading] = useState(false);
const createProductHandler = useCallback(
@@ -204,21 +204,8 @@ const ProductForm = ({ type = 'add', initialValues }: ProductFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
- const handleValidateForm = async () => {
- const errors = await formik.validateForm();
-
- if (Object.keys(errors).length > 0) {
- const errorMessages = getUniqueFormikErrors(errors);
- setFormErrorList(errorMessages);
- return;
- }
- };
-
- const handleFormSubmit = (e: React.FormEvent) => {
- e.preventDefault();
- handleValidateForm();
- formik.handleSubmit(e);
- };
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
return (
<>
@@ -254,13 +241,7 @@ const ProductForm = ({ type = 'add', initialValues }: ProductFormProps) => {
)}
- {/* Error List Alert */}
- {formErrorList.length > 0 && (
- setFormErrorList([])}
- />
- )}
+
{
switch (formType) {
case 'add':
@@ -723,7 +727,8 @@ const ProductionStandardForm = ({
router.push('/master-data/production-standard');
};
- // ===== Function =====
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
return (
<>
@@ -1210,9 +1215,26 @@ const ProductionStandardForm = ({
return null;
}}
/>
+
+
+
+ {productionStandardFormErrorMessage && (
+
+
+
+ {productionStandardFormErrorMessage}
+
+ setProductionStandardFormErrorMessage('')}
+ className='ms-auto'
+ />
+
+ )}
+
- {productionStandardFormErrorMessage && (
-
-
-
- {productionStandardFormErrorMessage}
-
- setProductionStandardFormErrorMessage('')}
- className='ms-auto'
- />
-
- )}
@@ -221,7 +226,7 @@ const SupplierForm = ({
)}
+
+
{formType !== 'detail' && (
Submit
diff --git a/src/components/pages/master-data/uom/form/UomForm.tsx b/src/components/pages/master-data/uom/form/UomForm.tsx
index 50576eef..366f9682 100644
--- a/src/components/pages/master-data/uom/form/UomForm.tsx
+++ b/src/components/pages/master-data/uom/form/UomForm.tsx
@@ -25,6 +25,8 @@ import {
} from '@/types/api/master-data/uom';
import { UomApi } from '@/services/api/master-data';
import { cn } from '@/lib/helper';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
+import AlertErrorList from '@/components/helper/form/FormErrors';
interface UomFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -118,6 +120,9 @@ const UomForm = ({ type = 'add', initialValues }: UomFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -139,7 +144,7 @@ const UomForm = ({ type = 'add', initialValues }: UomFormProps) => {
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/master-data/warehouse/form/WarehouseForm.tsx b/src/components/pages/master-data/warehouse/form/WarehouseForm.tsx
index 227af3c6..0fb55a2a 100644
--- a/src/components/pages/master-data/warehouse/form/WarehouseForm.tsx
+++ b/src/components/pages/master-data/warehouse/form/WarehouseForm.tsx
@@ -33,6 +33,8 @@ import {
} from '@/services/api/master-data';
import { cn } from '@/lib/helper';
import { WAREHOUSE_TYPE_OPTIONS } from '@/config/constant';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
+import AlertErrorList from '@/components/helper/form/FormErrors';
interface WarehouseFormProps {
type?: 'add' | 'edit' | 'detail';
@@ -323,6 +325,9 @@ const WarehouseForm = ({ type = 'add', initialValues }: WarehouseFormProps) => {
formikSetValues(formikInitialValues);
}, [formikSetValues, formikInitialValues]);
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
+
return (
<>
@@ -344,7 +349,7 @@ const WarehouseForm = ({ type = 'add', initialValues }: WarehouseFormProps) => {
)}
+
+
{type !== 'detail' && (
{
type='submit'
color='primary'
isLoading={formik.isSubmitting}
- disabled={!formik.isValid || formik.isSubmitting}
+ disabled={formik.isSubmitting}
className='px-4'
>
Submit
diff --git a/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx b/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx
index 9835c244..4a998c83 100644
--- a/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx
+++ b/src/components/pages/production/project-flock/detail/ProjectFlockDetail.tsx
@@ -209,20 +209,6 @@ const ProjectFlockDetail = ({
- {/*
- History
-
-
-
-
*/}
-
{/* BARIS 1 */}
{projectFlock?.fcr?.name}
+
+ {' '}
+ Standard
+
+
+ {projectFlock?.production_standard?.name ?? '-'}
+
+
{/* BARIS 3 (Terakhir - TIDAK PERLU garis di bawahnya) */}
{' '}
diff --git a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx
index 7e90c94b..745a6b1e 100644
--- a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx
+++ b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx
@@ -6,7 +6,6 @@ import SelectInput, {
useSelect,
} from '@/components/input/SelectInput';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
-import { getUniqueFormikErrors } from '@/lib/formik-helper';
import AlertErrorList from '@/components/helper/form/FormErrors';
import {
AreaApi,
@@ -47,6 +46,7 @@ import { Nonstock } from '@/types/api/master-data/nonstock';
import { useUiStore } from '@/stores/ui/ui.store';
import RequirePermission from '@/components/helper/RequirePermission';
import DrawerHeader from '@/components/helper/drawer/DrawerHeader';
+import { useFormikErrorList } from '@/services/hooks/useFormikErrorList';
interface ProjectFlockFormProps {
formType?: 'add' | 'edit' | 'detail';
@@ -66,7 +66,6 @@ const ProjectFlockForm = ({
const [projectFlockFormErrorMessage, setProjectFlockFormErrorMessage] =
useState('');
- const [formErrorList, setFormErrorList] = useState([]);
const [selectedArea, setSelectedArea] = useState('');
const [selectedLocation, setSelectedLocation] = useState('');
const [selectedCategory, setSelectedCategory] = useState('');
@@ -642,16 +641,8 @@ const ProjectFlockForm = ({
return !isNonstockAlreadyInBudgets;
});
- const handleValidateForm = async () => {
- const errors = await formik.validateForm();
-
- if (Object.keys(errors).length > 0) {
- // Parse and display errors
- const errorMessages = getUniqueFormikErrors(errors);
- setFormErrorList(errorMessages);
- return; // Stop submission
- }
- };
+ // ===== Formik Error List =====
+ const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
return (
<>
@@ -712,11 +703,7 @@ const ProjectFlockForm = ({