fix: admin/accounts: add user, enter username, add group, enter same username, an invalid 'required' error occurs

Massimo Melina committed Jan 7, 2023 at 18:23 UTC 609241511d50a3e6a2f54b1ab21aecf2a489f76b
1 file changed +8 -5
mui-grid-form/src/StringField.ts
+8 -5
@@ -3,7 +3,7 @@ import { FieldProps } from './Form'
3 import { InputAdornment, TextField } from '@mui/material'
4
5 export function StringField({ value, onChange, min, max, required, getApi, typing, start, end, ...props }: FieldProps<string>) {
6 - const setter = () => value ?? ''
6 + const normalized = value ?? ''
7 getApi?.({
8 getError() {
9 return !value && required ? "required"
@@ -12,10 +12,13 @@ export function StringField({ value, onChange, min, max, required, getApi, typin
12 : false
13 }
14 })
15 - const [state, setState] = useState(setter)
15 + const [state, setState] = useState(normalized)
16
17 - const lastChange = useRef(value)
18 - useEffect(() => setState(setter), [value]) //eslint-disable-line
17 + const lastChange = useRef(normalized)
18 + useEffect(() => {
19 + setState(normalized)
20 + lastChange.current = normalized
21 + }, [normalized])
22 return h(TextField, {
23 fullWidth: true,
24 InputLabelProps: state || props.placeholder ? { shrink: true } : undefined,
@@ -53,7 +56,7 @@ export function StringField({ value, onChange, min, max, required, getApi, typin
56 was: value,
57 event,
58 cancel() {
56 - setState(setter)
59 + setState(normalized)
60 }
61 })
62 }