fix: admin/fs: regression (0.22.1) on masks validation, not working
Massimo Melina committed
Jun 3, 2022 at 17:34 UTC
61801a3c9fbddab1cea80279a374a231f5c983c6
1 file changed
+5
-2
mui-grid-form/src/Form.ts
+5
-2
@@ -74,6 +74,7 @@ export function Form<Values extends Dict>({ fields, values, set, defaults, save,
74
}, [])
75
76
const [errors, setErrors] = useState<Dict<ValidationError>>({})
77
+ const [fieldExceptions, setFieldExceptions] = useState<Dict<ValidationError>>({})
78
const saveBtn = typeof save === 'function' ? { onClick: save } : save // normalize
79
const [phase, setPhase] = useState(Phase.Idle)
80
const submitAfterValidation = useRef(false)
@@ -104,7 +105,7 @@ export function Form<Values extends Dict>({ fields, values, set, defaults, save,
105
if (isValidElement(row))
106
return h(Grid, { key: idx, item: true, xs: 12 }, row)
107
const { k, fromField=_.identity, toField=_.identity, getError, error, ...field } = row
107
- let errMsg = errors[k]
108
+ let errMsg = errors[k] || fieldExceptions[k]
109
if (errMsg === true)
110
errMsg = "Not valid"
111
if (k) {
@@ -124,12 +125,13 @@ export function Form<Values extends Dict>({ fields, values, set, defaults, save,
125
onChange(v) {
126
try {
127
v = fromField(v)
128
+ setFieldExceptions(x => ({ ...x, [k]: false }))
129
if (_.isEqual(v, originalValue)) return
130
set(v, k)
131
pleaseValidate(k)
132
}
133
catch (e) {
132
- onError?.(e)
134
+ setFieldExceptions(x => ({ ...x, [k]: (e as any)?.message || String(e) || true }))
135
}
136
},
137
} as Partial<FieldProps<any>>)
@@ -192,6 +194,7 @@ export function Form<Values extends Dict>({ fields, values, set, defaults, save,
194
const v = values?.[k]
195
const err = await apis[k]?.getError()
196
|| await f.getError?.(v, { values, fields })
197
+ || fieldExceptions[k]
198
errs[k] = err || false
199
if (k === validateUpTo.current) break
200
if (!mounted.current) return // abort