};
handleSwipe = (index) => {
- this.setState({ index: (index) % this.props.media.size });
+ this.setState({ index: index % this.props.media.size });
}
handleNextClick = () => {
this.setState({ index: (this.props.media.size + this.getIndex() - 1) % this.props.media.size });
}
+ handleChangeIndex = (e) => {
+ const index = Number(e.currentTarget.getAttribute('data-index'));
+ this.setState({ index: index % this.props.media.size });
+ }
+
handleKeyUp = (e) => {
switch(e.key) {
case 'ArrowLeft':
const { media, intl, onClose } = this.props;
const index = this.getIndex();
+ let pagination = [];
const leftNav = media.size > 1 && <button tabIndex='0' className='modal-container__nav modal-container__nav--left' onClick={this.handlePrevClick} aria-label={intl.formatMessage(messages.previous)}><i className='fa fa-fw fa-chevron-left' /></button>;
const rightNav = media.size > 1 && <button tabIndex='0' className='modal-container__nav modal-container__nav--right' onClick={this.handleNextClick} aria-label={intl.formatMessage(messages.next)}><i className='fa fa-fw fa-chevron-right' /></button>;
+ if (media.size > 1) {
+ pagination = media.map((item, i) => {
+ const classes = ['media-modal__button'];
+ if (i === index) {
+ classes.push('media-modal__button--active');
+ }
+ return (<li className='media-modal__page-dot' key={i}><button tabIndex='0' className={classes.join(' ')} onClick={this.handleChangeIndex} data-index={i}>{i + 1}</button></li>);
+ });
+ }
+
const content = media.map((image) => {
const width = image.getIn(['meta', 'original', 'width']) || null;
const height = image.getIn(['meta', 'original', 'height']) || null;
{content}
</ReactSwipeableViews>
</div>
+ <ul className='media-modal__pagination'>
+ {pagination}
+ </ul>
{rightNav}
</div>
background: $base-overlay-background;
}
+.media-modal__pagination {
+ width: 100%;
+ text-align: center;
+ position: absolute;
+ left: 0;
+ bottom: -40px;
+}
+
+.media-modal__page-dot {
+ display: inline-block;
+}
+
+.media-modal__button {
+ background-color: $white;
+ height: 12px;
+ width: 12px;
+ border-radius: 6px;
+ margin: 10px;
+ padding: 0;
+ border: 0;
+ font-size: 0;
+}
+
+.media-modal__button--active {
+ background-color: $ui-highlight-color;
+}
+
.media-modal__close {
position: absolute;
right: 4px;