| Total Complexity | 0 |
| Complexity/F | 0 |
| Lines of Code | 34 |
| Function Count | 0 |
| Duplicated Lines | 0 |
| Ratio | 0 % |
| Coverage | 50% |
| Changes | 0 | ||
| 1 | import React from 'react'; |
||
| 2 | import { DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown } from 'reactstrap'; |
||
| 3 | import * as PropTypes from 'prop-types'; |
||
| 4 | |||
| 5 | 2 | const propTypes = { |
|
| 6 | toggleClassName: PropTypes.string, |
||
| 7 | ranges: PropTypes.arrayOf(PropTypes.number).isRequired, |
||
| 8 | value: PropTypes.number.isRequired, |
||
| 9 | setValue: PropTypes.func.isRequired, |
||
| 10 | }; |
||
| 11 | |||
| 12 | 2 | const PaginationDropdown = ({ toggleClassName, ranges, value, setValue }) => ( |
|
| 13 | <UncontrolledDropdown> |
||
| 14 | <DropdownToggle caret color="link" className={toggleClassName}> |
||
| 15 | Paginate |
||
| 16 | </DropdownToggle> |
||
| 17 | <DropdownMenu right> |
||
| 18 | {ranges.map((itemsPerPage) => ( |
||
| 19 | <DropdownItem key={itemsPerPage} active={itemsPerPage === value} onClick={() => setValue(itemsPerPage)}> |
||
| 20 | <b>{itemsPerPage}</b> items per page |
||
| 21 | </DropdownItem> |
||
| 22 | ))} |
||
| 23 | <DropdownItem divider /> |
||
| 24 | <DropdownItem disabled={value === Infinity} onClick={() => setValue(Infinity)}> |
||
| 25 | <i>Clear pagination</i> |
||
| 26 | </DropdownItem> |
||
| 27 | </DropdownMenu> |
||
| 28 | </UncontrolledDropdown> |
||
| 29 | ); |
||
| 30 | |||
| 31 | 2 | PaginationDropdown.propTypes = propTypes; |
|
| 32 | |||
| 33 | export default PaginationDropdown; |
||
| 34 |