UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

114 lines (86 loc) 3.87 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _getValidProps = _interopRequireDefault(require("@helpscout/react-utils/dist/getValidProps")); var _classnames = _interopRequireDefault(require("classnames")); var _ControlGroup = require("./ControlGroup.css"); var _jsxRuntime = require("react/jsx-runtime"); var ControlGroupItem = /*#__PURE__*/function (_React$PureComponent) { (0, _inheritsLoose2.default)(ControlGroupItem, _React$PureComponent); function ControlGroupItem() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this; _this.getChildrenMarkup = function () { var _this$props = _this.props, children = _this$props.children, isFirst = _this$props.isFirst, isNotOnly = _this$props.isNotOnly, isLast = _this$props.isLast; if (!children) return null; return _react.default.Children.map(children, function (child, index) { var props = isDOMTypeElement(child) ? {} : { isFirst: isFirst, isNotOnly: isNotOnly, isLast: isLast }; return /*#__PURE__*/_react.default.cloneElement(child, props); }); }; return _this; } var _proto = ControlGroupItem.prototype; _proto.render = function render() { var _this$props2 = this.props, children = _this$props2.children, className = _this$props2.className, isBlock = _this$props2.isBlock, isFirst = _this$props2.isFirst, isLast = _this$props2.isLast, isNotOnly = _this$props2.isNotOnly, rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props2, ["children", "className", "isBlock", "isFirst", "isLast", "isNotOnly"]); var componentClassName = (0, _classnames.default)('c-ControlGroupItem', isBlock && 'is-block', isFirst && 'is-first', isLast && 'is-last', className); var childrenMarkup = this.getChildrenMarkup(); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ControlGroup.ItemUI, (0, _extends2.default)({}, (0, _getValidProps.default)(rest), { className: componentClassName, children: childrenMarkup })); }; return ControlGroupItem; }(_react.default.PureComponent); function isDOMTypeElement(element) { return /*#__PURE__*/_react.default.isValidElement(element) && typeof element.type === 'string'; } ControlGroupItem.defaultProps = { 'data-cy': 'ControlGroupItem', isBlock: false, isFirst: false, isNotOnly: false, isLast: false }; ControlGroupItem.propTypes = { /** Content to render. */ children: _propTypes.default.any, /** Custom class names to be added to the component. */ className: _propTypes.default.string, /** Renders with a wider responsive width. */ isBlock: _propTypes.default.bool, /** Helps render component without right borders. */ isFirst: _propTypes.default.bool, /** Helps render component without left/right borders. */ isNotOnly: _propTypes.default.bool, /** Helps render component without left borders. */ isLast: _propTypes.default.bool, /** Data attr for Cypress tests. */ 'data-cy': _propTypes.default.string }; var _default = ControlGroupItem; exports.default = _default;