saleor-dashboard/src/translations/components/TranslationsLanguageList/TranslationsLanguageList.tsx

80 lines
2.3 KiB
TypeScript
Raw Normal View History

2019-06-19 14:40:52 +00:00
import Card from "@material-ui/core/Card";
2019-10-30 14:34:24 +00:00
import { makeStyles } from "@material-ui/core/styles";
2019-06-19 14:40:52 +00:00
import TableBody from "@material-ui/core/TableBody";
import TableCell from "@material-ui/core/TableCell";
import TableHead from "@material-ui/core/TableHead";
import TableRow from "@material-ui/core/TableRow";
2019-11-04 14:25:23 +00:00
import ResponsiveTable from "@saleor/components/ResponsiveTable";
2019-06-19 14:40:52 +00:00
import { ShopInfo_shop_languages } from "@saleor/components/Shop/types/ShopInfo";
import Skeleton from "@saleor/components/Skeleton";
import React from "react";
import { FormattedMessage } from "react-intl";
2019-06-19 14:40:52 +00:00
import { maybe, renderCollection } from "../../../misc";
export interface TranslationsLanguageListProps {
languages: ShopInfo_shop_languages[];
onRowClick: (code: string) => void;
}
2019-12-03 15:28:40 +00:00
const useStyles = makeStyles(
{
capitalize: {
textTransform: "capitalize"
},
link: {
cursor: "pointer"
}
2019-06-19 14:40:52 +00:00
},
2019-12-03 15:28:40 +00:00
{ name: "TranslationsLanguageList" }
);
2019-06-19 14:40:52 +00:00
const TranslationsLanguageList: React.FC<TranslationsLanguageListProps> = props => {
2019-10-30 14:34:24 +00:00
const { languages, onRowClick } = props;
const classes = useStyles(props);
return (
2019-06-19 14:40:52 +00:00
<Card>
2019-11-04 14:25:23 +00:00
<ResponsiveTable>
2019-06-19 14:40:52 +00:00
<TableHead>
<TableRow>
<TableCell>
<FormattedMessage defaultMessage="Language" />
2019-06-19 14:40:52 +00:00
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{renderCollection(
languages,
language => (
<TableRow
className={!!language ? classes.link : undefined}
hover={!!language}
key={language ? language.code : "skeleton"}
onClick={() => onRowClick(language.code)}
>
<TableCell className={classes.capitalize}>
{maybe<React.ReactNode>(
() => language.language,
<Skeleton />
)}
</TableCell>
</TableRow>
),
() => (
<TableRow>
<TableCell colSpan={1}>
<FormattedMessage defaultMessage="No languages found" />
2019-06-19 14:40:52 +00:00
</TableCell>
</TableRow>
)
)}
</TableBody>
2019-11-04 14:25:23 +00:00
</ResponsiveTable>
2019-06-19 14:40:52 +00:00
</Card>
2019-10-30 14:34:24 +00:00
);
};
2019-06-19 14:40:52 +00:00
TranslationsLanguageList.displayName = "TranslationsLanguageList";
export default TranslationsLanguageList;