UNPKG

terra-form

Version:
118 lines (95 loc) 3.31 kB
'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;