saleor-dashboard/src/components/RowNumberSelect/RowNumberSelect.tsx

72 lines
1.6 KiB
TypeScript
Raw Normal View History

2019-08-09 10:17:04 +00:00
import MenuItem from "@material-ui/core/MenuItem";
import Select from "@material-ui/core/Select";
2019-10-28 16:16:49 +00:00
import { makeStyles, useTheme } from "@material-ui/core/styles";
2019-08-09 10:17:04 +00:00
import React from "react";
import { FormattedMessage } from "react-intl";
2019-08-09 10:17:04 +00:00
import { ListSettings } from "../../types";
const useStyles = makeStyles(
2019-10-28 16:16:49 +00:00
theme => ({
label: {
fontSize: 14
},
select: {
"& div": {
"&:focus": {
background: "none"
2019-08-09 10:17:04 +00:00
},
2019-10-28 16:16:49 +00:00
color: theme.palette.primary.main,
marginLeft: theme.spacing(1)
},
"& svg": {
color: theme.palette.primary.main
},
"&:after, &:before, &:hover": {
border: "none !important"
2019-08-09 10:17:04 +00:00
}
2019-10-28 16:16:49 +00:00
}
}),
2019-08-09 10:17:04 +00:00
{
name: "RowNumberSelect"
}
);
interface RowNumberSelectProps {
choices: number[];
className?: string;
settings: ListSettings;
onChange(key: keyof ListSettings, value: any);
}
const RowNumberSelect: React.FC<RowNumberSelectProps> = ({
className,
choices,
settings,
onChange
}) => {
const theme = useTheme();
const classes = useStyles({ theme });
return (
<div className={className}>
<span className={classes.label}>
<FormattedMessage defaultMessage="No of Rows:" />
</span>
2019-08-09 10:17:04 +00:00
<Select
className={classes.select}
value={settings.rowNumber}
onChange={event => onChange("rowNumber", event.target.value)}
>
{choices.length > 0 &&
choices.map(choice => (
<MenuItem value={choice} key={choice}>
{choice}
</MenuItem>
))}
</Select>
</div>
);
};
export default RowNumberSelect;