From d6b4bfdb2ce4584d165c5cd0782e275db30186f4 Mon Sep 17 00:00:00 2001 From: anibilag Date: Wed, 22 Oct 2025 18:56:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.1.5=20?= =?UTF-8?q?=D0=A1=D0=BA=D1=80=D0=BE=D0=BB=D0=BB=D0=B8=D0=BD=D0=B3=20=D0=B2?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=85=20=D0=B2=20=D1=81=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=D0=B5=20=D1=81=D1=82=D0=B0=D1=82=D0=B5=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B8=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/components/ArticleForm.tsx | 7 +++++++ src/components/ArticleList.tsx | 12 ++++++++++-- src/pages/AdminPage.tsx | 9 ++++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8cdcbe1..18e31bf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "vite-react-typescript-starter", "private": true, - "version": "1.1.4", + "version": "1.1.5", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/ArticleForm.tsx b/src/components/ArticleForm.tsx index 93d60ee..d24b9e8 100644 --- a/src/components/ArticleForm.tsx +++ b/src/components/ArticleForm.tsx @@ -54,6 +54,7 @@ interface ArticleFormProps { authors: Author[]; availableCategoryIds: number[]; availableCityIds: number[]; + onAfterSave?: () => void; // Новый пропс для колбэка после сохранения } export function ArticleForm({ @@ -66,6 +67,7 @@ export function ArticleForm({ authors, availableCategoryIds, availableCityIds, + onAfterSave, }: ArticleFormProps) { const { user } = useAuthStore(); const isAdmin = user?.permissions.isAdmin || false; @@ -278,6 +280,11 @@ export function ArticleForm({ try { setIsSubmitting(true); await onSubmit(articleData, closeForm); + + // Вызываем колбэк после успешного сохранения + if (closeForm && onAfterSave) { + onAfterSave(); + } } catch (error) { console.error('Ошибка при сохранении статьи:', error); setError('Не удалось сохранить статью. Пожалуйста, попробуйте снова.'); diff --git a/src/components/ArticleList.tsx b/src/components/ArticleList.tsx index d6fc4b2..e194d23 100644 --- a/src/components/ArticleList.tsx +++ b/src/components/ArticleList.tsx @@ -17,6 +17,7 @@ interface ArticleListProps { onShowGallery: (id: string) => void; onNewArticle: () => void; refreshTrigger: number; + scrollToTop?: () => void; // Добавляем новый пропс } const ARTICLES_PER_PAGE = 6; @@ -29,6 +30,7 @@ export const ArticleList = React.memo(function ArticleList({ onShowGallery, onNewArticle, refreshTrigger, + scrollToTop, }: ArticleListProps) { const { user } = useAuthStore(); const { availableCategoryIds, availableCityIds, isAdmin } = usePermissions(); @@ -144,6 +146,12 @@ export const ArticleList = React.memo(function ArticleList({ setSearchParams(newParams); }; + // Обработчик редактирования статьи + const handleEditClick = (articleId: string) => { + onEdit(articleId); + scrollToTop?.(); + }; + const hasNoPermissions = availableCategoryIds.length === 0 || availableCityIds.length === 0; return ( @@ -269,8 +277,8 @@ export const ArticleList = React.memo(function ArticleList({ > {article.isActive ? : } -