@@ -11,18 +11,41 @@ const CLASSNAMES = {
1111 fullWidth : 'react-Slidy--fullWidth'
1212}
1313
14- const ReactSlidy = props => {
15- const [ showSlider , setShowSlider ] = useState ( ! props . lazyLoadSlider )
14+ const ReactSlidy = ( {
15+ children,
16+ classNameBase = 'react-Slidy' ,
17+ doAfterDestroy = noop ,
18+ doAfterInit = noop ,
19+ doAfterSlide = noop ,
20+ doBeforeSlide = noop ,
21+ imageObjectFit,
22+ itemsToPreload = 1 ,
23+ initialSlide = 0 ,
24+ ease = 'ease' ,
25+ lazyLoadSlider = true ,
26+ lazyLoadConfig = {
27+ offset : 150
28+ } ,
29+ keyboardNavigation = false ,
30+ numOfSlides = 1 ,
31+ sanitize = true ,
32+ slide = 0 ,
33+ slideSpeed = 500 ,
34+ showArrows = true ,
35+ useFullHeight = false ,
36+ useFullWidth = true
37+ } ) => {
38+ const [ showSlider , setShowSlider ] = useState ( ! lazyLoadSlider )
1639 const nodeEl = useRef ( null )
1740
1841 useEffect (
1942 function ( ) {
2043 let observer
2144
22- if ( props . lazyLoadSlider ) {
45+ if ( lazyLoadSlider ) {
2346 const initLazyLoadSlider = ( ) => {
2447 // if we support IntersectionObserver, let's use it
25- const { offset = 0 } = props . lazyLoadConfig
48+ const { offset = 0 } = lazyLoadConfig
2649 observer = new window . IntersectionObserver ( handleIntersection , {
2750 rootMargin : `${ offset } px 0px 0px`
2851 } )
@@ -48,16 +71,6 @@ const ReactSlidy = props => {
4871 }
4972 }
5073
51- const {
52- children,
53- classNameBase,
54- imageObjectFit,
55- numOfSlides,
56- sanitize,
57- useFullHeight,
58- useFullWidth
59- } = props
60-
6174 const numOfSlidesSanitzed = Math . min (
6275 numOfSlides ,
6376 React . Children . count ( children )
@@ -72,15 +85,31 @@ const ReactSlidy = props => {
7285 . filter ( Boolean )
7386 . join ( ' ' )
7487
88+ const reactSlidySliderProps = {
89+ children,
90+ classNameBase,
91+ doAfterDestroy,
92+ doAfterInit,
93+ doAfterSlide,
94+ doBeforeSlide,
95+ ease,
96+ initialSlide,
97+ itemsToPreload,
98+ keyboardNavigation,
99+ numOfSlides,
100+ slide,
101+ showArrows,
102+ slideSpeed
103+ }
104+
75105 return (
76106 < div className = { rootClassName } ref = { nodeEl } >
77107 { showSlider && (
78108 < ReactSlidySlider
79- parentRef = { nodeEl }
80- { ...props }
109+ { ...reactSlidySliderProps }
81110 numOfSlides = { sanitize ? numOfSlidesSanitzed : numOfSlides }
82111 >
83- { props . children }
112+ { children }
84113 </ ReactSlidySlider >
85114 ) }
86115 </ div >
@@ -117,8 +146,6 @@ ReactSlidy.propTypes = {
117146 /** Distance which the slider will be loaded */
118147 offset : PropTypes . number
119148 } ) ,
120- /** Activate navigation by keyboard */
121- navigateByKeyboard : PropTypes . bool ,
122149 /** Number of slides to show at once */
123150 numOfSlides : PropTypes . number ,
124151 /** Determine if we want to sanitize the slides or take numberOfSlider directly */
@@ -135,27 +162,4 @@ ReactSlidy.propTypes = {
135162 useFullHeight : PropTypes . bool
136163}
137164
138- ReactSlidy . defaultProps = {
139- classNameBase : 'react-Slidy' ,
140- doAfterDestroy : noop ,
141- doAfterInit : noop ,
142- doAfterSlide : noop ,
143- doBeforeSlide : noop ,
144- itemsToPreload : 1 ,
145- initialSlide : 0 ,
146- ease : 'ease' ,
147- lazyLoadSlider : true ,
148- lazyLoadConfig : {
149- offset : 150
150- } ,
151- navigateByKeyboard : false ,
152- numOfSlides : 1 ,
153- sanitize : true ,
154- slide : 0 ,
155- slideSpeed : 500 ,
156- showArrows : true ,
157- useFullHeight : false ,
158- useFullWidth : true
159- }
160-
161165export default ReactSlidy
0 commit comments