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>
);
};
|