@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
114 lines (86 loc) • 3.87 kB
JavaScript
"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;