// frontend/src/components/domain/suppliers/CreateSupplierForm.tsx /** * Example usage of enum helpers with i18n in a supplier form */ import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Select } from '../../ui/Select'; import { Button } from '../../ui/Button/Button'; import { useSupplierEnums } from '../../../utils/enumHelpers'; import { SupplierType, SupplierStatus, PaymentTerms } from '../../../api/types/suppliers'; interface CreateSupplierFormProps { onSubmit: (data: SupplierFormData) => void; onCancel: () => void; } interface SupplierFormData { name: string; supplier_type: SupplierType; status: SupplierStatus; payment_terms: PaymentTerms; email: string; phone: string; } export const CreateSupplierForm: React.FC = ({ onSubmit, onCancel }) => { const { t } = useTranslation(['suppliers', 'common']); const supplierEnums = useSupplierEnums(); const [formData, setFormData] = useState({ name: '', supplier_type: SupplierType.INGREDIENTS, status: SupplierStatus.PENDING_APPROVAL, payment_terms: PaymentTerms.NET_30, email: '', phone: '' }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSubmit(formData); }; const handleFieldChange = (field: keyof SupplierFormData, value: any) => { setFormData(prev => ({ ...prev, [field]: value })); }; return (
{/* Supplier Name */}
handleFieldChange('name', e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder={t('common:forms.enter_supplier_name')} />
{/* Supplier Type - Using enum helper */}
handleFieldChange('status', value as SupplierStatus)} placeholder={t('common:forms.select_option')} />
{/* Payment Terms - Using enum helper */}
handleFieldChange('email', e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder={t('common:forms.enter_email')} />
{/* Phone */}
handleFieldChange('phone', e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder={t('common:forms.enter_phone')} />
{/* Actions */}
{/* Display current selections for debugging */}

Current Selections:

  • Tipo: {supplierEnums.getSupplierTypeLabel(formData.supplier_type)}
  • Estado: {supplierEnums.getSupplierStatusLabel(formData.status)}
  • Términos de Pago: {supplierEnums.getPaymentTermsLabel(formData.payment_terms)}
  • Debug - Payment Terms Raw: {formData.payment_terms}
  • Debug - Translation Test: {t('suppliers:payment_terms.net_30')}
); };