PagingSizeUncontrolledDropdown.jsx 1.6 KB

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