@krowdy-ui/views
Version:
React components that implement Google's Material Design.
107 lines (105 loc) • 2.69 kB
JavaScript
import React from 'react';
import clsx from 'clsx';
import { makeStyles, Tooltip, Typography } from '@krowdy-ui/core';
import { UserPoint } from '@krowdy-ui/views';
const Column = ({
index,
divider,
max,
salary,
multiplier,
firstName,
lastName,
photo,
selected
}) => {
const avarage = salary / max / multiplier;
const classes = useStyles({
avarage,
divider,
percent: (avarage <= 1 ? avarage : 1) * 100
});
return /*#__PURE__*/React.createElement("div", {
className: clsx(classes.columnContainer, index === 0 && classes.leftLine, index === divider - 1 && classes.rightLine, index > 0 && index < divider - 1 && classes.centerLine)
}, /*#__PURE__*/React.createElement(Tooltip, {
arrow: true,
placement: "top",
title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Typography, {
className: classes.tooltipTitle
}, firstName, " ", lastName), /*#__PURE__*/React.createElement(Typography, null, `S/ ${salary}`))
}, /*#__PURE__*/React.createElement("div", {
className: classes.bar
})), /*#__PURE__*/React.createElement(UserPoint, {
active: selected,
bottom: -30,
classes: {
avatar: classes.avatar,
point: classes.point
},
firstName: firstName,
lastName: lastName,
leftPercent: 50,
photo: photo,
subtitle: `S/ ${salary}`
}));
};
const useStyles = makeStyles(theme => ({
avatar: {},
bar: {
backgroundColor: theme.palette.primary[100],
borderTop: ({
avarage
}) => `${avarage <= 1 ? 1 : 0}px solid ${theme.palette.primary[600]}`,
height: ({
percent
}) => `${percent}%`,
width: '100%'
},
centerLine: {
borderLeft: `1px solid ${theme.palette.grey[200]}`,
borderRight: `1px solid ${theme.palette.grey[200]}`
},
columnContainer: {
'& $point': {
backgroundColor: theme.palette.grey[300]
},
'&:hover': {
'& $avatar': {
display: 'block'
},
'& $point': {
display: 'none'
}
},
alignItems: 'flex-end',
display: 'flex',
height: 'inherit',
justifyContent: 'center',
position: 'relative',
width: ({
divider
}) => `${100 / divider}%`
},
hide: {
display: 'none'
},
leftLine: {
borderLeft: `2px solid ${theme.palette.grey[200]}`,
borderRight: `1px solid ${theme.palette.grey[200]}`
},
point: {},
rightLine: {
borderLeft: `1px solid ${theme.palette.grey[200]}`,
borderRight: `2px solid ${theme.palette.grey[200]}`
},
show: {
display: 'block'
},
tooltipTitle: {
fontSize: 12,
fontWeight: 'bold'
}
}), {
name: 'Column'
});
export default Column;