UNPKG

ndla-ui

Version:

UI component library for NDLA.

72 lines (61 loc) 1.99 kB
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;