frontend/app/Entry/EntryLightboxBanner.tsx (62 lines of code) (raw):
import React from 'react';
import PropTypes from 'prop-types';
import {LightboxIndex} from "../types";
import {Grid, IconButton, makeStyles, Toolbar, Tooltip} from "@material-ui/core";
import {Add, RemoveCircle} from "@material-ui/icons";
interface EntryLightboxBannerProps {
lightboxEntries: LightboxIndex[];
small?: boolean;
removeFromLightbox?: ()=>void;
putToLightbox?: ()=>void;
isInLightbox?: boolean;
}
const useStyles = makeStyles({
entryLightboxBanner: {
width: "100%",
marginLeft: "0.1em",
marginRight: "0.1em",
},
entryLightboxBannerSmall: {
height: "16px",
marginRight: "0.2em",
borderRadius: "16px"
},
entryLightboxBannerLarge: {
height: "26px",
marginRight: "0.4em",
marginBottom: "0.6em",
borderRadius: "32px"
}
});
const EntryLightboxBanner:React.FC<EntryLightboxBannerProps> = (props)=> {
const classes = useStyles();
return <Grid container className={classes.entryLightboxBanner} alignItems="flex-end" justify="center">
{
props.removeFromLightbox && props.putToLightbox ?
<Grid item>
<IconButton onClick={() => props.isInLightbox && props.removeFromLightbox ? props.removeFromLightbox() : props.putToLightbox ? props.putToLightbox() : false}>
{
props.isInLightbox ? <Tooltip title="Remove from my lightbox">
<RemoveCircle/></Tooltip>
:
<Tooltip title="Add to my lightbox">
<Add/>
</Tooltip>
}
</IconButton>
</Grid>: null
}
{
props.lightboxEntries.map(entry=>
<Grid item>
<Tooltip title={entry.owner}>
<img src={entry.avatarUrl ? entry.avatarUrl : "/static/default-avatar.png"}
alt={entry.owner}
className={props.small ? classes.entryLightboxBannerSmall : classes.entryLightboxBannerLarge }/>
</Tooltip>
</Grid>
)
}
</Grid>
}
export default EntryLightboxBanner;