@@ -43,7 +43,7 @@ function tryRemoveElement(elem) {
43
43
}
44
44
}
45
45
46
- function DialogHashHandler ( dlg , hash , resolve , dlgOptions ) {
46
+ function DialogHashHandler ( dlg , hash , resolve ) {
47
47
const self = this ;
48
48
self . originalUrl = window . location . href ;
49
49
const activeElement = document . activeElement ;
@@ -158,7 +158,7 @@ function DialogHashHandler(dlg, hash, resolve, dlgOptions) {
158
158
159
159
dlg . classList . remove ( 'hide' ) ;
160
160
161
- addBackdropOverlay ( dlg , dlgOptions ) ;
161
+ addBackdropOverlay ( dlg ) ;
162
162
163
163
dlg . classList . add ( 'opened' ) ;
164
164
dlg . dispatchEvent ( new CustomEvent ( 'open' , {
@@ -193,7 +193,7 @@ function DialogHashHandler(dlg, hash, resolve, dlgOptions) {
193
193
}
194
194
}
195
195
196
- function addBackdropOverlay ( dlg , dlgOptions = { } ) {
196
+ function addBackdropOverlay ( dlg ) {
197
197
const backdrop = document . createElement ( 'div' ) ;
198
198
backdrop . classList . add ( 'dialogBackdrop' ) ;
199
199
@@ -205,33 +205,35 @@ function addBackdropOverlay(dlg, dlgOptions = {}) {
205
205
void backdrop . offsetWidth ;
206
206
backdrop . classList . add ( 'dialogBackdropOpened' ) ;
207
207
208
- if ( ! dlgOptions . preventCloseOnClick ) {
209
- dom . addEventListener ( ( dlg . dialogContainer || backdrop ) , 'click' , e => {
210
- if ( e . target === dlg . dialogContainer ) {
211
- close ( dlg ) ;
212
- }
213
- } , {
214
- passive : true
215
- } ) ;
216
- }
208
+ let clickedElement ;
217
209
218
- if ( ! dlgOptions . preventCloseOnRightClick ) {
219
- dom . addEventListener ( ( dlg . dialogContainer || backdrop ) , 'contextmenu' , e => {
220
- if ( e . target === dlg . dialogContainer ) {
221
- // Close the application dialog menu
222
- close ( dlg ) ;
223
- // Prevent the default browser context menu from appearing
224
- e . preventDefault ( ) ;
225
- }
226
- } ) ;
227
- }
210
+ dom . addEventListener ( ( dlg . dialogContainer || backdrop ) , 'mousedown' , e => {
211
+ clickedElement = e . target ;
212
+ } ) ;
213
+
214
+ dom . addEventListener ( ( dlg . dialogContainer || backdrop ) , 'click' , e => {
215
+ if ( e . target === dlg . dialogContainer && e . target == clickedElement ) {
216
+ close ( dlg ) ;
217
+ }
218
+ } , {
219
+ passive : true
220
+ } ) ;
221
+
222
+ dom . addEventListener ( ( dlg . dialogContainer || backdrop ) , 'contextmenu' , e => {
223
+ if ( e . target === dlg . dialogContainer ) {
224
+ // Close the application dialog menu
225
+ close ( dlg ) ;
226
+ // Prevent the default browser context menu from appearing
227
+ e . preventDefault ( ) ;
228
+ }
229
+ } ) ;
228
230
}
229
231
230
232
function isHistoryEnabled ( dlg ) {
231
233
return dlg . getAttribute ( 'data-history' ) === 'true' ;
232
234
}
233
235
234
- export function open ( dlg , dlgOptions ) {
236
+ export function open ( dlg ) {
235
237
if ( globalOnOpenCallback ) {
236
238
globalOnOpenCallback ( dlg ) ;
237
239
}
@@ -248,7 +250,7 @@ export function open(dlg, dlgOptions) {
248
250
document . body . appendChild ( dialogContainer ) ;
249
251
250
252
return new Promise ( ( resolve ) => {
251
- new DialogHashHandler ( dlg , `dlg${ new Date ( ) . getTime ( ) } ` , resolve , dlgOptions ) ;
253
+ new DialogHashHandler ( dlg , `dlg${ new Date ( ) . getTime ( ) } ` , resolve ) ;
252
254
} ) ;
253
255
}
254
256
0 commit comments