UNPKG

@foreverrbum/ethsign

Version:

This package will allow you to electronically sign documents within your application

55 lines (48 loc) 1.54 kB
import React, { useState } from 'react'; import cx from 'classnames'; import SliderContext from './context' import Content from './Content' import SlideButton from './SlideButton' import SliderWrapper from './SliderWrapper' import useSliding from './useSliding' import useSizeElement from './useSizeElement' import '../../styles/Slider/Slider.scss' const Slider = ({ children, activeSlide }) => { const [currentSlide, setCurrentSlide] = useState(activeSlide); const { width, elementRef } = useSizeElement(); const { handlePrev, handleNext, slideProps, containerRef, hasNext, hasPrev } = useSliding(width, React.Children.count(children)); const handleSelect = movie => { setCurrentSlide(movie); }; const handleClose = () => { setCurrentSlide(null); }; const contextValue = { onSelectSlide: handleSelect, onCloseSlide: handleClose, elementRef, currentSlide, }; return ( <SliderContext.Provider value={contextValue}> <SliderWrapper> <div className={cx('slider', { 'slider--open': currentSlide != null })} > <div ref={containerRef} className="slider__container py-20" {...slideProps}>{children}</div> </div> {hasPrev && <SlideButton onClick={handlePrev} type="prev" />} {hasNext && <SlideButton onClick={handleNext} type="next" />} </SliderWrapper> {currentSlide && <Content movie={currentSlide} onClose={handleClose} />} </SliderContext.Provider> ); }; export default Slider;