-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
index.tsx
87 lines (80 loc) · 1.89 KB
/
index.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import React from "react";
import { FieldTemplateProps } from "@rjsf/utils";
import Form from "antd/lib/form";
import { getUiOptions, getTemplate } from "@rjsf/utils";
const VERTICAL_LABEL_COL = { span: 24 };
const VERTICAL_WRAPPER_COL = { span: 24 };
const FieldTemplate = ({
children,
classNames,
description,
disabled,
displayLabel,
errors,
formContext,
help,
hidden,
id,
label,
onDropPropertyClick,
onKeyChange,
rawErrors,
rawHelp,
readonly,
registry,
required,
schema,
uiSchema,
}: FieldTemplateProps) => {
const {
colon,
labelCol = VERTICAL_LABEL_COL,
wrapperCol = VERTICAL_WRAPPER_COL,
wrapperStyle,
} = formContext;
const uiOptions = getUiOptions(uiSchema);
const WrapIfAdditionalTemplate = getTemplate<"WrapIfAdditionalTemplate">(
"WrapIfAdditionalTemplate",
registry,
uiOptions
);
if (hidden) {
return <div className="field-hidden">{children}</div>;
}
return (
<WrapIfAdditionalTemplate
classNames={classNames}
disabled={disabled}
id={id}
label={label}
onDropPropertyClick={onDropPropertyClick}
onKeyChange={onKeyChange}
readonly={readonly}
required={required}
schema={schema}
uiSchema={uiSchema}
registry={registry}
>
{id === "root" ? (
children
) : (
<Form.Item
colon={colon}
extra={description}
hasFeedback={schema.type !== "array" && schema.type !== "object"}
help={(!!rawHelp && help) || errors}
htmlFor={id}
label={displayLabel && label}
labelCol={labelCol}
required={required}
style={wrapperStyle}
validateStatus={rawErrors?.length ? "error" : undefined}
wrapperCol={wrapperCol}
>
{children}
</Form.Item>
)}
</WrapIfAdditionalTemplate>
);
};
export default FieldTemplate;