terra-form
Version:
Components for building forms
162 lines (144 loc) • 4.46 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 _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _Field = require('./Field');
var _Field2 = _interopRequireDefault(_Field);
var _Textarea = require('./Textarea');
var _Textarea2 = _interopRequireDefault(_Textarea);
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; }
var propTypes = {
/**
* How many columns the textarea should have.
*/
cols: _propTypes2.default.number,
/**
* The defaultValue of the textarea element. Use this to create an uncontrolled input.
*/
defaultValue: _propTypes2.default.string,
/**
* Error message for when the input is invalid.
*/
error: _propTypes2.default.node,
/**
* Help element to display with the input.
*/
help: _propTypes2.default.node,
/**
* Custom attributes to apply to the input.
*/
inputAttrs: _propTypes2.default.object,
/**
* Id of the input. Also populates the 'htmlFor' prop of the field.
*/
inputId: _propTypes2.default.string,
/**
* Whether the field is inline.
*/
isInline: _propTypes2.default.bool,
/**
* Label of the input.
*/
label: _propTypes2.default.node,
/**
* Attributes to attach to the label.
*/
labelAttrs: _propTypes2.default.object,
/**
* Maximum number of characters user can input in this field.
*/
maxLength: _propTypes2.default.number,
/**
* Minimum number of characters user must input in this field.
*/
minLength: _propTypes2.default.number,
/**
* Name of the input attribute.
*/
name: _propTypes2.default.string,
/**
* Function to trigger when the user changes the input value. Provide one to create a controlled input.
*/
onChange: _propTypes2.default.func,
/**
* Whether the input is required.
*/
required: _propTypes2.default.bool,
/**
* How many rows the textarea should have.
*/
rows: _propTypes2.default.number,
/**
* The value of the textarea element. Use this to create a controlled input.
*/
value: _propTypes2.default.string
};
var defaultProps = {
cols: null,
defaultValue: undefined,
error: null,
help: null,
inputAttrs: {},
inputId: undefined,
isInline: false,
label: null,
labelAttrs: {},
maxLength: null,
minLength: null,
name: null,
onChange: undefined,
required: false,
rows: null,
value: undefined
};
var TextareaField = function TextareaField(_ref) {
var cols = _ref.cols,
defaultValue = _ref.defaultValue,
error = _ref.error,
help = _ref.help,
inputAttrs = _ref.inputAttrs,
inputId = _ref.inputId,
isInline = _ref.isInline,
label = _ref.label,
labelAttrs = _ref.labelAttrs,
name = _ref.name,
onChange = _ref.onChange,
required = _ref.required,
rows = _ref.rows,
maxLength = _ref.maxLength,
minLength = _ref.minLength,
value = _ref.value,
customProps = _objectWithoutProperties(_ref, ['cols', 'defaultValue', 'error', 'help', 'inputAttrs', 'inputId', 'isInline', 'label', 'labelAttrs', 'name', 'onChange', 'required', 'rows', 'maxLength', 'minLength', 'value']);
return _react2.default.createElement(
_Field2.default,
_extends({
label: label,
error: error,
help: help,
htmlFor: inputId,
isInline: isInline,
required: required
}, customProps),
_react2.default.createElement(_Textarea2.default, _extends({
cols: cols,
maxLength: maxLength,
minLength: minLength,
name: name,
id: inputId,
required: required,
rows: rows,
value: value,
defaultValue: defaultValue,
onChange: onChange
}, inputAttrs))
);
};
TextareaField.propTypes = propTypes;
TextareaField.defaultProps = defaultProps;
exports.default = TextareaField;