import React, { useState } from 'react'; import { Button, Dialog, DialogActions, DialogContent, FormControl, InputLabel, MenuItem, Select, TextField, Autocomplete, } from '@mui/material'; import { createFilterOptions } from '@mui/material/useAutocomplete'; import { makeStyles } from '@mui/styles'; import { useTranslation } from '../../common/components/LocalizationProvider'; const useStyles = makeStyles((theme) => ({ details: { display: 'flex', flexDirection: 'column', gap: theme.spacing(2), paddingBottom: theme.spacing(1), paddingTop: theme.spacing(3), }, })); const AddAttributeDialog = ({ open, onResult, definitions }) => { const classes = useStyles(); const t = useTranslation(); const filter = createFilterOptions({ stringify: (option) => option.name, }); const options = Object.entries(definitions).map(([key, value]) => ({ key, name: value.name, type: value.type, })); const [key, setKey] = useState(); const [type, setType] = useState('string'); return ( { setKey(option && typeof option === 'object' ? option.key : option); if (option && option.type) { setType(option.type); } }} filterOptions={(options, params) => { const filtered = filter(options, params); if (params.inputValue) { filtered.push({ key: params.inputValue, name: params.inputValue, }); } return filtered; }} options={options} getOptionLabel={(option) => (option && typeof option === 'object' ? option.name : option)} renderOption={(props, option) => (
  • {option.name}
  • )} renderInput={(params) => ( )} freeSolo /> {t('sharedType')}
    ); }; export default AddAttributeDialog;