fix(site): Add helper text and prevent undefined when deleting empty value (#6757)

This commit is contained in:
Bruno Quaresma 2023-03-23 17:44:40 -03:00 committed by GitHub
parent 2383f64d89
commit b71b8daa21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 47 additions and 38 deletions

View File

@ -1,4 +1,5 @@
import Chip from "@material-ui/core/Chip" import Chip from "@material-ui/core/Chip"
import FormHelperText from "@material-ui/core/FormHelperText"
import { makeStyles } from "@material-ui/core/styles" import { makeStyles } from "@material-ui/core/styles"
import { FC } from "react" import { FC } from "react"
@ -16,46 +17,54 @@ export const MultiTextField: FC<MultiTextFieldProps> = ({
const styles = useStyles() const styles = useStyles()
return ( return (
<label className={styles.root}> <div>
{values.map((value, index) => ( <label className={styles.root}>
<Chip {values.map((value, index) => (
key={index} <Chip
label={value} key={index}
size="small" label={value}
onDelete={() => { size="small"
onChange(values.filter((oldValue) => oldValue !== value)) onDelete={() => {
onChange(values.filter((oldValue) => oldValue !== value))
}}
/>
))}
<input
aria-label={label}
className={styles.input}
onKeyDown={(event) => {
if (event.key === ",") {
event.preventDefault()
const newValue = event.currentTarget.value
onChange([...values, newValue])
event.currentTarget.value = ""
return
}
if (event.key === "Backspace" && event.currentTarget.value === "") {
event.preventDefault()
if (values.length === 0) {
return
}
const lastValue = values[values.length - 1]
onChange(values.slice(0, -1))
event.currentTarget.value = lastValue
}
}}
onBlur={(event) => {
if (event.currentTarget.value !== "") {
const newValue = event.currentTarget.value
onChange([...values, newValue])
event.currentTarget.value = ""
}
}} }}
/> />
))} </label>
<input
aria-label={label}
className={styles.input}
onKeyDown={(event) => {
if (event.key === ",") {
event.preventDefault()
const newValue = event.currentTarget.value
onChange([...values, newValue])
event.currentTarget.value = ""
return
}
if (event.key === "Backspace" && event.currentTarget.value === "") { <FormHelperText>{'Type "," to separate the values'}</FormHelperText>
event.preventDefault() </div>
const lastValue = values[values.length - 1]
onChange(values.slice(0, -1))
event.currentTarget.value = lastValue
return
}
}}
onBlur={(event) => {
if (event.currentTarget.value !== "") {
const newValue = event.currentTarget.value
onChange([...values, newValue])
event.currentTarget.value = ""
}
}}
/>
</label>
) )
} }
@ -63,7 +72,7 @@ const useStyles = makeStyles((theme) => ({
root: { root: {
border: `1px solid ${theme.palette.divider}`, border: `1px solid ${theme.palette.divider}`,
borderRadius: theme.shape.borderRadius, borderRadius: theme.shape.borderRadius,
minHeight: theme.spacing(5), minHeight: theme.spacing(6), // Chip height + paddings
padding: theme.spacing(1.25, 1.75), padding: theme.spacing(1.25, 1.75),
fontSize: theme.spacing(2), fontSize: theme.spacing(2),
display: "flex", display: "flex",