import * as React from 'react'; import MuiTextField from '@mui/material/TextField'; import CircularProgress from '@mui/material/CircularProgress'; import useDynamicFields from 'hooks/useDynamicFields'; import useDynamicData from 'hooks/useDynamicData'; import PowerInput from 'components/PowerInput'; import TextField from 'components/TextField'; import ControlledAutocomplete from 'components/ControlledAutocomplete'; import ControlledCustomAutocomplete from 'components/ControlledCustomAutocomplete'; import DynamicField from 'components/DynamicField'; const optionGenerator = (options) => options?.map(({ name, value }) => ({ label: name, value: value })); export default function InputCreator(props) { const { onChange, onBlur, schema, namePrefix, stepId, disabled, showOptionValue, shouldUnregister, } = props; const { key: name, label, required, readOnly = false, value, description, type, } = schema; const { data, loading } = useDynamicData(stepId, schema); const { data: additionalFieldsData, isLoading: isDynamicFieldsLoading } = useDynamicFields(stepId, schema); const additionalFields = additionalFieldsData?.data; const computedName = namePrefix ? `${namePrefix}.${name}` : name; if (type === 'dynamic') { return ( ); } if (type === 'dropdown') { const preparedOptions = schema.options || optionGenerator(data); return ( {!schema.variables && ( ( )} defaultValue={value} description={description} loading={loading} disabled={disabled} showOptionValue={showOptionValue} shouldUnregister={shouldUnregister} componentsProps={{ popper: { className: 'nowheel' } }} /> )} {schema.variables && ( )} {isDynamicFieldsLoading && !additionalFields?.length && (
)} {additionalFields?.map((field) => ( ))}
); } if (type === 'string') { if (schema.variables) { return ( {isDynamicFieldsLoading && !additionalFields?.length && (
)} {additionalFields?.map((field) => ( ))}
); } return ( {isDynamicFieldsLoading && !additionalFields?.length && (
)} {additionalFields?.map((field) => ( ))}
); } return ; }