adapters/react/RuiPaginationReact/RuiPagination.stories.tsx (70 lines of code) (raw):
import React from 'react';
import {storiesOf} from '@storybook/react';
import {withKnobs, number, object, text} from '@storybook/addon-knobs';
import RuiPagination from './src';
import Readme from './README.md';
storiesOf('Pagination', module)
.addParameters({
readme: {
sidebar: Readme,
},
})
.addDecorator(withKnobs)
.add('Playground', () => (
<RuiPagination
onPageRequest={pageNumber => {alert(`Page ${pageNumber} requested!`);}}
currentPage={number('currentPage', 3)}
numPages={number('numPages', 5)}
pagesShown={number('pagesShown', 5)}
/>
))
.add('Using hrefs', () => (
<RuiPagination
generateHref={pageNum => `#${pageNum}`}
currentPage={3}
numPages={5}
nextLink="#next"
prevLink="#prev"
/>
))
.add('Custom Previous/Next Elements', () => (
<RuiPagination
currentPage={3}
numPages={5}
>
<RuiPagination.Previous style={{padding: '0 5px'}}>Previous</RuiPagination.Previous>
<RuiPagination.Next style={{padding: '0 5px'}}>Next</RuiPagination.Next>
</RuiPagination>
))
.add('Custom page labels', () => (
<RuiPagination
generateLabel={pageNum => ((pageNum < 10) ? `0${pageNum}` : pageNum)}
generateAriaLabel={pageNum => `Visit page ${pageNum}`}
currentPage={3}
numPages={5}
/>
))
.add('Custom Ellipses Elements', () => {
const ellipsesStyle = {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
};
const ellipsesItemStyle = {
width: '3px',
height: '3px',
margin: '0 1px',
background: '#333',
};
return (
<RuiPagination
currentPage={10}
pagesShown={5}
numPages={20}
>
<RuiPagination.Ellipses style={ellipsesStyle}>
<div style={ellipsesItemStyle} />
<div style={ellipsesItemStyle} />
<div style={ellipsesItemStyle} />
</RuiPagination.Ellipses>
</RuiPagination>
);
});