Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 1x 1x 12x 12x 12x 12x 1x 1x 1x 1x 1x 12x | import React, { useState } from 'react'; import { Story, Meta } from '@storybook/react'; import InfiniteSlidePanel, { IInfiniteSlidePanelSlideProps, } from './InfiniteSlidePanel'; import Button from '../Button/Button'; export default { title: 'Private/InfiniteSlidePanel', component: InfiniteSlidePanel, parameters: { docs: { description: { component: InfiniteSlidePanel.peek.description, }, }, }, args: InfiniteSlidePanel.defaultProps, } as Meta; /* Dynamic Content */ export const DynamicContent: Story = (args: IInfiniteSlidePanelSlideProps) => { const generateRGB = (n: any) => { const R = Math.floor((Math.sin(n / Math.PI) + 1) * 128); const G = Math.floor((Math.sin((2 * n) / Math.PI) + 1) * 128); const B = Math.floor((Math.sin((3 * n) / Math.PI) + 1) * 128); return `rgb(${R},${G},${B})`; }; const [offset, setOffset] = useState(0); const handlePrev = () => { setOffset(offset - 1); }; const handleNext = () => { setOffset(offset + 1); }; const handleSwipe = (slidesSwiped: any) => { setOffset(offset + slidesSwiped); }; return ( <section> <Button onClick={handlePrev}>Backward</Button> <Button onClick={handleNext}>Forward</Button> <span style={{ marginLeft: 10 }}>Current offset: {offset}</span> <InfiniteSlidePanel {...args} totalSlides={12} slidesToShow={3} offset={offset} onSwipe={handleSwipe} > {(slideOffset) => ( <div style={{ width: '100%', height: '30vh', background: generateRGB(slideOffset), display: 'flex', justifyContent: 'center', alignItems: 'center', }} > {slideOffset} </div> )} </InfiniteSlidePanel> </section> ); }; |