UNPKG

1.99 kBJavaScriptView Raw
1import React from 'react';
2import * as ReactIs from 'react-is';
3import { observer } from 'mobx-react';
4import Grid from '@material-ui/core/Grid';
5import Inputs from './Inputs';
6
7const FieldRenderObserver = ({
8 component,
9 propsForm
10}) => {
11 let FieldComponent = component;
12
13 try {
14 FieldComponent = observer(component);
15 } catch (error) {}
16
17 return React.createElement(FieldComponent, propsForm);
18};
19
20class FieldRender extends React.PureComponent {
21 constructor(...args) {
22 super(...args);
23
24 this.changeField = (e, callback) => this.props.changeField(e, callback);
25 }
26
27 render() {
28 const {
29 fieldProxy
30 } = this.props;
31 const breakpoints = { ...fieldProxy.breakpoints
32 };
33 const {
34 xs = 12
35 } = breakpoints;
36 const {
37 sm = xs
38 } = breakpoints;
39 const {
40 md = sm
41 } = breakpoints;
42 const {
43 lg = md
44 } = breakpoints;
45 const {
46 xl = lg
47 } = breakpoints;
48 const {
49 component: Component,
50 render,
51 type,
52 grid = typeof this.props.grid !== 'undefined' ? this.props.grid : true
53 } = fieldProxy;
54 const propsForm = {
55 fieldProxy,
56 changeField: this.changeField
57 };
58 const formInput = React.createElement(Inputs, propsForm);
59 if (render) return render({
60 children: formInput,
61 props: propsForm
62 });
63
64 if (type === 'component') {
65 if (React.isValidElement(Component) && typeof Component !== 'function') {
66 return React.createElement(Component.type, { ...Component.props,
67 ...propsForm
68 });
69 }
70
71 if (ReactIs.isValidElementType(Component)) return React.createElement(FieldRenderObserver, {
72 component: Component,
73 propsForm: propsForm
74 });
75 return null;
76 }
77
78 return grid ? React.createElement(Grid, {
79 item: true,
80 xs: xs,
81 sm: sm,
82 md: md,
83 lg: lg,
84 xl: xl
85 }, formInput) : formInput;
86 }
87
88}
89
90export { FieldRender };
91export default FieldRender;
\No newline at end of file