import React from 'react';
import PropTypes from 'prop-types';
class ImageCarousel extends React.Component {
render() {
const content = this.props.slides.map((slide, s) => {
return (
<div className={`item${s === this.props.defaultSlide ? ' active' : ''}`} key={s}>
<img src={slide.image} alt={`Slide ${s}`} />
<div className="carousel-caption">{slide.caption}</div>
</div>
);
});
const slideIndices = this.props.slides.map((slide, s) => {
return (
<li
key={s}
className={s === this.props.defaultSlide ? 'active' : ''}
data-target={`#${this.props.id}`}
data-slide-to={s}
/>
);
});
const leftButt = !this.props.hideButtons ? (
<a className="left carousel-control" href={`#${this.props.id}`} data-slide="prev">
<span className="fa fa-angle-left" />
</a>
) : '';
const rightButt = !this.props.hideButtons ? (
<a className="right carousel-control" href={`#${this.props.id}`} data-slide="next">
<span className="fa fa-angle-right" />
</a>
) : '';
return (
<div id={this.props.id} className="carousel slide" data-ride="carousel">
{!this.props.hideIndicators ? (
<ol className="carousel-indicators">
{slideIndices}
</ol>
) : ''}
<div className="carousel-inner">
{content}
</div>
{leftButt}{rightButt}
</div>
);
}
}
ImageCarousel.propTypes = {
id: PropTypes.string.isRequired,
slides: PropTypes.array,
defaultSlide: PropTypes.number,
hideIndicators: PropTypes.bool,
hideButtons: PropTypes.bool
};
ImageCarousel.defaultProps = {
slides: [],
defaultSlide: 0,
hideIndicators: false,
hideButtons: false
};
export default ImageCarousel;
|