1212 FormFieldInput ,
1313 FormFieldSelect ,
1414 FormFieldSelectSearch ,
15+ FormFieldTextarea ,
1516 InputHtmlType ,
1617)
1718
@@ -30,7 +31,7 @@ def model_json_schema_to_fields(model: _t.Type[BaseModel]) -> _t.List[FormField]
3031
3132
3233JsonSchemaInput : _ta .TypeAlias = (
33- 'JsonSchemaString | JsonSchemaStringEnum | JsonSchemaFile | JsonSchemaInt | JsonSchemaNumber'
34+ 'JsonSchemaString | JsonSchemaStringEnum | JsonSchemaFile | JsonSchemaTextarea | JsonSchemaInt | JsonSchemaNumber'
3435)
3536JsonSchemaField : _ta .TypeAlias = 'JsonSchemaInput | JsonSchemaBool'
3637JsonSchemaConcrete : _ta .TypeAlias = 'JsonSchemaField | JsonSchemaArray | JsonSchemaObject'
@@ -69,6 +70,15 @@ class JsonSchemaFile(JsonSchemaBase, total=False):
6970 accept : str
7071
7172
73+ class JsonSchemaTextarea (JsonSchemaBase , total = False ):
74+ type : _ta .Required [_t .Literal ['string' ]]
75+ format : _ta .Required [_t .Literal ['textarea' ]]
76+ rows : int
77+ cols : int
78+ default : str
79+ placeholder : str
80+
81+
7282class JsonSchemaBool (JsonSchemaBase , total = False ):
7383 type : _ta .Required [_t .Literal ['boolean' ]]
7484 default : bool
@@ -236,6 +246,17 @@ def special_string_field(
236246 accept = schema .get ('accept' ),
237247 description = schema .get ('description' ),
238248 )
249+ elif schema .get ('format' ) == 'textarea' :
250+ return FormFieldTextarea (
251+ name = name ,
252+ title = title ,
253+ required = required ,
254+ rows = schema .get ('rows' ),
255+ cols = schema .get ('cols' ),
256+ placeholder = schema .get ('placeholder' ),
257+ initial = schema .get ('initial' ),
258+ description = schema .get ('description' ),
259+ )
239260 elif enum := schema .get ('enum' ):
240261 enum_labels = schema .get ('enum_labels' , {})
241262 return FormFieldSelect (
0 commit comments