Skip to content

Commit

Permalink
Merge pull request #10 from faceless-ui/fix/breakpoints
Browse files Browse the repository at this point in the history
fix: resets props in useBreakpoint hook
  • Loading branch information
jacobsfletch authored Sep 9, 2022
2 parents dc1bba6 + c26c6eb commit 1e4ab55
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 2 deletions.
9 changes: 7 additions & 2 deletions demo/App.tsx
Original file line number Diff line number Diff line change
@@ -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 = () => (
<div
Expand All @@ -16,9 +17,13 @@ const App: React.FC = () => (
</h1> */}
{/* <FreeScrollSliderDemo /> */}
<h1>
Responsive Slider:
</h1>
<ResponsiveSlider />
{/* <h1>
Scroll Snap Slider:
</h1>
<ScrollSnapSliderDemo />
<ScrollSnapSliderDemo /> */}
{/* <h1>
Thumbnail Slider Demo:
</h1>
Expand Down
77 changes: 77 additions & 0 deletions demo/ResponsiveSlider/index.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<Fragment>
<SliderProvider
slidesToShow={slidesToShow}
// slidesToShow={desktopSlidesToShow}
// breakpoints={{
// '(max-width: 768px)': {
// slidesToShow: 1,
// },
// }}
>
<div
style={{
height: '400px',
width: '400px',
margin: 'auto',
display: 'flex',
flexDirection: 'column',
}}
>
<SliderTrack>
{slides.map((slide, index) => (
<Slide
key={index}
index={index}
>
<div
style={{
padding: '50px',
backgroundColor: 'gray',
border: '1px solid black',
}}
>
{`Slide ${index + 1}`}
</div>
</Slide>
))}
</SliderTrack>
</div>
</SliderProvider>
</Fragment>
);
};

export default ResponsiveSlider;
2 changes: 2 additions & 0 deletions src/SliderProvider/useBreakpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ export const useBreakpoints: UseBreakpoints = (props): SliderSettings => {
}
})
}

setPropsToShow(props);
}, [props]);

const requestThrottledAnimation = useCallback((): void => {
Expand Down

0 comments on commit 1e4ab55

Please sign in to comment.