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 ? : } -