@cosva-lab/form-builder
Version:
React form builder.
52 lines (50 loc) • 1.56 kB
JavaScript
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 };