terra-form
Version:
Components for building forms
118 lines (95 loc) • 3.31 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 _bind = require('classnames/bind');
var _bind2 = _interopRequireDefault(_bind);
require('terra-base/lib/baseStyles');
var _Field = require('./Field.scss');
var _Field2 = _interopRequireDefault(_Field);
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; } /* eslint-disable react/jsx-boolean-value, jsx-a11y/label-has-for */
var cx = _bind2.default.bind(_Field2.default);
var propTypes = {
/**
* Children the Field contains.
*/
children: _propTypes2.default.node,
/**
* Error message for when the input is invalid.
*/
error: _propTypes2.default.node,
/**
* Help element to display with the input.
*/
help: _propTypes2.default.node,
/**
* Determines whether the fieldset is an inline fieldset.
*/
isInline: _propTypes2.default.bool,
/**
* Legend for the input group.
*/
legend: _propTypes2.default.string,
/**
* Attributes to attach to the legend.
*/
legendAttrs: _propTypes2.default.object,
/**
* Determines whether the fieldset is required.
*/
required: _propTypes2.default.bool
};
var defaultProps = {
children: null,
error: null,
help: null,
isInline: false,
legend: null,
legendAttrs: {},
required: false
};
var Fieldset = function Fieldset(_ref) {
var children = _ref.children,
error = _ref.error,
help = _ref.help,
isInline = _ref.isInline,
legend = _ref.legend,
legendAttrs = _ref.legendAttrs,
required = _ref.required,
customProps = _objectWithoutProperties(_ref, ['children', 'error', 'help', 'isInline', 'legend', 'legendAttrs', 'required']);
var fieldsetClasses = cx(['fieldset', { 'fieldset-inline': isInline }, { 'fieldset-required': required }, customProps.className]);
var legendClasses = cx(['legend', legendAttrs.className]);
return _react2.default.createElement(
'fieldset',
_extends({}, customProps, { className: fieldsetClasses }),
legend && _react2.default.createElement(
'legend',
_extends({}, legendAttrs, { className: legendClasses }),
legend
),
help && _react2.default.createElement(
'small',
{ className: cx('help-text'), tabIndex: '-1' },
help
),
error && _react2.default.createElement(
'small',
{ className: cx('error'), tabIndex: '-1' },
error
),
_react2.default.createElement(
'div',
{ className: cx('fieldset-children') },
children
)
);
};
Fieldset.propTypes = propTypes;
Fieldset.defaultProps = defaultProps;
exports.default = Fieldset;