saleor-dashboard/src/components/TablePagination/TablePaginationActions.tsx

113 lines
3 KiB
TypeScript
Raw Normal View History

import { IconButton } from "@material-ui/core";
2019-06-19 14:40:52 +00:00
import { fade } from "@material-ui/core/styles/colorManipulator";
import ArrowLeft from "@material-ui/icons/ArrowLeft";
import ArrowRight from "@material-ui/icons/ArrowRight";
Use MacawUI (#1229) * Replace withStyleswith useStyles (#1100) * Replace withStyleswith useStyles * Update messages * Use rem as a spacing unit (#1101) * Use rems as spacing units * Fix visual bugs * Update stories * Use macaw-ui as theme provider (#1108) * Use macaw ui as a theme provider * Add react-dom to aliases * Fix jest module resolution * Update useTheme hook usage * Fix test wrapper * Use macaw from git repo * Fix CI * Update stories * Fix aliasing * Extract savebar to macaw ui (#1146) * wip * Use savebar from macaw * Use confirm button from macaw * Improve file structure * Use sidebar context from macaw * Update macaw * Update macaw version * Remove savebar from storybook * Update stories * Use alerts and notifications from macaw (#1166) * Use alerts from macaw * Add notifications from macaw * Update stories * Pin macaw version * Encapsulate limit reached in one component * Remove unused imports * Use backlinks from macaw (#1183) * Use backlink from macaw * Update macaw version * Use macaw sidebar (#1148) * Use sidebar from macaw * Use shipped logo * Use lowercase * Update stories * Use user chip from macaw (#1191) * Use user chip from macaw * Use dedicated components for menu items * Simplify code * Bump version and fix types (#1210) * Rename onBack to onClick * Rename UserChip to UserChipMenu * Rename IMenuItem to SidebarMenuItem * Update macaw version * Fix tables after changes in macaw (#1220) * Update macaw version * Update changelog * Update stories * Fix after rebase * Update to macaw 0.2.0 * Lint files * Update macaw to 0.2.2
2021-07-21 08:59:52 +00:00
import { makeStyles, useTheme } from "@saleor/macaw-ui";
2019-08-09 11:14:35 +00:00
import classNames from "classnames";
2019-08-09 10:26:22 +00:00
import React from "react";
2019-06-19 14:40:52 +00:00
2019-12-03 15:28:40 +00:00
const useStyles = makeStyles(
theme => ({
dark: {
2019-06-19 14:40:52 +00:00
"& svg": {
2019-12-03 15:28:40 +00:00
color: theme.palette.primary.main
},
"&$disabled": {
"& svg": {
color: fade(theme.palette.primary.main, 0.2)
}
},
"&:focus, &:hover": {
"& > span:first-of-type": {
backgroundColor: fade(theme.palette.primary.main, 0.2)
}
2019-10-30 14:34:24 +00:00
}
},
2019-12-03 15:28:40 +00:00
disabled: {},
iconButton: {
2019-10-30 14:34:24 +00:00
"& > span:first-of-type": {
2019-12-03 15:28:40 +00:00
backgroundColor: theme.palette.background.default,
borderRadius: "100%",
transition: theme.transitions.duration.standard + "ms"
},
"& svg": {
border: `solid 1px #BDBDBD`,
borderRadius: "50%"
},
"&:focus, &:hover": {
"& > span:first-of-type": {
backgroundColor: fade(theme.palette.primary.main, 0.2)
},
backgroundColor: "transparent"
2019-09-12 10:38:23 +00:00
},
2019-12-03 15:28:40 +00:00
padding: 6
2019-06-19 14:40:52 +00:00
},
2019-12-03 15:28:40 +00:00
root: {
color: theme.palette.text.secondary,
flexShrink: 0,
margin: theme.spacing(0, 2.5)
}
}),
{ name: "TablePaginationActions" }
);
2019-06-19 14:40:52 +00:00
2019-10-30 14:34:24 +00:00
export interface TablePaginationActionsProps {
2019-06-19 14:40:52 +00:00
backIconButtonProps?: any;
className?: string;
hasNextPage: boolean;
hasPreviousPage: boolean;
nextIconButtonProps?: any;
onNextPage(event);
onPreviousPage(event);
}
export const TablePaginationActions: React.FC<TablePaginationActionsProps> = props => {
2019-10-30 14:34:24 +00:00
const {
2019-06-19 14:40:52 +00:00
backIconButtonProps,
className,
hasNextPage,
hasPreviousPage,
nextIconButtonProps,
onNextPage,
onPreviousPage,
...other
2019-10-30 14:34:24 +00:00
} = props;
const classes = useStyles(props);
Use MacawUI (#1229) * Replace withStyleswith useStyles (#1100) * Replace withStyleswith useStyles * Update messages * Use rem as a spacing unit (#1101) * Use rems as spacing units * Fix visual bugs * Update stories * Use macaw-ui as theme provider (#1108) * Use macaw ui as a theme provider * Add react-dom to aliases * Fix jest module resolution * Update useTheme hook usage * Fix test wrapper * Use macaw from git repo * Fix CI * Update stories * Fix aliasing * Extract savebar to macaw ui (#1146) * wip * Use savebar from macaw * Use confirm button from macaw * Improve file structure * Use sidebar context from macaw * Update macaw * Update macaw version * Remove savebar from storybook * Update stories * Use alerts and notifications from macaw (#1166) * Use alerts from macaw * Add notifications from macaw * Update stories * Pin macaw version * Encapsulate limit reached in one component * Remove unused imports * Use backlinks from macaw (#1183) * Use backlink from macaw * Update macaw version * Use macaw sidebar (#1148) * Use sidebar from macaw * Use shipped logo * Use lowercase * Update stories * Use user chip from macaw (#1191) * Use user chip from macaw * Use dedicated components for menu items * Simplify code * Bump version and fix types (#1210) * Rename onBack to onClick * Rename UserChip to UserChipMenu * Rename IMenuItem to SidebarMenuItem * Update macaw version * Fix tables after changes in macaw (#1220) * Update macaw version * Update changelog * Update stories * Fix after rebase * Update to macaw 0.2.0 * Lint files * Update macaw to 0.2.2
2021-07-21 08:59:52 +00:00
const { direction, themeType } = useTheme();
const isDark = themeType === "dark";
2019-10-30 14:34:24 +00:00
return (
<div className={classNames(classes.root, className)} {...other}>
<IconButton
className={classNames(classes.iconButton, {
[classes.dark]: isDark,
[classes.disabled]: !hasPreviousPage
})}
onClick={onPreviousPage}
disabled={!hasPreviousPage}
data-test="button-pagination-back"
2019-10-30 14:34:24 +00:00
{...backIconButtonProps}
>
{direction === "rtl" ? <ArrowRight /> : <ArrowLeft />}
</IconButton>
<IconButton
className={classNames(classes.iconButton, {
[classes.dark]: isDark,
[classes.disabled]: !hasNextPage
})}
onClick={onNextPage}
disabled={!hasNextPage}
data-test="button-pagination-next"
2019-10-30 14:34:24 +00:00
{...nextIconButtonProps}
>
{direction === "rtl" ? <ArrowLeft /> : <ArrowRight />}
</IconButton>
</div>
);
};
2019-06-19 14:40:52 +00:00
TablePaginationActions.displayName = "TablePaginationActions";
export default TablePaginationActions;