@krowdy-ui/views
Version:
React components that implement Google's Material Design.
109 lines (107 loc) • 2.8 kB
JavaScript
import React from 'react';
import PropTypes from 'prop-types';
import { Tooltip, Typography, withStyles } from '@material-ui/core';
import { AvatarUser } from '@krowdy-ui/views';
const styles = {
avatar: {},
point: {
backgroundColor: 'white',
borderRadius: '50%',
height: ({
size = 8
}) => size,
width: ({
size = 8
}) => size
},
root: {
'& $avatar': {
display: 'none'
},
'& $point': {},
'&:hover': {
'& $avatar': {
display: 'block'
},
'& $point': {
display: 'none'
}
},
alignItems: 'center',
bottom: ({
bottom = 0
}) => bottom,
display: 'flex',
height: 12,
justifyContent: 'center',
left: ({
leftPercent = 0
}) => `calc(${leftPercent}% - 6px)`,
position: 'absolute',
width: 12
},
tooltipTitle: {
fontSize: 12,
fontWeight: 'bold'
}
};
const UserPoint = ({
classes,
subtitle = '',
photo,
active = false,
firstName = '',
lastName = ''
}) => {
if (active) return /*#__PURE__*/React.createElement("div", {
className: classes.root
}, /*#__PURE__*/React.createElement(Tooltip, {
arrow: true,
title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
className: classes.tooltipTitle
}, firstName, " ", lastName), /*#__PURE__*/React.createElement(Typography, null, subtitle))
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(AvatarUser, {
active: active,
size: "small",
user: {
firstName,
lastName,
photo
}
}))));
return /*#__PURE__*/React.createElement("div", {
className: classes.root
}, /*#__PURE__*/React.createElement("div", {
className: classes.avatar
}, /*#__PURE__*/React.createElement(Tooltip, {
arrow: true,
title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
className: classes.tooltipTitle
}, firstName, " ", lastName), /*#__PURE__*/React.createElement(Typography, null, subtitle)),
TransitionProps: {
timeout: 0
}
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(AvatarUser, {
active: false,
size: "small",
user: {
firstName,
lastName,
photo
}
})))), /*#__PURE__*/React.createElement("div", {
className: classes.point
}));
};
process.env.NODE_ENV !== "production" ? UserPoint.propTypes = {
active: PropTypes.bool,
firstName: PropTypes.string,
lastName: PropTypes.string,
leftPercent: PropTypes.number,
photo: PropTypes.string,
size: PropTypes.number,
subtitle: PropTypes.string
} : void 0;
export default withStyles(styles, {
name: 'UserPoint'
})(UserPoint);