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 (
{parameters.map((param) => ( {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;