diff --git a/demo/App.tsx b/demo/App.tsx index 3eb9d4f..6e6e2c6 100644 --- a/demo/App.tsx +++ b/demo/App.tsx @@ -1,8 +1,9 @@ import React from 'react'; +import ResponsiveSlider from './ResponsiveSlider'; // import MarqueeSliderDemo from './MarqueeSliderDemo'; // import FreeScrollSliderDemo from './FreeScrollSliderDemo'; // import ThumbnailSliderDemo from './ThumbnailSliderDemo'; -import ScrollSnapSliderDemo from './ScrollSnapSliderDemo'; +// import ScrollSnapSliderDemo from './ScrollSnapSliderDemo'; const App: React.FC = () => (
( */} {/* */}

+ Responsive Slider: +

+ + {/*

Scroll Snap Slider:

- + */} {/*

Thumbnail Slider Demo:

diff --git a/demo/ResponsiveSlider/index.tsx b/demo/ResponsiveSlider/index.tsx new file mode 100644 index 0000000..74b80ac --- /dev/null +++ b/demo/ResponsiveSlider/index.tsx @@ -0,0 +1,77 @@ +import React, { Fragment, useCallback, useEffect, useState } from 'react'; +import { + SliderProvider, + Slide, + SliderTrack, +} from '../../src'; // swap '../src' for '../dist/build.bundle' to demo production build + +// NOTE: this components test both internal breakpoints and external breakpoints + +const slides = Array.from(Array(6).keys()); // NOTE: create array from number + +const desktopSlidesToShow = 3; + +const ResponsiveSlider: React.FC = () => { + const [slidesToShow, setSlidesToShow] = useState(desktopSlidesToShow); + + const handleResize = useCallback(() => { + const windowWidth = window.innerWidth; + if (windowWidth < 768) setSlidesToShow(1) + else setSlidesToShow(desktopSlidesToShow) + }, []); + + useEffect(() => { + handleResize(); + + window.addEventListener('resize', handleResize) + + return () => { + window.removeEventListener('resize', handleResize) + } + }, [handleResize]) + + return ( + + +
+ + {slides.map((slide, index) => ( + +
+ {`Slide ${index + 1}`} +
+
+ ))} +
+
+
+
+ ); +}; + +export default ResponsiveSlider; diff --git a/src/SliderProvider/useBreakpoints.ts b/src/SliderProvider/useBreakpoints.ts index 00cd810..9f5da41 100644 --- a/src/SliderProvider/useBreakpoints.ts +++ b/src/SliderProvider/useBreakpoints.ts @@ -32,6 +32,8 @@ export const useBreakpoints: UseBreakpoints = (props): SliderSettings => { } }) } + + setPropsToShow(props); }, [props]); const requestThrottledAnimation = useCallback((): void => {