react-jsonschema-form-semantic
Version:
A simple React component capable of building HTML forms out of a JSON schema. Uses React Semantic UI (css not bundled)
78 lines (65 loc) • 2.33 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _semanticUiReact = require("semantic-ui-react");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function RadioWidget(props) {
var options = props.options,
value = props.value,
required = props.required,
disabled = props.disabled,
readonly = props.readonly,
autofocus = props.autofocus,
_onChange = props.onChange;
// Generating a unique field name to identify this set of radio buttons
var name = Math.random().toString();
var enumOptions = options.enumOptions;
// checked={checked} has been moved above name={name}, As mentioned in #349;
// this is a temporary fix for radio button rendering bug in React, facebook/react#7630.
return _react2.default.createElement(
_semanticUiReact.Form.Field,
{ className: "field-radio-group" },
enumOptions.map(function (option, i) {
var checked = option.value === value;
// const disabledCls = disabled || readonly ? "disabled" : "";
var radio = _react2.default.createElement(_semanticUiReact.Form.Radio, {
label: option.label,
checked: checked,
name: name,
required: required,
value: option.value,
disabled: disabled || readonly,
autoFocus: autofocus && i === 0,
onChange: function onChange(_) {
return _onChange(option.value);
}
});
return radio;
})
);
}
RadioWidget.defaultProps = {
autofocus: false
};
if (process.env.NODE_ENV !== "production") {
RadioWidget.propTypes = {
schema: _propTypes2.default.object.isRequired,
id: _propTypes2.default.string.isRequired,
options: _propTypes2.default.shape({
enumOptions: _propTypes2.default.array,
inline: _propTypes2.default.bool
}).isRequired,
value: _propTypes2.default.any,
required: _propTypes2.default.bool,
disabled: _propTypes2.default.bool,
readonly: _propTypes2.default.bool,
autofocus: _propTypes2.default.bool,
onChange: _propTypes2.default.func
};
}
exports.default = RadioWidget;