UNPKG

react-define-form

Version:

React define form offers alternative typescript bindings for [react-final-form](https://github.com/final-form/react-final-form). It requires you to "define" a form type, specifying the type of the form data.

66 lines (62 loc) 2.45 kB
"use strict"; var _jsxFileName = "/Users/fplindesay/Documents/GitHub/define-form/packages/react-define-form/lib/index.jsx"; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var createField_1 = require("./createField"); var _require = require('react-final-form'), _Form = _require.Form, Field = _require.Field, FormSpy = _require.FormSpy; function defineForm(getFields) { return defineFormInner(getFields, {}); } exports.default = defineForm; function defineFormInner(getFields, existingFields) { var _this = this; var fieldSpecs = getFields(createField_1.default); var fields = Object.keys(fieldSpecs); var Fields = existingFields; fields.forEach(function (name) { Fields[name] = function (props) { return React.createElement(Field, Object.assign({ validate: fieldSpecs[name].parse && function (value) { try { fieldSpecs[name].parse(value); return undefined; } catch (ex) { return ex.message || ex; } } }, props, { name: name, allowNull: true, format: null, parse: null, __source: { fileName: _jsxFileName, lineNumber: 15 }, __self: _this })); }; }); return { Form: function Form(props) { return React.createElement(_Form, Object.assign({}, props, { onSubmit: function onSubmit(data, form) { var parsedValues = {}; fields.forEach(function (fieldName) { if (fieldSpecs[fieldName].parse) { parsedValues[fieldName] = fieldSpecs[fieldName].parse(data[fieldName]); } else { parsedValues[fieldName] = data[fieldName]; } }); return props.onSubmit(parsedValues, form); }, __source: { fileName: _jsxFileName, lineNumber: 27 }, __self: _this })); }, Fields: Fields, FormSpy: FormSpy, extend: function extend(getFields) { return defineFormInner(getFields, Object.assign({}, Fields)); } }; } //# sourceMappingURL=index.jsx.map