convert pagination

This commit is contained in:
Sérgio Ramos 2016-12-09 17:43:26 +00:00
parent 440440217d
commit 9e3f5ff810
3 changed files with 97 additions and 20 deletions

View File

@ -1,36 +1,97 @@
const classNames = require('classnames'); const composers = require('../../shared/composers');
const constants = require('../../shared/constants');
const fns = require('../../shared/functions');
const React = require('react'); const React = require('react');
const styles = require('./style.css'); const Styled = require('styled-components');
const {
baseBox
} = composers;
const {
boxes
} = constants;
const {
rndId
} = fns;
const {
default: styled,
} = Styled;
const classNames = {
active: rndId()
};
const StyledUl = styled.ul`
display: inline-block;
list-style: none;
margin: 0;
padding: 0;
`;
const StyledLi = styled.li`
align-items: center;
cursor: pointer;
display: flex;
float: left;
height: 50px;
justify-content: center;
margin-right: 10px;
min-width: 50px;
padding-left: 15px;
padding-right: 15px;
position: relative;
${baseBox()}
&:last-child {
margin-right: inherit;
}
&:not( .${classNames.active} ):hover {
border: ${boxes.border.checked};
}
& a:hover {
text-decoration: none;
}
&.${classNames.active} {
cursor: default;
}
`;
const Pagination = ({ const Pagination = ({
children, children,
className, className,
label label,
style
}) => { }) => {
const cn = classNames(
className,
styles.pagination
);
const pages = React.Children.map(children, (child) => { const pages = React.Children.map(children, (child) => {
const cn = classNames( const cn = `
child.props.className, ${child.props.className}
child.props.active ? styles.active : '', ${child.props.active ? classNames.active : ''}
styles.pagination_item `.trim();
);
return ( return (
<li className={cn}> <StyledLi className={cn}>
{child} {child}
</li> </StyledLi>
); );
}); });
return ( return (
<nav aria-label={label} className={cn}> <nav
<ul className={styles.paginatation_list}> aria-label={label}
className={className}
style={style}
>
<StyledUl>
{pages} {pages}
</ul> </StyledUl>
</nav> </nav>
); );
}; };
@ -38,7 +99,8 @@ const Pagination = ({
Pagination.propTypes = { Pagination.propTypes = {
children: React.PropTypes.node, children: React.PropTypes.node,
className: React.PropTypes.string, className: React.PropTypes.string,
label: React.PropTypes.string label: React.PropTypes.string,
style: React.PropTypes.object
}; };
module.exports = Pagination; module.exports = Pagination;

View File

@ -18,6 +18,6 @@ module.exports = {
// RadioGroup: require('./components/radio-group'), // RadioGroup: require('./components/radio-group'),
Select: require('./components/select'), Select: require('./components/select'),
Widget: require('./components/widget'), Widget: require('./components/widget'),
// Pagination: require('./components/pagination'), Pagination: require('./components/pagination'),
// Modal: require('./components/modal') // Modal: require('./components/modal')
}; };

View File

@ -13,6 +13,7 @@ const {
Row, Row,
Column, Column,
Avatar, Avatar,
Pagination,
RangeSlider, RangeSlider,
Select, Select,
Tabs, Tabs,
@ -144,6 +145,20 @@ storiesOf('Radio', module)
<Radio disabled /> <Radio disabled />
)); ));
storiesOf('Pagination', module)
.add('Default', () => (
<Pagination>
<a>
<span>&laquo;</span>
<span>Previous</span>
</a>
<a>1</a>
<a active>2</a>
<a>3</a>
</Pagination>
));
storiesOf('RangeSlider', module) storiesOf('RangeSlider', module)
.add('Default', () => ( .add('Default', () => (
<RangeSlider /> <RangeSlider />