Package Exports
- react-jsonschema-form
- react-jsonschema-form/lib/components/ErrorList
- react-jsonschema-form/lib/components/fields/ArrayField
- react-jsonschema-form/lib/components/fields/ObjectField
- react-jsonschema-form/lib/components/fields/SchemaField
- react-jsonschema-form/lib/components/fields/StringField
- react-jsonschema-form/lib/components/fields/UnsupportedField
- react-jsonschema-form/lib/components/widgets/CheckboxWidget
- react-jsonschema-form/lib/components/widgets/RadioWidget
- react-jsonschema-form/lib/components/widgets/SelectWidget
- react-jsonschema-form/lib/components/widgets/TextWidget
- react-jsonschema-form/lib/components/widgets/TextareaWidget
- react-jsonschema-form/lib/index
- react-jsonschema-form/lib/utils
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-jsonschema-form) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-jsonschema-form
A simple React component capable of building HTML forms out of a JSON schema.
Requires React 0.14+.
Installation
As a npm-based project dependency:
$ npm install react-jsonschema-form --save
As a script dependency served from a CDN:
<script src="https://npmcdn.com/react-jsonschema-form@0.4.0/dist/react-jsonschema-form-0.4.0.js"></script>
Source maps are available at this url.
Note that the CDN version does not embed react nor react-dom.
Usage
import React, { Component } from "react";
import { render } from "react-dom";
import Form from "react-jsonschema-form";
const schema = {
title: "Todo Tasks",
type: "object",
required: ["title"],
properties: {
title: {type: "string", title: "Title", default: "A new task"},
done: {type: "boolean", title: "Done?", default: false}
}
};
const formData = {
title: "First task",
done: true
};
const log = (type) => console.log.bind(console, type);
render((
<Form schema={schema}
formData={formData}
onChange={log("changed")}
onSubmit={log("submitted")}
onError={log("errors")} />
), document.getElementById("app"));
Alternative widgets
JSONSchema is limited for describing how a given data type should be rendered as an input component, that's why this lib introduces the concept of UI schema. A UI schema is basically an object literal describing which UI widget should be used to render a certain field
Example:
const uiSchema = {
done: {
widget: "radio" // could also be "select"
}
};
render((
<Form schema={schema}
uiSchema={uiSchema}
formData={formData} />
), document.getElementById("app"));
Here's a list of supported alternative widgets for different JSONSchema data types:
boolean
radio
: a radio button group withtrue
andfalse
as selectable values;select
: a select box withtrue
andfalse
as options;- by default, a checkbox is used
string
:
textarea
: atextarea
element- by default, a regular
input[type=text]
element is used.
Development server
$ npm start
A Cosmos development server showcasing components with hot reload enabled is available at localhost:8080.
Tests
$ npm test
TDD
$ npm run tdd
License
Apache 2