UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

119 lines (93 loc) 3.89 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 _Icon = _interopRequireDefault(require("../Icon")); var _Avatar = _interopRequireDefault(require("../Avatar")); var _AvatarSelectorCss = require("./AvatarSelector.css.js"); var _jsxRuntime = require("react/jsx-runtime"); var AvatarSelector = /*#__PURE__*/function (_React$PureComponent) { (0, _inheritsLoose2.default)(AvatarSelector, _React$PureComponent); function AvatarSelector() { return _React$PureComponent.apply(this, arguments) || this; } var _proto = AvatarSelector.prototype; _proto.renderAvatar = function renderAvatar() { var _this$props = this.props, image = _this$props.image, initials = _this$props.initials, name = _this$props.name; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AvatarSelectorCss.AvatarWrapperUI, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, { size: "smmd", image: image, name: name, initials: initials }) }); }; _proto.renderBlankAvatar = function renderBlankAvatar() { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AvatarSelectorCss.IconAssignUI, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, { name: "assigned", size: "24" }) }); }; _proto.render = function render() { var _this$props2 = this.props, image = _this$props2.image, initials = _this$props2.initials, isHovered = _this$props2.isHovered, isOpen = _this$props2.isOpen, name = _this$props2.name, size = _this$props2.size, rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props2, ["image", "initials", "isHovered", "isOpen", "name", "size"]); var classnames = (0, _classnames.default)('c-AvatarSelector', isOpen ? 'is-open' : '', isHovered && 'is-hovered'); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_AvatarSelectorCss.AvatarSelectorWrapperUI, (0, _extends2.default)({ className: classnames, tabIndex: "0", size: size }, (0, _getValidProps.default)(rest), { children: [image || initials || name ? this.renderAvatar() : this.renderBlankAvatar(), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AvatarSelectorCss.IconCaretUI, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, { size: "14", name: isOpen ? 'caret-up' : 'caret-down' }) })] })); }; return AvatarSelector; }(_react.default.PureComponent); AvatarSelector.defaultProps = { 'data-cy': 'AvatarSelector', image: '', initials: '', isHovered: false, isOpen: false, name: '', size: 'lg' }; AvatarSelector.propTypes = { /** URL of the image. */ image: _propTypes.default.string, /** Initials of image */ initials: _propTypes.default.string, /** Fallback for the image. */ name: _propTypes.default.string, /** Used to control the direction of the caret. */ isOpen: _propTypes.default.bool, /** Size of the avatar. */ size: _propTypes.default.oneOf(['xl', 'lg', 'md', 'smmd', 'sm', 'xxs']), /** Data attr for Cypress tests. */ 'data-cy': _propTypes.default.string }; var _default = AvatarSelector; exports.default = _default;