1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-28 17:55:15 +02:00
unleash.unleash/frontend/src/component/common/InputListField/InputListField.tsx
Nuno Góis 4167a60588
feat: biome lint frontend (#4903)
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome
to the frontend as well.


![image](https://github.com/Unleash/unleash/assets/14320932/1906faf1-fc29-4172-a4d4-b2716d72cd65)

Added a few `biome-ignore` to speed up the process but we may want to
check and fix them in the future.
2023-10-02 13:25:46 +01:00

54 lines
1.5 KiB
TypeScript

import { VFC } from 'react';
import { TextField, TextFieldProps } from '@mui/material';
interface IInputListFieldProps {
label: string;
values?: any[];
error?: boolean;
placeholder?: string;
name: string;
updateValues: (values: string[]) => void;
onBlur?: TextFieldProps['onBlur'];
helperText?: TextFieldProps['helperText'];
FormHelperTextProps?: TextFieldProps['FormHelperTextProps'];
}
export const InputListField: VFC<IInputListFieldProps> = ({
values = [],
updateValues,
placeholder = '',
error,
...rest
}) => {
const handleChange: TextFieldProps['onChange'] = (event) => {
const values = event.target.value.split(/,\s?/);
const trimmedValues = values.map((v) => v.trim());
updateValues(trimmedValues);
};
const handleKeyDown: TextFieldProps['onKeyDown'] = (event) => {
if (event.key === 'Backspace') {
const currentValue = (event.target as HTMLInputElement).value;
if (currentValue.endsWith(', ')) {
event.preventDefault();
const value = currentValue.slice(0, -2);
updateValues(value.split(/,\s*/));
}
}
};
return (
<TextField
{...rest}
error={error}
placeholder={placeholder}
value={values ? values.join(', ') : ''}
onKeyDown={handleKeyDown}
onChange={handleChange}
style={{ width: '100%' }}
variant='outlined'
size='small'
/>
);
};