1import { makeStyles } from '@material-ui/styles';
2import gql from 'graphql-tag';
3import React from 'react';
4import Author from '../Author';
5import Date from '../Date';
6import Label from '../Label';
7
8const useStyles = makeStyles(theme => ({
9 main: {
10 ...theme.typography.body2,
11 marginLeft: theme.spacing.unit + 40,
12 },
13 author: {
14 fontWeight: 'bold',
15 },
16}));
17
18function LabelChange({ op }) {
19 const { added, removed } = op;
20 const classes = useStyles();
21 return (
22 <div className={classes.main}>
23 <Author author={op.author} className={classes.author} />
24 {added.length > 0 && <span> added the </span>}
25 {added.map((label, index) => (
26 <Label key={index} label={label} />
27 ))}
28 {added.length > 0 && removed.length > 0 && <span> and</span>}
29 {removed.length > 0 && <span> removed the </span>}
30 {removed.map((label, index) => (
31 <Label key={index} label={label} />
32 ))}
33 <span>
34 {' '}
35 label
36 {added.length + removed.length > 1 && 's'}{' '}
37 </span>
38 <Date date={op.date} />
39 </div>
40 );
41}
42
43LabelChange.fragment = gql`
44 fragment LabelChange on TimelineItem {
45 ... on LabelChangeTimelineItem {
46 date
47 ...authored
48 added {
49 ...Label
50 }
51 removed {
52 ...Label
53 }
54 }
55 }
56
57 ${Label.fragment}
58 ${Author.fragment}
59`;
60
61export default LabelChange;