diff --git a/VERSION b/VERSION index 7fcfe2d..8384713 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.11.3 +6.11.4 diff --git a/play-life-web/package.json b/play-life-web/package.json index 0e0f59a..74af37a 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "6.11.3", + "version": "6.11.4", "type": "module", "scripts": { "dev": "vite", diff --git a/play-life-web/src/App.jsx b/play-life-web/src/App.jsx index 8bbbc3e..a5878b0 100644 --- a/play-life-web/src/App.jsx +++ b/play-life-web/src/App.jsx @@ -35,8 +35,8 @@ const CURRENT_WEEK_API_URL = '/playlife-feed' const FULL_STATISTICS_API_URL = '/d2dc349a-0d13-49b2-a8f0-1ab094bfba9b' // Определяем основные табы (без крестика) и глубокие табы (с крестиком) -const mainTabs = ['current', 'tasks', 'wishlist', 'shopping', 'profile'] -const deepTabs = ['add-words', 'test', 'purchase', 'task-form', 'wishlist-form', 'wishlist-detail', 'board-form', 'board-join', 'words', 'dictionaries', 'todoist-integration', 'telegram-integration', 'fitbit-integration', 'full', 'priorities', 'tracking', 'tracking-access', 'tracking-invite', 'shopping-item-form', 'shopping-board-form', 'shopping-board-join', 'shopping-item-history'] +const mainTabs = ['current', 'tasks', 'wishlist', 'profile'] +const deepTabs = ['add-words', 'test', 'purchase', 'task-form', 'wishlist-form', 'wishlist-detail', 'board-form', 'board-join', 'words', 'dictionaries', 'todoist-integration', 'telegram-integration', 'fitbit-integration', 'full', 'priorities', 'tracking', 'tracking-access', 'tracking-invite', 'shopping', 'shopping-item-form', 'shopping-board-form', 'shopping-board-join', 'shopping-item-history'] /** * Гарантирует базовую запись истории для главного экрана перед глубоким табом. @@ -1109,7 +1109,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-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' // Функция для получения классов скролл-контейнера для каждого таба // Каждый таб имеет свой изолированный скролл-контейнер для автоматического сохранения позиции скролла @@ -1121,9 +1121,9 @@ function AppContent() { // Определяем padding для каждого таба let paddingClasses = '' - if (tabName === 'current' || tabName === 'tasks' || tabName === 'wishlist' || tabName === 'shopping' || tabName === 'profile') { + if (tabName === 'current' || tabName === 'tasks' || tabName === 'wishlist' || tabName === 'profile') { paddingClasses = 'pb-20' - } else if (tabName === 'words' || tabName === 'dictionaries') { + } else if (tabName === 'words' || tabName === 'dictionaries' || tabName === 'shopping') { paddingClasses = 'pb-16' } @@ -1132,13 +1132,13 @@ function AppContent() { // Функция для определения отступов внутреннего контейнера const getInnerContainerClasses = (tabName) => { - if (tabName === 'tasks' || tabName === 'wishlist' || tabName === 'shopping' || tabName === 'profile') { + if (tabName === 'tasks' || tabName === 'wishlist' || tabName === 'profile') { return 'max-w-7xl mx-auto p-4 md:p-8' } if (tabName === 'current') { return 'max-w-7xl mx-auto p-4 md:p-6' } - if (tabName === 'full' || tabName === 'priorities' || tabName === 'dictionaries' || tabName === 'words' || tabName === 'shopping-item-history' || tabName === 'purchase') { + if (tabName === 'full' || tabName === 'priorities' || tabName === 'dictionaries' || tabName === 'words' || tabName === 'shopping' || tabName === 'shopping-item-history' || tabName === 'purchase') { return 'max-w-7xl mx-auto px-4 md:px-8 py-0' } // Fullscreen табы без отступов @@ -1547,7 +1547,7 @@ function AppContent() { )} {/* Кнопка добавления товара (только для таба shopping) */} - {!isFullscreenTab && activeTab === 'shopping' && ( + {activeTab === 'shopping' && ( - + diff --git a/play-life-web/src/components/ShoppingList.css b/play-life-web/src/components/ShoppingList.css index d9d24d9..11821b5 100644 --- a/play-life-web/src/components/ShoppingList.css +++ b/play-life-web/src/components/ShoppingList.css @@ -4,6 +4,31 @@ padding-bottom: 2.5rem; } +.close-x-button { + position: fixed; + top: 1rem; + right: 1rem; + background: rgba(255, 255, 255, 0.9); + border: none; + font-size: 1.5rem; + color: #7f8c8d; + cursor: pointer; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s; + z-index: 1600; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} + +.close-x-button:hover { + background-color: #ffffff; + color: #2c3e50; +} + .shopping-empty { text-align: center; padding: 3rem 1rem; diff --git a/play-life-web/src/components/ShoppingList.jsx b/play-life-web/src/components/ShoppingList.jsx index 15479e7..41e77c3 100644 --- a/play-life-web/src/components/ShoppingList.jsx +++ b/play-life-web/src/components/ShoppingList.jsx @@ -531,6 +531,7 @@ function ShoppingList({ onNavigate, refreshTrigger = 0, isActive = false, initia return (