From 3a06d9148c1740717044fce9f39c36cf881864a7 Mon Sep 17 00:00:00 2001 From: poignatov Date: Wed, 18 Mar 2026 16:59:18 +0300 Subject: [PATCH] =?UTF-8?q?6.19.8:=20=D0=9A=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B4=D0=BE=D1=81=D0=BE=D0=BA=20=D0=B2=D0=BD=D0=B8=D0=B7?= =?UTF-8?q?=D1=83=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION | 2 +- play-life-web/package.json | 2 +- play-life-web/src/App.jsx | 4 +- play-life-web/src/components/BoardForm.jsx | 66 +++++++++++++----- .../src/components/ShoppingBoardForm.jsx | 68 +++++++++++++------ 5 files changed, 102 insertions(+), 40 deletions(-) diff --git a/VERSION b/VERSION index 59af327..0b0afee 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.19.7 +6.19.8 diff --git a/play-life-web/package.json b/play-life-web/package.json index 0f32759..36cfdec 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "6.19.7", + "version": "6.19.8", "type": "module", "scripts": { "dev": "vite", diff --git a/play-life-web/src/App.jsx b/play-life-web/src/App.jsx index f5416b4..fface49 100644 --- a/play-life-web/src/App.jsx +++ b/play-life-web/src/App.jsx @@ -1166,7 +1166,7 @@ function AppContent() { } // Определяем, нужно ли скрывать нижнюю панель (для fullscreen экранов) - const isFullscreenTab = activeTab === 'test' || activeTab === 'purchase' || activeTab === 'add-words' || activeTab === 'task-form' || activeTab === 'wishlist-form' || activeTab === 'wishlist-detail' || activeTab === 'todoist-integration' || activeTab === 'telegram-integration' || activeTab === 'fitbit-integration' || activeTab === 'full' || activeTab === 'priorities' || activeTab === 'words' || activeTab === 'dictionaries' || activeTab === 'tracking' || activeTab === 'tracking-access' || activeTab === 'tracking-invite' || activeTab === 'shopping' || activeTab === 'shopping-item-form' || activeTab === 'shopping-board-form' || activeTab === 'shopping-board-join' || activeTab === 'shopping-item-history' + const isFullscreenTab = activeTab === 'test' || activeTab === 'purchase' || activeTab === 'add-words' || activeTab === 'task-form' || activeTab === 'wishlist-form' || activeTab === 'wishlist-detail' || activeTab === 'todoist-integration' || activeTab === 'telegram-integration' || activeTab === 'fitbit-integration' || activeTab === 'full' || activeTab === 'priorities' || activeTab === 'words' || activeTab === 'dictionaries' || activeTab === 'tracking' || activeTab === 'tracking-access' || activeTab === 'tracking-invite' || activeTab === 'shopping' || activeTab === 'shopping-item-form' || activeTab === 'shopping-board-form' || activeTab === 'shopping-board-join' || activeTab === 'shopping-item-history' || activeTab === 'board-form' // Функция для получения классов скролл-контейнера для каждого таба // Каждый таб имеет свой изолированный скролл-контейнер для автоматического сохранения позиции скролла @@ -1418,6 +1418,7 @@ function AppContent() { onNavigate={handleNavigate} boardId={tabParams.boardId} onSaved={() => setWishlistRefreshTrigger(prev => prev + 1)} + isActive={activeTab === 'board-form'} /> @@ -1473,6 +1474,7 @@ function AppContent() { onNavigate={handleNavigate} boardId={tabParams.boardId} onSaved={() => setShoppingRefreshTrigger(prev => prev + 1)} + isActive={activeTab === 'shopping-board-form'} /> diff --git a/play-life-web/src/components/BoardForm.jsx b/play-life-web/src/components/BoardForm.jsx index 7823648..24f9671 100644 --- a/play-life-web/src/components/BoardForm.jsx +++ b/play-life-web/src/components/BoardForm.jsx @@ -1,13 +1,13 @@ import React, { useState, useEffect } from 'react' +import { createPortal } from 'react-dom' import { useAuth } from './auth/AuthContext' import BoardMembers from './BoardMembers' import Toast from './Toast' -import SubmitButton from './SubmitButton' import DeleteButton from './DeleteButton' import './Buttons.css' import './BoardForm.css' -function BoardForm({ boardId, onNavigate, onSaved }) { +function BoardForm({ boardId, onNavigate, onSaved, isActive }) { const { authFetch } = useAuth() const [name, setName] = useState('') const [inviteEnabled, setInviteEnabled] = useState(false) @@ -252,14 +252,51 @@ function BoardForm({ boardId, onNavigate, onSaved }) { )} -
- + + {toastMessage && ( + setToastMessage(null)} + /> + )} + + {isActive ? createPortal( +
+ {isEdit && ( )} -
-
- - {toastMessage && ( - setToastMessage(null)} - /> - )} + , + document.body + ) : null} ) } diff --git a/play-life-web/src/components/ShoppingBoardForm.jsx b/play-life-web/src/components/ShoppingBoardForm.jsx index 5c098ff..0accb01 100644 --- a/play-life-web/src/components/ShoppingBoardForm.jsx +++ b/play-life-web/src/components/ShoppingBoardForm.jsx @@ -1,13 +1,13 @@ import React, { useState, useEffect } from 'react' +import { createPortal } from 'react-dom' import { useAuth } from './auth/AuthContext' import BoardMembers from './BoardMembers' import Toast from './Toast' -import SubmitButton from './SubmitButton' import DeleteButton from './DeleteButton' import './Buttons.css' import './BoardForm.css' -function ShoppingBoardForm({ boardId, onNavigate, onSaved }) { +function ShoppingBoardForm({ boardId, onNavigate, onSaved, isActive }) { const { authFetch } = useAuth() const [name, setName] = useState('') const [inviteEnabled, setInviteEnabled] = useState(false) @@ -245,23 +245,6 @@ function ShoppingBoardForm({ boardId, onNavigate, onSaved }) { )} -
- - Сохранить - - {isEdit && ( - - )} -
{toastMessage && ( @@ -271,6 +254,53 @@ function ShoppingBoardForm({ boardId, onNavigate, onSaved }) { onClose={() => setToastMessage(null)} /> )} + + {isActive ? createPortal( +
+ + {isEdit && ( + + )} +
, + document.body + ) : null} ) }