diff --git a/core/misc/ajax.es6.js b/core/misc/ajax.es6.js index fefe9f3031..de7904750a 100644 --- a/core/misc/ajax.es6.js +++ b/core/misc/ajax.es6.js @@ -635,7 +635,7 @@ element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number')) { event.preventDefault(); event.stopPropagation(); - $(ajax.element_settings.element).trigger(ajax.element_settings.event); + $(element).trigger(ajax.element_settings.event); } }; diff --git a/core/misc/ajax.js b/core/misc/ajax.js index 6b15204a26..836bcf593a 100644 --- a/core/misc/ajax.js +++ b/core/misc/ajax.js @@ -291,7 +291,7 @@ if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') { event.preventDefault(); event.stopPropagation(); - $(ajax.element_settings.element).trigger(ajax.element_settings.event); + $(element).trigger(ajax.element_settings.event); } }; diff --git a/core/modules/field_ui/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php b/core/modules/field_ui/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php new file mode 100644 index 0000000000..3b6d9cac7a --- /dev/null +++ b/core/modules/field_ui/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php @@ -0,0 +1,73 @@ +drupalCreateUser([ + 'administer user display', + ]); + $this->drupalLogin($admin_user); + + FieldStorageConfig::create([ + 'entity_type' => 'user', + 'field_name' => 'field_text_test', + 'type' => 'string', + 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, + ])->save(); + FieldConfig::create([ + 'entity_type' => 'user', + 'field_name' => 'field_text_test', + 'bundle' => 'user', + ])->save(); + entity_get_display('user', 'user', 'default') + ->setComponent('field_text_test', ['region' => 'content', 'type' => 'string']) + ->save(); + } + + /** + * Tests if the field formatter settings edit button can be operated with the + * keyboard ENTER key. + */ + public function testFieldUiFormatterSettingsButtonKeyboardEnter() { + // Get a Field UI manage-display page. + $this->drupalGet('admin/config/people/accounts/display'); + $session = $this->assertSession(); + $session->statusCodeEquals(200); + $page = $this->getSession()->getPage(); + + $button = $session->waitForElementVisible('css', 'input[data-drupal-selector=edit-fields-field-text-test-settings-edit]'); + $button->focus(); + $button->keyPress(13); // ENTER key + $session->assertWaitOnAjaxRequest(); + + // We expect the edit button has gone. + $button = $page->find('css', 'input[data-drupal-selector=edit-fields-field-text-test-settings-edit]'); + $this->assertTrue(empty($button), 'After pressing field formatter settings button, it should no longer be present.'); + + // We expect a checkbox for the string formatter's link-to-entity setting. + $checkbox = $page->find('css', 'input[data-drupal-selector=edit-fields-field-text-test-settings-edit-form-settings-link-to-entity]'); + $this->assertTrue($checkbox->isVisible(), 'After pressing formatter settings button, formatter settings fields are present.'); + } +}