diff --git a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js index 14e388ca6ace298d1fa4cb17ffe0d4bc7131f358..1f4ed1d7feb523cffee35f245b7dab06da4f38fa 100644 --- a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js +++ b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js @@ -7,23 +7,12 @@ */ (($) => { - // Get core version of the _focusTabbable method. - const oldFocusTabbable = $.ui.dialog._proto._focusTabbable; - $.widget('ui.dialog', $.ui.dialog, { - // Override core override of jQuery UI's `_focusTabbable()` so that + // Override core override of jQuery UI's `_allowInteraction()` so that // CKEditor 5 in modals can work as expected. - _focusTabbable() { - // When the focused element is a CKEditor 5 instance, disable jQuery UI - // focus trap and delegate focus trap to CKEditor 5. - const hasFocus = this._focusedElement - ? this._focusedElement.get(0) - : null; - // In case the element is a CKEditor 5 instance, do not change focus - // management. - if (!(hasFocus && hasFocus.ckeditorInstance)) { - oldFocusTabbable.call(this); - } + // @see https://api.jqueryui.com/dialog/#method-_allowInteraction + _allowInteraction(event) { + return event.target.classList.contains('ck') || this._super(event); }, }); })(jQuery); diff --git a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js index 355e776e755b563d202b2dde30429f38b7f1fcfa..e0b9531cab53aefbf5ed7443a3161d64a23cbcbb 100644 --- a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js +++ b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js @@ -6,14 +6,9 @@ **/ ($ => { - const oldFocusTabbable = $.ui.dialog._proto._focusTabbable; $.widget('ui.dialog', $.ui.dialog, { - _focusTabbable() { - const hasFocus = this._focusedElement ? this._focusedElement.get(0) : null; - - if (!(hasFocus && hasFocus.ckeditorInstance)) { - oldFocusTabbable.call(this); - } + _allowInteraction(event) { + return event.target.classList.contains('ck') || this._super(event); } }); diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php index 1758b4014092d359fda11ab3c7e3e2e2dba68953..9f2f97536ae69bd8ea9f3c217642dbf125815019 100644 --- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php @@ -71,10 +71,6 @@ function (ConstraintViolation $v) { // Then press the button to add a link. $this->pressEditorButton('Link'); - // @todo Un-skip this test when - // https://www.drupal.org/project/drupal/issues/3301631 is resolved. - $this->markTestSkipped('Test skipped due to regression in CKEditor 35.0.0.'); - $link_url = '/ckeditor5_test/dialog'; $input = $assert_session->waitForElementVisible('css', '.ck-balloon-panel input.ck-input-text'); // Make sure the input field can have focus and we can type into it.