Gallery.js 1011 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import styled from 'styled-components'
  2. const GalleryStyle = styled.div`
  3. border: 1px solid ${props => props.theme.lightblue};
  4. margin-bottom: 1.5em;
  5. #header {
  6. padding: 0 0.3em;
  7. background-color: ${props => props.theme.lighterblue};
  8. color: ${props => props.theme.darkblue};
  9. cursor: pointer
  10. }
  11. `
  12. class Gallery extends React.Component {
  13. state = {
  14. galleryOpen: !!this.props.galleryOpen
  15. }
  16. openGallery = event => {
  17. this.setState({ galleryOpen: !this.state.galleryOpen })
  18. }
  19. render() {
  20. const { items, title } = this.props
  21. return (
  22. <GalleryStyle>
  23. <div onClick={this.openGallery} id="header">
  24. {this.state.galleryOpen ? <span>&#8259;</span> : <span>&#8227;</span>} {items.length} {title} available (click to {this.state.galleryOpen ? 'hide' : 'see'})
  25. </div>
  26. <div style={{ display: this.state.galleryOpen ? 'block' : 'none' }} id="gallery">
  27. {items}
  28. </div>
  29. </GalleryStyle>
  30. )
  31. }
  32. }
  33. export default Gallery