1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-24 17:51:14 +02:00
unleash.unleash/frontend/src/component/common/InputListField/InputListField.tsx
olav 24c11332b5 chore: update MUI to v5 (#923)
* refactor: update mui packages

* refactor: run mui codemods

* refactor: format files after codemods

* refactor: fix broken types

* refactor: clean up theme

* refactor: fix broken tests

* refactor: replace @mui/styles with tss-react

* refactor: move breakpoints into classes for tss

* refactor: fix crash on missing feature description

* refactor: remove void classNames

* refactor: adjust styles to new defaults

* refactor: remove broken rollout slider e2e test

* refactor: fix duplicate e2e testid

* refactor: update makeStyles after rebase

* refactor: add missing snapshot after rebase

* refactor: fix TableCellSortable focus styles

* refactor: use 1.4 as the default line-height

* refactor: hide webkit search field icons

* refactor: fix select box label

* refactor: make AutocompleteBox smaller

* refactor: make heading smaller

* refactor: fix toast close icon color

* refactor: update snapshots

* refactor: add missing test event awaits

* refactor: fix default button line-height
2022-05-02 15:52:41 +02: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"
/>
);
};