diff --git a/core/misc/ajax.js b/core/misc/ajax.js index 9f15b2fad4d49d7459ac6b25ba1c2095f51cac74..bb8b46576b2cc227788a4f1dd3400b153787c6a3 100644 --- a/core/misc/ajax.js +++ b/core/misc/ajax.js @@ -1085,7 +1085,9 @@ const focusChanged = Object.keys(response || {}).some((key) => { const { command, method } = response[key]; return ( - command === 'focusFirst' || (command === 'invoke' && method === 'focus') + command === 'focusFirst' || + command === 'openDialog' || + (command === 'invoke' && method === 'focus') ); }); diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php index 5777d6c2fb83b57215f5cf8086c7ce2fe2cb6009..c3337ff51c63f4552dce92d237c87216ec6289f0 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php @@ -75,6 +75,9 @@ public function testUserFieldBlock() { $this->clickLink('Place block'); $assert_session->assertWaitOnAjaxRequest(); + // Ensure that focus is on the first focusable element on modal. + $this->assertJsCondition('document.activeElement === document.getElementsByClassName("block-filter-text")[0]'); + // Ensure that fields without any formatters are not available. $assert_session->pageTextNotContains('Password'); // Ensure that non-display-configurable fields are not available. diff --git a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php index 260e76d478a9f430be4995ad61086ae786a248b1..6ba3510eb75b1f4424a8e2a992e38905f43fed79 100644 --- a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php @@ -527,9 +527,6 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen 'type' => 'throbber', 'message' => $this->t('Opening media library.'), ], - // The AJAX system automatically moves focus to the first tabbable - // element of the modal, so we need to disable refocus on the button. - 'disable-refocus' => TRUE, ], // Allow the media library to be opened even if there are form errors. '#limit_validation_errors' => [], diff --git a/core/modules/media_library/src/Plugin/views/field/MediaLibrarySelectForm.php b/core/modules/media_library/src/Plugin/views/field/MediaLibrarySelectForm.php index 4f5875e1ddf792211e12302e97e49359f3ef5b2e..9e179eef8fab557de27ff8b250371cea845bdce2 100644 --- a/core/modules/media_library/src/Plugin/views/field/MediaLibrarySelectForm.php +++ b/core/modules/media_library/src/Plugin/views/field/MediaLibrarySelectForm.php @@ -104,9 +104,6 @@ public function viewsForm(array &$form, FormStateInterface $form_state) { 'query' => $query, ], 'callback' => [static::class, 'updateWidget'], - // The AJAX system automatically moves focus to the first tabbable - // element of the modal, so we need to disable refocus on the button. - 'disable-refocus' => TRUE, ]; $form['actions']['submit']['#value'] = $this->t('Insert selected');