PagingSizeUncontrolledDropdown.jsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import DropdownItem from 'reactstrap/es/DropdownItem';
  4. import DropdownMenu from 'reactstrap/es/DropdownMenu';
  5. import DropdownToggle from 'reactstrap/es/DropdownToggle';
  6. import UncontrolledDropdown from 'reactstrap/es/UncontrolledDropdown';
  7. const PagingSizeUncontrolledDropdown = (props) => {
  8. function dropdownItemOnClickHandler(num) {
  9. if (props.onChangeDropdownItem === null) {
  10. return;
  11. }
  12. props.onChangeDropdownItem(num);
  13. }
  14. return (
  15. <React.Fragment>
  16. <div className="form-group row">
  17. <div className="offset-md-3 col-md-6 text-left">
  18. <div className="my-0 w-100">
  19. <label>{props.label}</label>
  20. </div>
  21. <UncontrolledDropdown>
  22. <DropdownToggle className="text-right col-6" caret>
  23. <span className="float-left">{props.toggleLabel}</span>
  24. </DropdownToggle>
  25. <DropdownMenu className="dropdown-menu" role="menu">
  26. {props.dropdownItemSize.map((num) => {
  27. return (
  28. <DropdownItem key={num} role="presentation" onClick={() => dropdownItemOnClickHandler(num)}>
  29. <a role="menuitem">{num}</a>
  30. </DropdownItem>
  31. );
  32. })}
  33. </DropdownMenu>
  34. </UncontrolledDropdown>
  35. <p className="form-text text-muted">
  36. {props.desc}
  37. </p>
  38. </div>
  39. </div>
  40. </React.Fragment>
  41. );
  42. };
  43. PagingSizeUncontrolledDropdown.propTypes = {
  44. label: PropTypes.string,
  45. toggleLabel: PropTypes.number,
  46. dropdownItemSize: PropTypes.array,
  47. desc: PropTypes.string,
  48. onChangeDropdownItem: PropTypes.func,
  49. };
  50. export default PagingSizeUncontrolledDropdown;