@@ -23,6 +23,8 @@ const elements = {
2323 refreshBtn : document . getElementById ( 'refresh-btn' ) ,
2424 taskModal : document . getElementById ( 'task-modal' ) ,
2525 detailModal : document . getElementById ( 'detail-modal' ) ,
26+ taskModalContent : document . querySelector ( '#task-modal .modal-content' ) ,
27+ detailModalContent : document . querySelector ( '#detail-modal .modal-content' ) ,
2628 closeModal : document . getElementById ( 'close-modal' ) ,
2729 closeDetailModal : document . getElementById ( 'close-detail-modal' ) ,
2830 taskForm : document . getElementById ( 'task-form' ) ,
@@ -109,11 +111,21 @@ function setupEventListeners() {
109111 } ) ;
110112
111113 // Close modals when clicking outside
112- window . addEventListener ( 'click' , ( event ) => {
113- if ( event . target === elements . taskModal ) {
114- elements . taskModal . style . display = 'none' ;
114+ let mousePressedOutside = false ;
115+
116+ window . addEventListener ( 'mousedown' , ( event ) => {
117+ // Check if mouse was pressed outside both modal contents
118+ if ( ! elements . taskModalContent . contains ( event . target ) && ! elements . detailModalContent . contains ( event . target ) ) {
119+ mousePressedOutside = true ;
120+ } else {
121+ mousePressedOutside = false ;
115122 }
116- if ( event . target === elements . detailModal ) {
123+ } ) ;
124+
125+ window . addEventListener ( 'mouseup' , ( event ) => {
126+ // Only close if mouse was pressed outside and released outside
127+ if ( mousePressedOutside && ! elements . taskModalContent . contains ( event . target ) && ! elements . detailModalContent . contains ( event . target ) ) {
128+ elements . taskModal . style . display = 'none' ;
117129 elements . detailModal . style . display = 'none' ;
118130 }
119131 } ) ;
0 commit comments