feat: delete select article and disable double click row selection

This commit is contained in:
2026-04-26 03:21:03 +03:00
parent 7f8b90c15e
commit 248eea6f85
13 changed files with 15 additions and 133 deletions

View File

@@ -3,8 +3,6 @@ import {
Button,
Paper,
Typography,
Menu,
MenuItem,
TextField,
} from "@mui/material";
import {
@@ -12,7 +10,6 @@ import {
createSightStore,
editSightStore,
languageStore,
SelectArticleModal,
TabPanel,
SelectMediaDialog,
UploadMediaDialog,
@@ -43,7 +40,6 @@ type MediaItemShared = {
export const CreateRightTab = observer(
({ value, index }: { value: number; index: number }) => {
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
const {
sight,
createNewRightArticle,
@@ -54,7 +50,6 @@ export const CreateRightTab = observer(
deleteRightArticleMedia,
unlinkRightAritcle,
deleteRightArticle,
linkExistingRightArticle,
createSight,
clearCreateSight,
updateRightArticles,
@@ -63,8 +58,6 @@ export const CreateRightTab = observer(
const { setFileToUpload, setUploadMediaOpen, uploadMediaOpen } =
editSightStore;
const [selectArticleDialogOpen, setSelectArticleDialogOpen] =
useState(false);
const [activeArticleIndex, setActiveArticleIndex] = useState<number | null>(
null
);
@@ -100,14 +93,6 @@ export const CreateRightTab = observer(
}
}, [language, sight[language].right, activeArticleIndex]);
const openMenu = Boolean(anchorEl);
const handleClickMenu = (event: React.MouseEvent<HTMLButtonElement>) => {
setAnchorEl(event.currentTarget);
};
const handleCloseMenu = () => {
setAnchorEl(null);
};
const handleSave = async () => {
try {
await createSight(language);
@@ -127,7 +112,6 @@ export const CreateRightTab = observer(
};
const handleCreateNewLocalArticle = async () => {
handleCloseMenu();
try {
const newArticleId = await createNewRightArticle();
@@ -146,26 +130,6 @@ export const CreateRightTab = observer(
}
};
const handleSelectExistingArticleAndLink = async (
selectedArticleId: number
) => {
try {
const linkedArticleId = await linkExistingRightArticle(
selectedArticleId
);
setSelectArticleDialogOpen(false);
const newIndex = sight[language].right.findIndex(
(a) => a.id === linkedArticleId
);
if (newIndex > -1) {
setActiveArticleIndex(newIndex);
setType("article");
}
} catch (error) {
toast.error("Не удалось привязать существующую статью.");
}
};
const currentRightArticle =
activeArticleIndex !== null && sight[language].right[activeArticleIndex]
? sight[language].right[activeArticleIndex]
@@ -317,33 +281,10 @@ export const CreateRightTab = observer(
</Box>
<button
className="w-10 h-10 bg-blue-500 rounded-full absolute bottom-5 left-5 flex items-center justify-center hover:bg-blue-600"
onClick={handleClickMenu}
aria-controls={openMenu ? "add-article-menu" : undefined}
aria-haspopup="true"
aria-expanded={openMenu ? "true" : undefined}
onClick={handleCreateNewLocalArticle}
>
<Plus size={20} color="white" />
</button>
<Menu
id="add-article-menu"
anchorEl={anchorEl}
open={openMenu}
onClose={handleCloseMenu}
MenuListProps={{ "aria-labelledby": "basic-button" }}
sx={{ mt: 1 }}
>
<MenuItem onClick={handleCreateNewLocalArticle}>
<Typography>Создать новую</Typography>
</MenuItem>
<MenuItem
onClick={() => {
setSelectArticleDialogOpen(true);
handleCloseMenu();
}}
>
<Typography>Выбрать существующую статью</Typography>
</MenuItem>
</Menu>
</Box>
{type === "article" && currentRightArticle ? (
@@ -501,7 +442,7 @@ export const CreateRightTab = observer(
</Box>
<Box className="w-[25%] mr-10">
{type === "article" && activeArticleIndex !== null && (
{type === "article" && activeArticleIndex !== null && sight[language].right[activeArticleIndex] && (
<Paper
className="flex-1 flex flex-col max-w-[500px]"
sx={{
@@ -680,12 +621,6 @@ export const CreateRightTab = observer(
</Box>
</Box>
<SelectArticleModal
open={selectArticleDialogOpen}
onClose={() => setSelectArticleDialogOpen(false)}
onSelectArticle={handleSelectExistingArticleAndLink}
linkedArticleIds={sight[language].right.map((article) => article.id)}
/>
<UploadMediaDialog
open={uploadMediaOpen}
onClose={() => {
@@ -716,6 +651,7 @@ export const CreateRightTab = observer(
onDelete={async () => {
try {
await deleteRightArticle(currentRightArticle?.id || 0);
setIsDeleteModalOpen(false);
setActiveArticleIndex(null);
setType("media");
toast.success("Статья удалена");