himanshu-react-jsonschema-form
Version:
A simple React component capable of building HTML forms out of a JSON schema.
93 lines (78 loc) • 3.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _utils = require("../../utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function StringField(props) {
var schema = props.schema,
name = props.name,
uiSchema = props.uiSchema,
idSchema = props.idSchema,
formData = props.formData,
required = props.required,
disabled = props.disabled,
readonly = props.readonly,
autofocus = props.autofocus,
registry = props.registry,
onChange = props.onChange;
var title = schema.title,
format = schema.format;
var widgets = registry.widgets,
formContext = registry.formContext;
var enumOptions = Array.isArray(schema.enum) && (0, _utils.optionsList)(schema);
var defaultWidget = format || (enumOptions ? "select" : "text");
var _getUiOptions = (0, _utils.getUiOptions)(uiSchema),
_getUiOptions$widget = _getUiOptions.widget,
widget = _getUiOptions$widget === undefined ? defaultWidget : _getUiOptions$widget,
_getUiOptions$placeho = _getUiOptions.placeholder,
placeholder = _getUiOptions$placeho === undefined ? "" : _getUiOptions$placeho,
options = _objectWithoutProperties(_getUiOptions, ["widget", "placeholder"]);
var Widget = (0, _utils.getWidget)(schema, widget, widgets);
return _react2.default.createElement(Widget, {
options: _extends({}, options, { enumOptions: enumOptions }),
schema: schema,
id: idSchema && idSchema.$id,
label: title === undefined ? name : title,
value: (0, _utils.defaultFieldValue)(formData, schema),
onChange: onChange,
required: required,
disabled: disabled,
readonly: readonly,
formContext: formContext,
autofocus: autofocus,
registry: registry,
placeholder: placeholder });
}
if (process.env.NODE_ENV !== "production") {
StringField.propTypes = {
schema: _react.PropTypes.object.isRequired,
uiSchema: _react.PropTypes.object.isRequired,
idSchema: _react.PropTypes.object,
onChange: _react.PropTypes.func.isRequired,
formData: _react.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]),
registry: _react.PropTypes.shape({
widgets: _react.PropTypes.objectOf(_react.PropTypes.oneOfType([_react.PropTypes.func, _react.PropTypes.object])).isRequired,
fields: _react.PropTypes.objectOf(_react.PropTypes.func).isRequired,
definitions: _react.PropTypes.object.isRequired,
formContext: _react.PropTypes.object.isRequired
}),
formContext: _react.PropTypes.object.isRequired,
required: _react.PropTypes.bool,
disabled: _react.PropTypes.bool,
readonly: _react.PropTypes.bool,
autofocus: _react.PropTypes.bool
};
}
StringField.defaultProps = {
uiSchema: {},
registry: (0, _utils.getDefaultRegistry)(),
disabled: false,
readonly: false,
autofocus: false
};
exports.default = StringField;