UNPKG

@cosva-lab/form-builder

Version:
52 lines (50 loc) 1.56 kB
import Inputs from "./Inputs.mjs"; import React from "react"; import * as ReactIs from "react-is"; import { observer } from "mobx-react"; //#region src/FieldRender.tsx const FieldRenderObserver = ({ component, propsForm }) => { let FieldComponent = component; try { FieldComponent = observer(component); } catch (error) {} return /* @__PURE__ */ React.createElement(FieldComponent, propsForm); }; var FieldRender = class extends React.PureComponent { constructor(..._args) { super(..._args); this.onChangeField = (e, callback) => { const { onChangeField } = this.props; onChangeField === null || onChangeField === void 0 || onChangeField(e, callback); }; } render() { const { field, globalProps } = this.props; const { component: Component, render, type } = field; const propsForm = { field, globalProps, onChangeField: this.onChangeField }; const formInput = /* @__PURE__ */ React.createElement(Inputs, propsForm); if (render) return render({ children: formInput, props: propsForm }); if (type === "component") { if (Component) Component.displayName = `[fields.${field.name.toString()}].component`; if (React.isValidElement(Component)) return /* @__PURE__ */ React.createElement(Component.type, { ...Component.props, ...propsForm }); if (ReactIs.isValidElementType(Component)) return /* @__PURE__ */ React.createElement(FieldRenderObserver, { component: Component, propsForm }); return null; } return formInput; } }; //#endregion export { FieldRender as default };