boldr-ui
Version:
UI components for Boldr
157 lines (122 loc) • 5.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The avatar component is used to convert a `FontIcon`, an image, or
* a letter into an avatar.
*
* Any other props given to the Avatar component such as event listeners
* or styles will also be applied.
*/
var Avatar = function (_PureComponent) {
(0, _inherits3.default)(Avatar, _PureComponent);
function Avatar() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, Avatar);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Avatar.__proto__ || (0, _getPrototypeOf2.default)(Avatar)).call.apply(_ref, [this].concat(args))), _this), _this.state = { color: null }, _this._setRandomColor = function () {
var suffixes = _this.props.suffixes;
var i = Math.floor(Math.random() * (suffixes.length - 1)) + 1;
_this.setState({ color: suffixes[i] });
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(Avatar, [{
key: 'componentWillMount',
value: function componentWillMount() {
if (this.props.random) {
this._setRandomColor();
}
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (nextProps.random && (this.props.src !== nextProps.src || this.props.icon !== nextProps.icon)) {
this._setRandomColor();
} else if (this.props.random && !nextProps.random) {
this.setState({ color: null });
}
}
}, {
key: '_getColor',
value: function _getColor(suffix, suffixes, color) {
if (suffix) {
return 'boldrui-avatar--' + suffix;
} else if (!!suffixes && !color) {
return 'boldrui-avatar--default';
}
return 'boldrui-avatar--' + color;
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
className = _props.className,
src = _props.src,
alt = _props.alt,
icon = _props.icon,
children = _props.children,
suffix = _props.suffix,
suffixes = _props.suffixes,
iconSized = _props.iconSized,
role = _props.role,
random = _props.random,
props = (0, _objectWithoutProperties3.default)(_props, ['className', 'src', 'alt', 'icon', 'children', 'suffix', 'suffixes', 'iconSized', 'role', 'random']);
return _react2.default.createElement(
'div',
(0, _extends3.default)({}, props, {
className: (0, _classnames2.default)('boldrui-inline-block boldrui-avatar', this._getColor(suffix, suffixes, this.state.color), {
'boldrui-avatar__icon-sized': iconSized
}, className)
}),
src && _react2.default.createElement('img', { src: src, alt: alt, role: role, className: 'boldrui-avatar__img' }),
!src && _react2.default.createElement(
'div',
{ className: 'boldrui-avatar__content' },
icon || children
)
);
}
}]);
return Avatar;
}(_react.PureComponent);
Avatar.defaultProps = {
suffixes: ['red', 'pink', 'purple', 'deep-purple', 'indigo', 'blue', 'light-blue', 'cyan', 'teal', 'green', 'light-green', 'lime', 'yellow', 'amber', 'orange', 'deep-orange', 'brown', 'grey', 'blue-grey']
};
exports.default = Avatar;
Avatar.propTypes = process.env.NODE_ENV !== "production" ? {
src: require('prop-types').string,
alt: require('prop-types').string,
icon: typeof ReactNode === 'function' ? require('prop-types').instanceOf(ReactNode) : require('prop-types').any,
children: typeof ReactChildren === 'function' ? require('prop-types').instanceOf(ReactChildren) : require('prop-types').any,
random: require('prop-types').bool,
suffixes: require('prop-types').arrayOf(require('prop-types').string),
suffix: require('prop-types').string,
iconSized: require('prop-types').bool,
className: require('prop-types').string,
role: require('prop-types').string
} : {};
;