bazarr/frontend/src/components/bazarr/Language.tsx

66 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-05-31 15:49:04 +00:00
import { BuildKey } from "@/utilities";
import { Badge, Group, Text, TextProps } from "@mantine/core";
import { FunctionComponent, useMemo } from "react";
2022-05-31 15:49:04 +00:00
type LanguageTextProps = TextProps<"div"> & {
value: Language.Info;
long?: boolean;
2022-05-31 15:49:04 +00:00
};
declare type LanguageComponent = {
Text: typeof LanguageText;
2022-05-31 15:49:04 +00:00
List: typeof LanguageList;
};
2022-05-31 15:49:04 +00:00
const LanguageText: FunctionComponent<LanguageTextProps> = ({
value,
long,
2022-05-31 15:49:04 +00:00
...props
}) => {
const result = useMemo(() => {
let lang = value.code2;
let hi = ":HI";
let forced = ":Forced";
if (long) {
lang = value.name;
hi = " HI";
forced = " Forced";
}
let res = lang;
if (value.hi) {
res += hi;
} else if (value.forced) {
res += forced;
}
return res;
}, [value, long]);
return (
2022-05-31 15:49:04 +00:00
<Text inherit {...props}>
{result}
2022-05-31 15:49:04 +00:00
</Text>
);
};
2022-05-31 15:49:04 +00:00
type LanguageListProps = {
value: Language.Info[];
};
2022-05-31 15:49:04 +00:00
const LanguageList: FunctionComponent<LanguageListProps> = ({ value }) => {
return (
2022-05-31 15:49:04 +00:00
<Group spacing="xs">
{value.map((v) => (
<Badge key={BuildKey(v.code2, v.code2, v.hi)}>{v.name}</Badge>
))}
</Group>
);
2022-05-31 15:49:04 +00:00
};
const Components: LanguageComponent = {
Text: LanguageText,
2022-05-31 15:49:04 +00:00
List: LanguageList,
};
export default Components;