mirror of
https://github.com/OpenMaxIO/openmaxio-object-browser
synced 2026-07-01 07:41:18 -07:00
109 lines
3.2 KiB
TypeScript
109 lines
3.2 KiB
TypeScript
// This file is part of MinIO Console Server
|
|
// Copyright (c) 2019 MinIO, Inc.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import { TablePaginationActionsProps } from "@material-ui/core/TablePagination/TablePaginationActions";
|
|
import {
|
|
createStyles,
|
|
makeStyles,
|
|
Theme,
|
|
useTheme,
|
|
} from "@material-ui/core/styles";
|
|
import React from "react";
|
|
import { IconButton } from "@material-ui/core";
|
|
import LastPageIcon from "@material-ui/icons/LastPage";
|
|
import FirstPageIcon from "@material-ui/icons/FirstPage";
|
|
import { KeyboardArrowLeft, KeyboardArrowRight } from "@material-ui/icons";
|
|
|
|
const useStyles1 = makeStyles((theme: Theme) =>
|
|
createStyles({
|
|
root: {
|
|
flexShrink: 0,
|
|
marginLeft: theme.spacing(2.5),
|
|
},
|
|
})
|
|
);
|
|
|
|
export function MinTablePaginationActions(props: TablePaginationActionsProps) {
|
|
const classes = useStyles1();
|
|
const theme = useTheme();
|
|
const { count, page, rowsPerPage, onChangePage } = props;
|
|
|
|
const handleFirstPageButtonClick = (
|
|
event: React.MouseEvent<HTMLButtonElement>
|
|
) => {
|
|
onChangePage(event, 0);
|
|
};
|
|
|
|
const handleBackButtonClick = (
|
|
event: React.MouseEvent<HTMLButtonElement>
|
|
) => {
|
|
onChangePage(event, page - 1);
|
|
};
|
|
|
|
const handleNextButtonClick = (
|
|
event: React.MouseEvent<HTMLButtonElement>
|
|
) => {
|
|
onChangePage(event, page + 1);
|
|
};
|
|
|
|
const handleLastPageButtonClick = (
|
|
event: React.MouseEvent<HTMLButtonElement>
|
|
) => {
|
|
onChangePage(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
|
};
|
|
|
|
return (
|
|
<div className={classes.root}>
|
|
<IconButton
|
|
onClick={handleFirstPageButtonClick}
|
|
disabled={page === 0}
|
|
aria-label="first page"
|
|
>
|
|
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
|
|
</IconButton>
|
|
<IconButton
|
|
onClick={handleBackButtonClick}
|
|
disabled={page === 0}
|
|
aria-label="previous page"
|
|
>
|
|
{theme.direction === "rtl" ? (
|
|
<KeyboardArrowRight />
|
|
) : (
|
|
<KeyboardArrowLeft />
|
|
)}
|
|
</IconButton>
|
|
<IconButton
|
|
onClick={handleNextButtonClick}
|
|
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
|
|
aria-label="next page"
|
|
>
|
|
{theme.direction === "rtl" ? (
|
|
<KeyboardArrowLeft />
|
|
) : (
|
|
<KeyboardArrowRight />
|
|
)}
|
|
</IconButton>
|
|
<IconButton
|
|
onClick={handleLastPageButtonClick}
|
|
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
|
|
aria-label="last page"
|
|
>
|
|
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
|
|
</IconButton>
|
|
</div>
|
|
);
|
|
}
|