Skip to content

Commit 1501168

Browse files
authored
feat(react): pass props and child render props
- fix: respect of children prop - feat: FormTemplate pass props through `FormTemplateProps` - feat: overridable form rendering by passing children as a render function
1 parent 77cbe2d commit 1501168

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

packages/react-form-renderer/src/form-renderer/form-renderer.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ import SchemaErrorComponent from './schema-error-component';
1111
import defaultValidatorMapper from '../validator-mapper';
1212

1313
const FormRenderer = ({
14+
children,
1415
componentMapper,
1516
FormTemplate,
17+
FormTemplateProps,
1618
onSubmit,
1719
onCancel,
1820
onReset,
@@ -105,14 +107,26 @@ const FormRenderer = ({
105107
},
106108
}}
107109
>
108-
<FormTemplate formFields={renderForm(schema.fields)} schema={schema} />
110+
{typeof children === 'function' ? (
111+
children({schema, formFields: renderForm(schema.fields)})
112+
) : (
113+
<React.Fragment>
114+
<FormTemplate
115+
formFields={renderForm(schema.fields)}
116+
schema={schema}
117+
{...FormTemplateProps}
118+
/>
119+
{children}
120+
</React.Fragment>
121+
)}
109122
</RendererContext.Provider>
110123
)}
111124
/>
112125
);
113126
};
114127

115128
FormRenderer.propTypes = {
129+
children: PropTypes.element,
116130
onSubmit: PropTypes.func.isRequired,
117131
onCancel: PropTypes.func,
118132
onReset: PropTypes.func,
@@ -123,7 +137,8 @@ FormRenderer.propTypes = {
123137
componentMapper: PropTypes.shape({
124138
[PropTypes.string]: PropTypes.oneOfType([PropTypes.node, PropTypes.element, PropTypes.func, PropTypes.elementType]),
125139
}).isRequired,
126-
FormTemplate: PropTypes.elementType.isRequired,
140+
FormTemplate: PropTypes.oneOfType([PropTypes.func, PropTypes.elementType]),
141+
FormTemplateProps: PropTypes.elementType.isRequired,
127142
validatorMapper: PropTypes.shape({
128143
[PropTypes.string]: PropTypes.func,
129144
}),

0 commit comments

Comments
 (0)