@@ -4,6 +4,9 @@ import { sendFormData } from './api.js';
44let currentSuccessElement = null ;
55let currentErrorElement = null ;
66
7+ // Флаг: открыта ли сейчас ошибка (ключевое дополнение)
8+ let isErrorShown = false ;
9+
710// Простые функции удаления (не вызывают обработчики)
811const removeSuccessMessage = ( ) => {
912 if ( currentSuccessElement && currentSuccessElement . parentNode ) {
@@ -16,10 +19,11 @@ const removeErrorMessage = () => {
1619 if ( currentErrorElement && currentErrorElement . parentNode ) {
1720 currentErrorElement . parentNode . removeChild ( currentErrorElement ) ;
1821 currentErrorElement = null ;
22+ isErrorShown = false ; // Сбрасываем флаг при закрытии ошибки
1923 }
2024} ;
2125
22- // Обработчики событий (используют уже объявленные функции удаления)
26+ // Обработчики событий
2327const onSuccessKeydown = ( evt ) => {
2428 if ( isEscapeKey ( evt ) ) {
2529 evt . preventDefault ( ) ;
@@ -34,9 +38,10 @@ const onSuccessClickOutside = (evt) => {
3438} ;
3539
3640const onErrorKeydown = ( evt ) => {
37- if ( isEscapeKey ( evt ) ) {
41+ if ( isEscapeKey ( evt ) && isErrorShown ) {
3842 evt . preventDefault ( ) ;
3943 removeErrorMessage ( ) ;
44+ removeErrorEventListeners ( ) ;
4045 }
4146} ;
4247
@@ -67,7 +72,7 @@ const removeErrorEventListeners = () => {
6772 document . removeEventListener ( 'click' , onErrorClickOutside ) ;
6873} ;
6974
70- // Функции показа сообщений (используют всё выше объявленное)
75+ // Функции показа сообщений
7176const showSuccessMessage = ( ) => {
7277 const successTemplate = document . querySelector ( '#success' ) ;
7378 if ( ! successTemplate ) {
@@ -123,10 +128,11 @@ const showErrorMessage = (errorMessage) => {
123128 } ) ;
124129 }
125130
131+ isErrorShown = true ; // Устанавливаем флаг — ошибка открыта
126132 addErrorEventListeners ( ) ;
127133} ;
128134
129- //Настраивает все обработчики событий для формы загрузки
135+ // Настраивает все обработчики событий для формы загрузки
130136const setupEventHandlers = (
131137 fileInput ,
132138 cancelButton ,
@@ -175,6 +181,14 @@ const setupEventHandlers = (
175181 // Обработчик закрытия по Esc (вне формы редактирования)
176182 document . addEventListener ( 'keydown' , ( evt ) => {
177183 if ( isEscapeKey ( evt ) && overlay && ! overlay . classList . contains ( 'hidden' ) ) {
184+ // 1. Если ошибка открыта — закрываем только ошибку (приоритет)
185+ if ( isErrorShown ) {
186+ evt . preventDefault ( ) ;
187+ removeErrorMessage ( ) ;
188+ return ; // Прерываем выполнение, чтобы не закрывать форму
189+ }
190+
191+ // 2. Если ошибки нет — закрываем форму
178192 const isInInput = document . activeElement === hashtagsInput || document . activeElement === descriptionInput ;
179193 if ( ! isInInput ) {
180194 evt . preventDefault ( ) ;
@@ -193,4 +207,4 @@ const setupEventHandlers = (
193207 }
194208} ;
195209
196- export { setupEventHandlers , showSuccessMessage , showErrorMessage } ;
210+ export { setupEventHandlers , showSuccessMessage , showErrorMessage } ;
0 commit comments