ndla-ui
Version:
UI component library for NDLA.
72 lines (61 loc) • 1.99 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import React from 'react';
import PropTypes from 'prop-types';
import BEMHelper from 'react-bem-helper';
import { ChevronLeft, ChevronRight } from 'ndla-icons/common';
import Slider from 'react-slick';
var classes = BEMHelper('c-carousel');
var arrow = function arrow(direction) {
return function (_ref) {
var className = _ref.className,
style = _ref.style,
onClick = _ref.onClick;
return (// eslint-disable-line
React.createElement(
'button',
{
type: 'button',
className: classes('arrow', [direction]).className + ' ' + className,
onClick: onClick },
direction === 'prev' ? React.createElement(ChevronLeft, null) : React.createElement(ChevronRight, null)
)
);
};
};
var NextArrow = arrow('next');
var PrevArrow = arrow('prev');
var getDefaultSettings = function getDefaultSettings() {
return {
nextArrow: React.createElement(NextArrow, null),
prevArrow: React.createElement(PrevArrow, null),
dots: false,
infinite: false,
slidesToShow: 4,
slidesToScroll: 4,
swipeToScroll: false,
draggable: false
};
};
var Carousel = function Carousel(_ref2) {
var children = _ref2.children,
settings = _ref2.settings;
var mergedSettings = null;
if (!settings) {
mergedSettings = getDefaultSettings();
} else {
mergedSettings = Object.assign({}, getDefaultSettings(), settings);
}
return React.createElement(
Slider,
_extends({}, classes(), mergedSettings),
children
);
};
Carousel.propTypes = {
children: PropTypes.node.isRequired,
settings: PropTypes.object // eslint-disable-line
};
Carousel.defaultProps = {
settings: null
};
export default Carousel;