import { TableCell } from "@material-ui/core"; import { TableCellProps } from "@material-ui/core/TableCell"; import { makeStyles } from "@saleor/theme"; import classNames from "classnames"; import React from "react"; import ArrowSort from "../../icons/ArrowSort"; const useStyles = makeStyles( theme => ({ arrow: { transition: theme.transitions.duration.short + "ms" }, arrowLeft: { marginLeft: -24 }, arrowUp: { transform: "rotate(180deg)" }, disabled: { opacity: 0.7, "&&": { cursor: "unset" } }, label: { alignSelf: "center", display: "inline-block" }, labelContainer: { "&:hover": { color: theme.palette.text.primary }, display: "flex", height: 24 }, labelContainerActive: { color: theme.palette.text.primary }, labelContainerCenter: { justifyContent: "center" }, labelContainerRight: { justifyContent: "flex-end" }, root: { cursor: "pointer" } }), { name: "TableCellHeader" } ); export type TableCellHeaderArrowDirection = "asc" | "desc"; export type TableCellHeaderArrowPosition = "left" | "right"; export interface TableCellHeaderProps extends TableCellProps { arrowPosition?: TableCellHeaderArrowPosition; direction?: TableCellHeaderArrowDirection; textAlign?: "left" | "center" | "right"; disabled?: boolean; } const TableCellHeader: React.FC = props => { const classes = useStyles(props); const { arrowPosition, children, className, direction, textAlign, disabled = false, onClick, ...rest } = props; return ( { if (!disabled) { onClick(e); } }} className={classNames(classes.root, className, { [classes.disabled]: disabled })} >
{!!direction && arrowPosition === "left" && ( )}
{children}
{!!direction && arrowPosition === "right" && ( )}
); }; TableCellHeader.displayName = "TableCellHeader"; TableCellHeader.defaultProps = { arrowPosition: "left", textAlign: "left" }; export default TableCellHeader;