2017-01-24 12:10:13 +02:00
|
|
|
const React = require('react');
|
|
|
|
const Styled = require('styled-components');
|
|
|
|
|
2017-01-24 13:01:48 +02:00
|
|
|
const Tooltip = require('@ui/components/tooltip');
|
2017-01-24 12:10:13 +02:00
|
|
|
const fns = require('@ui/shared/functions');
|
|
|
|
const composers = require('@ui/shared/composers');
|
|
|
|
|
|
|
|
const {
|
|
|
|
pseudoEl
|
|
|
|
} = composers;
|
|
|
|
|
|
|
|
const {
|
|
|
|
default: styled
|
|
|
|
} = Styled;
|
|
|
|
|
|
|
|
const {
|
|
|
|
remcalc
|
|
|
|
} = fns;
|
|
|
|
|
|
|
|
const borderSide = props => props.toggled
|
|
|
|
? 'bottom'
|
|
|
|
: 'top';
|
|
|
|
|
|
|
|
const StyledWrapper = styled.div`
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
&:after {
|
|
|
|
border-left: ${remcalc(5)} solid transparent;
|
|
|
|
border-right: ${remcalc(5)} solid transparent;
|
|
|
|
border-${borderSide}: ${remcalc(5)} solid black;
|
|
|
|
|
|
|
|
${pseudoEl({
|
|
|
|
top: '50%',
|
|
|
|
right: remcalc(10)
|
|
|
|
})}
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
|
2017-01-24 13:01:48 +02:00
|
|
|
const arrowPosition = {
|
|
|
|
bottom: '100%',
|
|
|
|
right: '10%'
|
|
|
|
};
|
|
|
|
|
|
|
|
const tooltipStyle = {
|
|
|
|
position: 'absolute',
|
|
|
|
top: 0,
|
2017-01-24 13:31:52 +02:00
|
|
|
zIndex: 1
|
2017-01-24 13:01:48 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
const PlainButton = styled.button`
|
|
|
|
background: transparent;
|
|
|
|
font-size: inherit;
|
|
|
|
border: none;
|
2017-01-24 13:31:52 +02:00
|
|
|
zIndex: 0;
|
2017-01-24 13:01:48 +02:00
|
|
|
font-family: inherit;
|
|
|
|
color: inherit;
|
|
|
|
`;
|
|
|
|
|
|
|
|
const tooltip = (person) => (
|
|
|
|
<Tooltip
|
|
|
|
arrowPosition={arrowPosition}
|
|
|
|
key={person.uuid}
|
|
|
|
style={tooltipStyle}
|
|
|
|
>
|
|
|
|
<li>Admin</li>
|
|
|
|
<li>Read Only</li>
|
|
|
|
<li>Unassigned</li>
|
|
|
|
</Tooltip>
|
|
|
|
);
|
|
|
|
|
2017-01-24 12:10:13 +02:00
|
|
|
const PersonStatus = (props) => {
|
|
|
|
|
|
|
|
const {
|
2017-01-24 13:01:48 +02:00
|
|
|
toggledID,
|
2017-01-24 12:10:13 +02:00
|
|
|
person,
|
|
|
|
handleStatusTooltip
|
|
|
|
} = props;
|
|
|
|
|
2017-01-24 13:01:48 +02:00
|
|
|
const toggled = toggledID;
|
|
|
|
const handleClick = () => handleStatusTooltip(person.uuid);
|
|
|
|
|
2017-01-24 12:10:13 +02:00
|
|
|
return (
|
|
|
|
<StyledWrapper toggled={toggled}>
|
2017-01-24 13:01:48 +02:00
|
|
|
<PlainButton onClick={handleClick} >
|
2017-01-24 12:10:13 +02:00
|
|
|
{person.status}
|
2017-01-24 13:01:48 +02:00
|
|
|
</PlainButton>
|
|
|
|
|
|
|
|
{toggledID === person.uuid ? tooltip(person) : null}
|
2017-01-24 12:10:13 +02:00
|
|
|
</StyledWrapper>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
PersonStatus.propTypes = {
|
2017-01-24 12:12:53 +02:00
|
|
|
handleStatusTooltip: React.PropTypes.func,
|
2017-01-24 12:10:13 +02:00
|
|
|
person: React.PropTypes.object,
|
2017-01-24 13:31:52 +02:00
|
|
|
toggledID: React.PropTypes.oneOfType([
|
|
|
|
React.PropTypes.string,
|
|
|
|
React.PropTypes.bool,
|
|
|
|
])
|
2017-01-24 12:10:13 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = PersonStatus;
|