From 7adb13ac7c30a7ba33f1db256952be77b9e7a310 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Wed, 10 May 2023 10:55:40 +0200 Subject: [PATCH] Dialog: Fix IE tests about interactions with other dialogs The workaround triggering a second delayed focus to a tabbable element was applied in jQueries 3.4 & 3.5 to fix IE issues. It also needs to be applied in jQuery 3.6 which this commit adds. This will no longer be needed in jQuery 3.7 and jQuery 3.x-git tests are already passing because of that. Closes gh-2160 --- ui/widgets/dialog.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ui/widgets/dialog.js b/ui/widgets/dialog.js index 4dcb93a8d..0ff816ec6 100644 --- a/ui/widgets/dialog.js +++ b/ui/widgets/dialog.js @@ -881,12 +881,15 @@ $.widget( "ui.dialog", { 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 + // Support: jQuery >=3.4 <3.7 only + // In jQuery 3.4-3.6, there are multiple issues with focus/blur + // trigger chains or when triggering is done on a hidden element + // at least once. + // Trigger focus in a delay in addition if needed to avoid the issues. // See https://github.com/jquery/jquery/issues/4382 - if ( jqMinor === "3.4." || jqMinor === "3.5." ) { + // See https://github.com/jquery/jquery/issues/4856 + // See https://github.com/jquery/jquery/issues/4950 + if ( jqMinor === "3.4." || jqMinor === "3.5." || jqMinor === "3.6." ) { instance._delay( instance._restoreTabbableFocus ); } } -- 2.39.5