Skip to content

Instantly share code, notes, and snippets.

@gajus
Created May 29, 2017 15:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gajus/1b851a3d753114ea856c85b742db9546 to your computer and use it in GitHub Desktop.
Save gajus/1b851a3d753114ea856c85b742db9546 to your computer and use it in GitHub Desktop.
// @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