@agentlab/rjsf-antd
Version:
Ant Design theme, fields and widgets for react-jsonschema-form
45 lines • 1.98 kB
JavaScript
import React from 'react';
import FormContext from 'antd/es/form/context';
import { ConfigConsumer } from 'antd/es/config-provider';
import omit from 'omit.js';
import Theme from '../Theme';
import classNames from 'classnames';
import ObjectFieldTemplateContext from '../ObjectFieldTemplate/ObjectFieldTemplateContext';
import withTheme from '../Theme/withTheme';
const FormWithTheme = withTheme(Theme);
const RjsfForm = React.forwardRef((props, ref) => {
const { wrapperCol, labelAlign, labelCol, layout, colon, objectFieldTemplates = {} } = props;
const renderForm = ({ getPrefixCls }) => {
const { prefixCls: customizePrefixCls, hideRequiredMark, className = '', layout } = props;
const prefixCls = getPrefixCls('form', customizePrefixCls);
const formClassName = classNames(prefixCls, {
[`${prefixCls}-horizontal`]: layout === 'horizontal',
[`${prefixCls}-vertical`]: layout === 'vertical',
[`${prefixCls}-inline`]: layout === 'inline',
[`${prefixCls}-hide-required-mark`]: hideRequiredMark,
}, className);
const formProps = omit(props, [
'prefixCls',
'className',
//'layout',
'hideRequiredMark',
'wrapperCol',
'labelAlign',
'labelCol',
'colon',
]);
return React.createElement(FormWithTheme, Object.assign({}, formProps, { className: formClassName, ref: ref }));
};
return (React.createElement(ObjectFieldTemplateContext.Provider, { value: objectFieldTemplates },
React.createElement(FormContext.Provider, { value: {
wrapperCol,
labelAlign,
labelCol,
vertical: layout === 'vertical',
colon,
} },
React.createElement(ConfigConsumer, null, renderForm))));
});
RjsfForm.displayName = 'RjsfForm';
export default RjsfForm;
//# sourceMappingURL=Form.js.map