import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { Button, Form } from 'react-bootstrap';
const PluginParameterForm = ({ parameters, initialValues, onSubmit, loading }) => {
const [values, setValues] = useState(initialValues || {});
const [errors, setErrors] = useState({});
const handleChange = (e, param) => {
const { name, value, type, checked } = e.target;
setValues((prev) => ({
...prev,
[name]: type === 'checkbox' ? checked : value,
}));
};
const handleSubmit = (e) => {
e.preventDefault();
setErrors({});
onSubmit(values);
};
return (
{param.description || param.name} {param.type === 'int' && (int{param.min !== undefined ? `, min: ${param.min}` : ''}{param.max !== undefined ? `, max: ${param.max}` : ''})} {param.type === 'float' && (float{param.min !== undefined ? `, min: ${param.min}` : ''}{param.max !== undefined ? `, max: ${param.max}` : ''})}
{param.type === 'int' || param.type === 'float' ? (
handleChange(e, param)}
required={param.default === undefined}
/>
) : param.type === 'bool' ? (
handleChange(e, param)}
/>
) : param.type === 'select' ? (
handleChange(e, param)}
>
{param.options.map((opt) => (
))}
) : (
handleChange(e, param)}
required={param.default === undefined}
/>
)}
{errors[param.name] && {errors[param.name]}}
))}
);
};
PluginParameterForm.propTypes = {
parameters: PropTypes.array.isRequired,
initialValues: PropTypes.object,
onSubmit: PropTypes.func.isRequired,
loading: PropTypes.bool,
};
export default PluginParameterForm;