UNPKG

react-json-verbling

Version:

A JSON editor packed as a React.js component and the simplest way of creating web forms.

121 lines (90 loc) 6.97 kB
# Base field types React-json comes with a nice set of field types to let us edit JSON data using traditional HTML inputs. Field types provided are: * [string ( HTML input[type=text] )](#string) * [number ( HTML input[type=number] )](#number) * [boolean ( HTML input[type=checkbox] )](#boolean) * [password ( HTML input[type=password] )](#password) * [text ( HTML textarea )](#text) * [select ( HTML select )](#select) * [object](#object) * [array](#array) * [react](#react) To use them, just define them [using the fields setting](fieldTypes.md). ## string A `string` type will use an HTML `input[type=text]` element to edit the field. It is the default type for js strings shorter than 100 characters. Setting key | Values | Description ---|---|--- editing | false*, true, `'always'` | The initial editing state. If false you need to click on the value to edit. If true, the field will start showing the input. If `'always'`, it will always show the input. This is a deep setting. placeholder | *string* | A placeholder for the input if there is no value for the field. *Values with * are the default ones.* ## number A `number` type will use an HTML `input[type=number]` element to edit the field. It is the default type for js number values. Setting key | Values | Description ---|---|--- editing | false*, true, `'always'` | The initial editing state. If false you need to click on the value to edit. If true, the field will start showing the input. If `'always'`, it will always show the input. This is a deep setting. placeholder | *string* | A placeholder for the input if there is no value for the field. *Values with * are the default ones.* ## boolean A `boolean` type will use an HTML `input[type=checkbox]` element to edit the field. It is the default type for js boolean values. This type has no settings available. ## password A `password` type will use an HTML `input[type=password]` element to edit the field. Setting key | Values | Description ---|---|--- editing | false*, true, `'always'` | The initial editing state. If false you need to click on the value to edit. If true, the field will start showing the input. If `'always'`, it will always show the input. This is a deep setting. placeholder | *string* | A placeholder for the input if there is no value for the field. *Values with * are the default ones.* ## text A `text` type will use an HTML `textarea` element to edit the field. It is the default type for string longer than 100 characters. Setting key | Values | Description ---|---|--- editing | false*, true, `'always'` | The initial editing state. If false you need to click on the value to edit. If true, the field will start showing the input. If `'always'`, it will always show the input. This is a deep setting. placeholder | *string* | A placeholder for the input if there is no value for the field. *Values with * are the default ones ## select A `select` type will use an HTML `select` element to edit the field. Setting key | Values | Description ---|---|--- options | *array[Options]* | The different options that can have the select box. Every option can be an object with `value` and `label` properties to define the options as `<option value={ value }>{ label }</option>`, or a `string` to set option's value and label with the `string`'s value. *Values with * are the default ones.* ## object An `object` type will generate all the HTML needed to edit js objects. This may be the most important field type, as a JSON document is nothing but a js object. Setting key | Values | Description ---|---|--- | adder | true\*, false, *string* | Whether to show a link at the bottom of the object to let the user add new properties. If a `string` is given it will shown instead of the default *+ Add field* message. This is a deep setting. | editing | false*, true, `'always'` | The initial editing state. If false you need to open the object contents. If true, the object properties will be visible initially. If `'always'`, it will always show the inner properties. This is a deep setting. | fixedFields | false\*, true, *array* | Whether it is possible to delete properties from the object. If an array with field names is given, those properties won't be removable. This is a deep setting. | hiddenFields | *array* | A list of fields that won't be shown to the user to be edited. | header | *string*, *function* | Allows to customize the text in the header of an `object` that also would be used to show/hide the properties. If a function is given, it will be called with the current `object`'s value as argument, and must return the text used as header. | order | *array*, *function* | An `array` with field names to set the exact order you want the properties to appear. If a function is given, it will be called with the current `object`'s value as argument, and must return an array with the field order. This setting allows to create field groups and insert react fields. *Values with * are the default ones.* ## array An `array` type will generate all the HTML needed to edit js arrays. Setting key | Values | Description ---|---|--- | adder | true\*, false, *string* | Whether to show a link at the bottom of the array to let the user add new elements. If a `string` is given it will shown instead of the default *+ Add element* message. This is a deep setting. | editing | false*, true, `'always'` | The initial editing state. If false you need to open the array contents. If true, the array elements will be visible initially. If `'always'`, it will always show the inner elements. This is a deep setting. | fixedFields | false\*, true, *array* | Whether it is possible to delete elements from the array. If an array with indexes is given, those elements won't be removable. This is a deep setting. | header | *string*, *function* | Allows to customize the text in the header of an `array` that also would be used to show/hide the elements. If a function is given, it will be called with the current `array`'s value as argument, and must return the text used as header. This setting allows to create field groups and insert react fields. *Values with * are the default ones.* ## react The `react` field type allows to insert HTML in the middle of the editor. This type of fields are really useful to add help and explanation about the form's fields. This is a special type of field in react-json because it has no value, and this kind of fields doesn't appear in the value prop of the Json component. To insert a react field is needed to use the [`order` setting](#object) of the `object` field type: ```js var data = { people: 333333333, total: 4444444444 }, settings = { form: true, fields: { info: { type: 'react', output: <h1>I am in the middle</h1> }}, order: [ 'people', 'info', 'total'] } ; React.render( <div> <Json value={ data } settings={ settings } /> </div>, document.body ); ``` http://codepen.io/arqex/pen/BNpovQ?editors=001