-
-
Save gajus/1b851a3d753114ea856c85b742db9546 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @flow | |
import React from 'react'; | |
import classNames from 'classnames'; | |
import ContainerDimensions from 'react-container-dimensions'; | |
import CardCarousel from '../CardCarousel'; | |
import MovieDetailsCard from '../MovieDetailsCard'; | |
import type { | |
PropsType as MovieDetailsCardPropsType | |
} from '../../components/MovieDetailsCard'; | |
import VenueMovieEvents from '../VenueMovieEvents'; | |
import './styles.scss'; | |
type MovieTilePropsType = { | |
+movie: $PropertyType<MovieDetailsCardPropsType, 'movie'> | |
}; | |
export default ({movie}: MovieTilePropsType) => { | |
const venues = movie.venues.slice(0, 3); | |
const venueList = venues.map((venue) => { | |
return <VenueMovieEvents | |
events={venue.events} | |
key={venue.id} | |
paginate={true} | |
venue={venue} | |
/>; | |
}); | |
const noVenues = <div key='no-venues' styleName='no-venues'> | |
<span styleName='call-to-action'> | |
No nearby showtimes. Try searching a different location or date. | |
</span> | |
</div>; | |
const lastVenue = <div key='last-venue' styleName='last-venue'> | |
<span styleName='call-to-action'> | |
<b>Change location</b><br />to see other venues playing the movie. | |
</span> | |
</div>; | |
if (venues.length) { | |
venueList.push(lastVenue); | |
} else { | |
venueList.push(noVenues); | |
} | |
const MovieTileBody = ({width}) => { | |
const fullWidth = width > 320 * 4; | |
const styleName = classNames({ | |
'movie-card': true, | |
'one-column': !fullWidth, | |
'two-columns': fullWidth | |
}); | |
return <div styleName='movie-title'> | |
<div styleName={styleName}> | |
<MovieDetailsCard | |
movie={movie} | |
/> | |
</div> | |
<div styleName='venue-list'> | |
<CardCarousel> | |
{venueList} | |
</CardCarousel> | |
</div> | |
</div>; | |
}; | |
return <ContainerDimensions>{MovieTileBody}</ContainerDimensions>; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment