diff --git a/src/pages/transfer/transfertype/blocks/EditDialog.tsx b/src/pages/transfer/transfertype/blocks/EditDialog.tsx index 01c3f10..2dab877 100644 --- a/src/pages/transfer/transfertype/blocks/EditDialog.tsx +++ b/src/pages/transfer/transfertype/blocks/EditDialog.tsx @@ -69,8 +69,7 @@ const EditDialog = () => { }); const [errors, setErrors] = useState>({}); - const [isLoadingWallets, setIsLoadingWallets] = useState(false); - + const [isLoadingWallets, setIsLoadingWallets] = useState(false); const initialState: { name: string; @@ -122,6 +121,10 @@ const EditDialog = () => { permission: prevState.permission.filter((id) => id !== groupId) }; } else { + // Hapus error permission ketika user memilih group + if (errors.permission && prevState.permission.length === 0) { + setErrors((prev) => ({ ...prev, permission: '' })); + } return { ...prevState, permission: [...prevState.permission, groupId] @@ -138,7 +141,8 @@ const EditDialog = () => { { key: 'wallet_destination', label: 'To Account' }, { key: 'status', label: 'Status' }, { key: 'status_approval', label: 'Status Approval' }, - { key: 'status_kind', label: 'Status Kind' } + { key: 'status_kind', label: 'Status Kind' }, + { key: 'permission', label: 'Group' } ]; const newErrors: Record = {}; @@ -146,9 +150,11 @@ const EditDialog = () => { requiredFields.forEach(({ key, label }) => { if ( - formField[key as keyof typeof formField] === '' || - formField[key as keyof typeof formField] === null || - formField[key as keyof typeof formField] === undefined + key === 'permission' + ? !formField[key] || formField[key].length === 0 + : formField[key as keyof typeof formField] === '' || + formField[key as keyof typeof formField] === null || + formField[key as keyof typeof formField] === undefined ) { newErrors[key] = `${label} is required`; // Show toast for each required field @@ -228,9 +234,7 @@ const EditDialog = () => { return false; } } catch (error) { - toast.error( - error instanceof Error ? error.message : 'Failed to Update Transfer Type' - ) + toast.error(error instanceof Error ? error.message : 'Failed to Update Transfer Type'); return false; } }, [formField, selectedTransferType]); @@ -369,36 +373,35 @@ const EditDialog = () => { } }, [showEditDialog]); const renderSelectWithLoading = ( - value: string, - onChangeHandler: (value: string) => void, - options: { id: string; name: string }[] | null, - placeholder: string, - isLoading: boolean - ) => { - return ( - - ); - }; - + value: string, + onChangeHandler: (value: string) => void, + options: { id: string; name: string }[] | null, + placeholder: string, + isLoading: boolean + ) => { + return ( + + ); + }; return ( handleEditDialog(open, null)}> @@ -462,7 +465,7 @@ const EditDialog = () => {
-
+
- {renderSelectWithLoading( - formField.wallet_origin, - (value) => setFormField({ ...formField, wallet_origin: value }), - wallets, - 'Select Wallet', - isLoadingWallets - )} + {renderSelectWithLoading( + formField.wallet_origin, + (value) => setFormField({ ...formField, wallet_origin: value }), + wallets, + 'Select Wallet', + isLoadingWallets + )} {errors.wallet_origin && ( {errors.wallet_origin} )} @@ -592,7 +595,9 @@ const EditDialog = () => { setErrors((prev) => ({ ...prev, wallet_destination: '' })); }} > - + @@ -604,7 +609,9 @@ const EditDialog = () => { {errors.wallet_destination && ( - {errors.wallet_destination} + + {errors.wallet_destination} + )}
@@ -759,9 +766,11 @@ const EditDialog = () => { placeholder="No groups selected" value={selectedPermissionNames || ''} readOnly - className="bg-gray-100 mb-2" + className={`bg-gray-100 mb-2 ${errors.permission ? 'border-red-500' : ''}`} /> - + {errors.permission && ( + {errors.permission} + )}
{groups.map((group) => ( @@ -786,11 +795,7 @@ const EditDialog = () => {
-