UNPKG

next-material-kit

Version:

NextJS Version of Material Kit React by Creative Tim (https://creative-tim.com)

65 lines (58 loc) 1.82 kB
import React from "react"; // nodejs library to set properties for components import PropTypes from "prop-types"; // nodejs library that concatenates classes import classNames from "classnames"; // @material-ui/core components import { makeStyles } from "@material-ui/core/styles"; import Button from "@material-ui/core/Button"; import styles from "styles/jss/nextjs-material-kit/components/paginationStyle.js"; const useStyles = makeStyles(styles); export default function Pagination(props) { const classes = useStyles(); const { pages, color } = props; return ( <ul className={classes.pagination}> {pages.map((prop, key) => { const paginationLink = classNames({ [classes.paginationLink]: true, [classes[color]]: prop.active, [classes.disabled]: prop.disabled, }); return ( <li className={classes.paginationItem} key={key}> {prop.onClick !== undefined ? ( <Button onClick={prop.onClick} className={paginationLink}> {prop.text} </Button> ) : ( <Button onClick={() => alert("you've clicked " + prop.text)} className={paginationLink} > {prop.text} </Button> )} </li> ); })} </ul> ); } Pagination.defaultProps = { color: "primary", }; Pagination.propTypes = { pages: PropTypes.arrayOf( PropTypes.shape({ active: PropTypes.bool, disabled: PropTypes.bool, text: PropTypes.oneOfType([ PropTypes.number, PropTypes.oneOf(["PREV", "NEXT", "..."]), ]).isRequired, onClick: PropTypes.func, }) ).isRequired, color: PropTypes.oneOf(["primary", "info", "success", "warning", "danger"]), };