react-slick-ssr-transform
Version:
React port of slick carousel with dynamic transform width
75 lines (60 loc) • 1.98 kB
JavaScript
import React from 'react';
import classnames from 'classnames';
import Helpers from './mixins/helpers';
export var PrevArrow = React.createClass({
clickHandler: function (options, e) {
if (e) { e.preventDefault(); }
this.props.clickHandler(options, e);
},
render: function () {
var prevClasses = {'slick-arrow': true, 'slick-prev': true};
var prevHandler = this.clickHandler.bind(this, {message: 'previous'});
if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {
prevClasses['slick-disabled'] = true;
prevHandler = null;
}
var prevArrowProps = {
key: '0',
'data-role': 'none',
className: classnames(prevClasses),
style: {display: 'block'},
onClick: prevHandler
};
var prevArrow;
if (this.props.prevArrow) {
prevArrow = React.cloneElement(this.props.prevArrow, prevArrowProps);
} else {
prevArrow = <button key='0' type='button' {...prevArrowProps}> Previous</button>;
}
return prevArrow;
}
});
export var NextArrow = React.createClass({
clickHandler: function (options, e) {
if (e) { e.preventDefault(); }
this.props.clickHandler(options, e);
},
render: function () {
var nextClasses = {'slick-arrow': true, 'slick-next': true};
var nextHandler = this.clickHandler.bind(this, {message: 'next'});
if (!Helpers.canGoNext(this.props)) {
nextClasses['slick-disabled'] = true;
nextHandler = null;
}
var nextArrowProps = {
key: '1',
'data-role': 'none',
className: classnames(nextClasses),
style: {display: 'block'},
onClick: nextHandler
};
var nextArrow;
if (this.props.nextArrow) {
nextArrow = React.cloneElement(this.props.nextArrow, nextArrowProps);
} else {
nextArrow = <button key='1' type='button' {...nextArrowProps}> Next</button>;
}
return nextArrow;
}
});
;