From c43122dfbafb616fb914af949251fb7384667029 Mon Sep 17 00:00:00 2001 From: kazachilo Date: Fri, 21 Mar 2025 13:42:08 +0300 Subject: [PATCH] Hide gallery button in feedback notification --- .../shared/FeedbackModal.module.css | 32 +++++++++++++++++ src/components/shared/FeedbackModal.tsx | 36 +++++++++++++++---- src/components/shared/NotificationModal.tsx | 20 ++++++----- src/screens/Home.tsx | 9 +++++ 4 files changed, 83 insertions(+), 14 deletions(-) diff --git a/src/components/shared/FeedbackModal.module.css b/src/components/shared/FeedbackModal.module.css index ba454ed..5305248 100644 --- a/src/components/shared/FeedbackModal.module.css +++ b/src/components/shared/FeedbackModal.module.css @@ -111,4 +111,36 @@ margin: 0 var(--spacing-large); max-width: 90vw; } + + /* Улучшения для работы с файлами на iOS */ + .fileInput { + -webkit-appearance: none; + font-size: 16px; /* Предотвращает масштабирование на iOS */ + } + + .addImageButton { + padding: 12px 16px; /* Увеличенная область нажатия для мобильных устройств */ + font-size: 16px; + } + + .imagePreview { + width: 70px; /* Немного меньше для мобильных устройств */ + height: 70px; + } + + .removeImageButton { + width: 24px; /* Увеличенная область нажатия для кнопки удаления */ + height: 24px; + } +} + +/* Медиа-запрос для мобильных устройств */ +@media (max-width: 480px) { + .imagePreviewContainer { + gap: 8px; + } + + .textarea { + min-height: 80px; + } } diff --git a/src/components/shared/FeedbackModal.tsx b/src/components/shared/FeedbackModal.tsx index bdd3ffd..5fe525c 100644 --- a/src/components/shared/FeedbackModal.tsx +++ b/src/components/shared/FeedbackModal.tsx @@ -45,14 +45,39 @@ const FeedbackModal: React.FC = ({ isVisible, onClose, onSub } }; + // Функция для обработки выбранного файла + const handleFileSelect = (file: File) => { + console.log('Обработка выбранного файла:', file.name, file.type); + + // Проверяем, что это изображение + if (file && file.type.startsWith('image/')) { + console.log('Файл является изображением, добавляем в список'); + + // Добавляем файл в список изображений + setImages(prevImages => [...prevImages, file]); + } else { + console.error('Выбранный файл не является изображением'); + setError('Пожалуйста, выберите файл изображения (JPEG, PNG и т.д.)'); + } + }; + // Обработчик добавления изображений const handleFileChange = (e: React.ChangeEvent) => { - if (e.target.files && e.target.files.length > 0) { - const newFiles = Array.from(e.target.files); - setImages(prevImages => [...prevImages, ...newFiles]); + console.log('Событие выбора файла сработало'); + + try { + const file = e.target.files?.[0]; + console.log('Выбранный файл:', file ? `${file.name} (${file.type})` : 'нет файла'); - // Сбрасываем значение input, чтобы можно было выбрать тот же файл повторно - e.target.value = ''; + if (file) { + handleFileSelect(file); + + // Сбрасываем значение input, чтобы можно было выбрать тот же файл повторно + e.target.value = ''; + } + } catch (err) { + console.error('Ошибка при обработке выбранного файла:', err); + setError('Произошла ошибка при выборе файла. Пожалуйста, попробуйте еще раз.'); } }; @@ -132,7 +157,6 @@ const FeedbackModal: React.FC = ({ isVisible, onClose, onSub accept="image/*" onChange={handleFileChange} className={feedbackStyles.fileInput} - multiple disabled={isLoading} /> diff --git a/src/components/shared/NotificationModal.tsx b/src/components/shared/NotificationModal.tsx index feca8f5..e184539 100644 --- a/src/components/shared/NotificationModal.tsx +++ b/src/components/shared/NotificationModal.tsx @@ -9,6 +9,7 @@ interface NotificationModalProps { promptText?: string; onGalleryClick: () => void; onContinueClick: () => void; + showGalleryButton?: boolean; // Новый параметр для управления видимостью кнопки "В галерею" } const NotificationModal: React.FC = ({ @@ -18,7 +19,8 @@ const NotificationModal: React.FC = ({ isLoading = false, promptText, onGalleryClick, - onContinueClick + onContinueClick, + showGalleryButton = true // По умолчанию кнопка видима }) => { if (!isVisible) return null; @@ -41,14 +43,16 @@ const NotificationModal: React.FC = ({ )}
+ {showGalleryButton && ( + + )} -