2024-10-05 21:39:58 +02:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) Contributors to the Suwayomi project
|
|
|
|
|
*
|
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import IconButton from '@mui/material/IconButton';
|
|
|
|
|
import { DraggableProvided } from 'react-beautiful-dnd';
|
|
|
|
|
import DragHandleIcon from '@mui/icons-material/DragHandle';
|
|
|
|
|
import EditIcon from '@mui/icons-material/Edit';
|
|
|
|
|
import DeleteIcon from '@mui/icons-material/Delete';
|
|
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
|
import Box from '@mui/material/Box';
|
|
|
|
|
import Card from '@mui/material/Card';
|
|
|
|
|
import CardContent from '@mui/material/CardContent';
|
|
|
|
|
import Stack from '@mui/material/Stack';
|
|
|
|
|
import Typography from '@mui/material/Typography';
|
2025-02-01 14:24:38 +01:00
|
|
|
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
2024-10-06 01:27:51 +02:00
|
|
|
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
2024-10-05 21:39:58 +02:00
|
|
|
import { CategoryType } from '@/lib/graphql/generated/graphql.ts';
|
|
|
|
|
|
|
|
|
|
export const CategorySettingsCard = ({
|
|
|
|
|
category,
|
|
|
|
|
provided,
|
|
|
|
|
onEdit,
|
|
|
|
|
}: {
|
|
|
|
|
category: Pick<CategoryType, 'id' | 'name'>;
|
|
|
|
|
provided: DraggableProvided;
|
|
|
|
|
onEdit: () => void;
|
|
|
|
|
}) => {
|
|
|
|
|
const { t } = useTranslation();
|
|
|
|
|
|
|
|
|
|
const deleteCategory = () => {
|
|
|
|
|
requestManager.deleteCategory(category.id);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Box sx={{ p: 1, pb: 0 }} {...provided.draggableProps} {...provided.dragHandleProps} ref={provided.innerRef}>
|
|
|
|
|
<Card>
|
|
|
|
|
<CardContent
|
|
|
|
|
sx={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
justifyContent: 'space-between',
|
|
|
|
|
alignItems: 'center',
|
|
|
|
|
padding: 1.5,
|
|
|
|
|
'&:last-child': {
|
|
|
|
|
paddingBottom: 1.5,
|
|
|
|
|
},
|
|
|
|
|
gap: 2,
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<DragHandleIcon />
|
|
|
|
|
<Typography sx={{ flexGrow: 1 }} variant="h6" component="h2">
|
|
|
|
|
{category.name}
|
|
|
|
|
</Typography>
|
|
|
|
|
<Stack sx={{ flexDirection: 'row' }}>
|
2025-02-01 14:24:38 +01:00
|
|
|
<CustomTooltip title={t('global.button.edit')}>
|
2024-10-05 21:39:58 +02:00
|
|
|
<IconButton component={Box} onClick={onEdit} size="large">
|
|
|
|
|
<EditIcon />
|
|
|
|
|
</IconButton>
|
2025-02-01 14:24:38 +01:00
|
|
|
</CustomTooltip>
|
|
|
|
|
<CustomTooltip title={t('chapter.action.download.delete.label.action')}>
|
2024-10-05 21:39:58 +02:00
|
|
|
<IconButton component={Box} onClick={deleteCategory} size="large">
|
|
|
|
|
<DeleteIcon />
|
|
|
|
|
</IconButton>
|
2025-02-01 14:24:38 +01:00
|
|
|
</CustomTooltip>
|
2024-10-05 21:39:58 +02:00
|
|
|
</Stack>
|
|
|
|
|
</CardContent>
|
|
|
|
|
</Card>
|
|
|
|
|
</Box>
|
|
|
|
|
);
|
|
|
|
|
};
|