@@ -4,7 +4,12 @@ import React, {
44 useMemo ,
55 useState
66} from 'react' ;
7- import { Kbd , FormControl , FormLabel } from '@chakra-ui/react' ;
7+ import {
8+ Kbd ,
9+ FormControl ,
10+ FormLabel ,
11+ FormErrorMessage
12+ } from '@chakra-ui/react' ;
813import { FastField , FastFieldProps } from 'formik' ;
914import CreatableSelect from 'react-select/creatable' ;
1015import {
@@ -81,26 +86,30 @@ function WidgetTaggerNoOptions(props: WidgetProps) {
8186 const key = useRenderKey ( [ pointer , isRequired , field ] ) ;
8287
8388 return (
84- < FormControl isRequired = { isRequired } >
85- { field . label && (
86- < FormLabel >
87- < FieldLabel size = 'xs' > { field . label } </ FieldLabel >
88- </ FormLabel >
89- ) }
90-
91- < FastField name = { pointer } key = { key } >
92- { ( {
93- field : { value, name } ,
94- form : { setFieldValue }
95- } : FastFieldProps ) => (
89+ < FastField name = { pointer } key = { key } >
90+ { ( {
91+ field : { value, name } ,
92+ meta,
93+ form : { setFieldValue }
94+ } : FastFieldProps ) => (
95+ < FormControl
96+ isRequired = { isRequired }
97+ isInvalid = { ! ! ( meta . touched && meta . error ) }
98+ >
99+ { field . label && (
100+ < FormLabel >
101+ < FieldLabel size = 'xs' > { field . label } </ FieldLabel >
102+ </ FormLabel >
103+ ) }
96104 < WidgetTaggerNoOptionsSelect
97105 pointer = { pointer }
98106 value = { value }
99107 onChange = { ( v : string | string [ ] ) => setFieldValue ( name , v ) }
100108 />
101- ) }
102- </ FastField >
103- </ FormControl >
109+ < FormErrorMessage > { meta . error } </ FormErrorMessage >
110+ </ FormControl >
111+ ) }
112+ </ FastField >
104113 ) ;
105114}
106115
@@ -178,28 +187,33 @@ function WidgetTaggerWithOptions(props: WidgetProps & { isMulti?: boolean }) {
178187 } , [ field ] ) ;
179188
180189 return (
181- < FormControl isRequired = { isRequired } >
182- { field . label && (
183- < FormLabel >
184- < FieldLabel size = 'xs' > { field . label } </ FieldLabel >
185- </ FormLabel >
186- ) }
190+ < FastField name = { pointer } key = { key } >
191+ { ( {
192+ field : { name, value } ,
193+ meta,
194+ form : { setFieldValue }
195+ } : FastFieldProps ) => (
196+ < FormControl
197+ isRequired = { isRequired }
198+ isInvalid = { ! ! ( meta . touched && meta . error ) }
199+ >
200+ { field . label && (
201+ < FormLabel >
202+ < FieldLabel size = 'xs' > { field . label } </ FieldLabel >
203+ </ FormLabel >
204+ ) }
187205
188- < FastField name = { pointer } key = { key } >
189- { ( {
190- field : { name, value } ,
191- form : { setFieldValue }
192- } : FastFieldProps ) => (
193206 < WidgetTaggerWithOptionsSelect
194207 pointer = { pointer }
195208 isMulti = { ! ! isMulti }
196209 value = { value }
197210 onChange = { ( v : string | string [ ] ) => setFieldValue ( name , v ) }
198211 options = { options }
199212 />
200- ) }
201- </ FastField >
202- </ FormControl >
213+ < FormErrorMessage > { meta . error } </ FormErrorMessage >
214+ </ FormControl >
215+ ) }
216+ </ FastField >
203217 ) ;
204218}
205219
0 commit comments