import React from 'react';
import CustomTextField from "../../Forms/CustomTextField/CustomTextField";


interface FormTextFieldProps {
    field: any;
    sec: any;
    mode: string;
    formData: Record<string, any>;
    formErrors: Record<string, string>;
    iterable_count?: number;
    sum_prefixes: string[];
    dispatch: React.Dispatch<any>;
}

const FormTextField: React.FC<FormTextFieldProps> = ({
                                                         field,
                                                         sec,
                                                         mode,
                                                         formData,
                                                         formErrors,
                                                         iterable_count = 0,
                                                         sum_prefixes,
                                                         dispatch
                                                     }) => {
    const readOnly = field?.readonly || field.autosum || mode === 'view';
    const value = sec.is_iterable ? formData[field.name]?.[iterable_count] : formData[field.name];
    const hasError = formErrors[field.name] ?? '';

    const handleChange = (e: any) => {
        if (readOnly) {
            console.log("u cant change a readonly field");
            return;
        }

        const sum_pref = sum_prefixes.find((p: string) => field.name.startsWith(p));

        if (sec.is_iterable) {
            dispatch({
                type: 'iterable',
                value: e,
                key: field.name,
                iterable_count
            });
        } else if (sum_pref) {
            dispatch({
                type: 'with_sum',
                value: e,
                key: field.name,
                key_prefix: sum_pref
            });
        } else {
            dispatch({
                type: 'simple',
                value: e,
                key: field.name
            });
        }
    };

    return (
        <CustomTextField
            readOnly={readOnly}
            id={field.name}
            value={value}
            hasError={hasError}
            theme="afm-form"
            onChange={handleChange}
        />
    );
};

export default FormTextField;
