--- a/wp/wp-includes/js/jquery/ui/dialog.js Wed Sep 21 18:19:35 2022 +0200
+++ b/wp/wp-includes/js/jquery/ui/dialog.js Tue Sep 27 16:37:53 2022 +0200
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Dialog 1.12.1
+ * jQuery UI Dialog 1.13.1
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -17,6 +17,8 @@
//>>css.theme: ../../themes/base/theme.css
( function( factory ) {
+ "use strict";
+
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
@@ -33,10 +35,11 @@
// Browser globals
factory( jQuery );
}
-}( function( $ ) {
+} )( function( $ ) {
+"use strict";
$.widget( "ui.dialog", {
- version: "1.12.1",
+ version: "1.13.1",
options: {
appendTo: "body",
autoOpen: true,
@@ -281,7 +284,7 @@
that._trigger( "focus" );
} );
- // Track the dialog immediately upon openening in case a focus event
+ // Track the dialog immediately upon opening in case a focus event
// somehow occurs outside of the dialog before an element inside the
// dialog is focused (#10152)
this._makeFocusTarget();
@@ -317,22 +320,23 @@
hasFocus.eq( 0 ).trigger( "focus" );
},
+ _restoreTabbableFocus: function() {
+ var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
+ isActive = this.uiDialog[ 0 ] === activeElement ||
+ $.contains( this.uiDialog[ 0 ], activeElement );
+ if ( !isActive ) {
+ this._focusTabbable();
+ }
+ },
+
_keepFocus: function( event ) {
- function checkFocus() {
- var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
- isActive = this.uiDialog[ 0 ] === activeElement ||
- $.contains( this.uiDialog[ 0 ], activeElement );
- if ( !isActive ) {
- this._focusTabbable();
- }
- }
event.preventDefault();
- checkFocus.call( this );
+ this._restoreTabbableFocus();
// support: IE
// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
// so we check again later
- this._delay( checkFocus );
+ this._delay( this._restoreTabbableFocus );
},
_createWrapper: function() {
@@ -350,7 +354,7 @@
this._on( this.uiDialog, {
keydown: function( event ) {
if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
- event.keyCode === $.ui.keyCode.ESCAPE ) {
+ event.keyCode === $.ui.keyCode.ESCAPE ) {
event.preventDefault();
this.close( event );
return;
@@ -361,17 +365,17 @@
return;
}
var tabbables = this.uiDialog.find( ":tabbable" ),
- first = tabbables.filter( ":first" ),
- last = tabbables.filter( ":last" );
+ first = tabbables.first(),
+ last = tabbables.last();
if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
- !event.shiftKey ) {
+ !event.shiftKey ) {
this._delay( function() {
first.trigger( "focus" );
} );
event.preventDefault();
} else if ( ( event.target === first[ 0 ] ||
- event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
+ event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
this._delay( function() {
last.trigger( "focus" );
} );
@@ -473,14 +477,14 @@
this.uiDialogButtonPane.remove();
this.uiButtonSet.empty();
- if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
+ if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
this._removeClass( this.uiDialog, "ui-dialog-buttons" );
return;
}
$.each( buttons, function( name, props ) {
var click, buttonOptions;
- props = $.isFunction( props ) ?
+ props = typeof props === "function" ?
{ click: props, text: name } :
props;
@@ -845,6 +849,8 @@
return;
}
+ var jqMinor = $.fn.jquery.substring( 0, 4 );
+
// We use a delay in case the overlay is created from an
// event that we're going to be cancelling (#2804)
var isOpening = true;
@@ -855,20 +861,28 @@
if ( !this.document.data( "ui-dialog-overlays" ) ) {
// Prevent use of anchors and inputs
- // Using _on() for an event handler shared across many instances is
- // safe because the dialogs stack and must be closed in reverse order
- this._on( this.document, {
- focusin: function( event ) {
- if ( isOpening ) {
- return;
- }
+ // This doesn't use `_on()` because it is a shared event handler
+ // across all open modal dialogs.
+ this.document.on( "focusin.ui-dialog", function( event ) {
+ if ( isOpening ) {
+ return;
+ }
- if ( !this._allowInteraction( event ) ) {
- event.preventDefault();
- this._trackingInstances()[ 0 ]._focusTabbable();
+ var instance = this._trackingInstances()[ 0 ];
+ if ( !instance._allowInteraction( event ) ) {
+ event.preventDefault();
+ instance._focusTabbable();
+
+ // Support: jQuery >=3.4 <3.6 only
+ // Focus re-triggering in jQuery 3.4/3.5 makes the original element
+ // have its focus event propagated last, breaking the re-targeting.
+ // Trigger focus in a delay in addition if needed to avoid the issue
+ // See https://github.com/jquery/jquery/issues/4382
+ if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
+ instance._delay( instance._restoreTabbableFocus );
}
}
- } );
+ }.bind( this ) );
}
this.overlay = $( "<div>" )
@@ -891,7 +905,7 @@
var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
if ( !overlays ) {
- this._off( this.document, "focusin" );
+ this.document.off( "focusin.ui-dialog" );
this.document.removeData( "ui-dialog-overlays" );
} else {
this.document.data( "ui-dialog-overlays", overlays );
@@ -929,4 +943,4 @@
return $.ui.dialog;
-} ) );
+} );