informed
Version:
A lightweight framework and utility for building powerful forms in React applications
42 lines (38 loc) • 1.32 kB
JavaScript
import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _objectSpread2, extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.js';
import React from 'react';
import { Debug } from '../debug.js';
import { useForm } from '../hooks/useForm.js';
import { FieldMap } from '../fieldMap.js';
var _excluded = ["children"];
var debug = Debug('informed:Form' + '\t\t');
var Form = function Form(_ref) {
var children = _ref.children,
rest = _objectWithoutProperties(_ref, _excluded);
debug('Render FORM');
var _useForm = useForm(_objectSpread2({
adapter: FieldMap
}, rest)),
formApi = _useForm.formApi,
formController = _useForm.formController,
formState = _useForm.formState,
render = _useForm.render,
userProps = _useForm.userProps;
var getContent = function getContent() {
var props = {
formState: formState,
formApi: formApi
};
if (typeof children === 'function') {
return children(props);
}
return children;
};
/* --- Render Content --- */
return render( /*#__PURE__*/React.createElement("form", _extends({}, userProps, {
noValidate: true,
onReset: formController.reset,
onSubmit: formController.submitForm,
onKeyDown: formController.keyDown
}), getContent()));
};
export { Form };