react-modal-slideshow
Version:
A simple React modal media slideshow with CSS powered animations
60 lines (55 loc) • 1.99 kB
JSX
import React, { Component } from "react";
import ReactCSSTransitionGroup from "react-addons-css-transition-group";
import PropTypes from "prop-types";
import SimpleSlide from "./SimpleSlide.jsx";
export default class SimpleModal extends Component {
render() {
return (
<div className={this.props.classNamePrefix}>
<a
className={`${this.props.classNamePrefix}__close`}
onClick={this.props.onClose}
>
Close
</a>
<ReactCSSTransitionGroup
component="div"
transitionName={{
enter:
`${this.props.classNamePrefix}__slide-enter` +
`-${this.props.slideAnimationDirection}`,
enterActive:
`${this.props.classNamePrefix}__slide-enter` +
`-${this.props.slideAnimationDirection}-active`,
leave:
`${this.props.classNamePrefix}__slide-leave` +
`-${this.props.slideAnimationDirection}`,
leaveActive:
`${this.props.classNamePrefix}__slide-leave` +
`-${this.props.slideAnimationDirection}-active`
}}
transitionEnter={this.props.slideAnimations}
transitionLeave={this.props.slideAnimations}
transitionEnterTimeout={this.props.slideTransitionEnterTimeout}
transitionLeaveTimeout={this.props.slideTransitionLeaveTimeout}
>
<SimpleSlide {...this.props} key={this.props.slideIndex} />
</ReactCSSTransitionGroup>
</div>
);
}
}
SimpleModal.propTypes = {
slide: PropTypes.object,
slideIndex: PropTypes.number,
slideAnimations: PropTypes.bool,
slideAnimationDirection: PropTypes.string,
showPrev: PropTypes.bool,
showNext: PropTypes.bool,
onPrev: PropTypes.func,
onNext: PropTypes.func,
onClose: PropTypes.func,
classNamePrefix: PropTypes.string,
slideTransitionEnterTimeout: PropTypes.number,
slideTransitionLeaveTimeout: PropTypes.number
};