src/utils/PaginationDropdown.js
last analyzed

Complexity

Total Complexity 0
Complexity/F 0

Size

Lines of Code 34
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 50%

Importance

Changes 0
Metric Value
wmc 0
eloc 30
mnd 0
bc 0
fnc 0
dl 0
loc 34
ccs 3
cts 6
cp 0.5
bpm 0
cpm 0
noi 0
c 0
b 0
f 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