diff --git a/core/misc/ajax.js b/core/misc/ajax.js index fefe9f3..de79047 100644 --- a/core/misc/ajax.js +++ b/core/misc/ajax.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/modules/field_ui/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php b/core/modules/field_ui/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php new file mode 100644 index 0000000..0f4caa3 --- /dev/null +++ b/core/modules/field_ui/tests/src/FunctionalJavascript/FieldUiIntegrationTest.php @@ -0,0 +1,81 @@ +drupalCreateUser([ + 'administer user display', + ]); + $this->drupalLogin($admin_user); + + FieldStorageConfig::create(array( + 'entity_type' => 'user', + 'field_name' => 'field_text_test', + 'type' => 'string', + 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, + ))->save(); + FieldConfig::create(array( + 'entity_type' => 'user', + 'field_name' => 'field_text_test', + 'bundle' => 'user', + ))->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(); + + // Select a field formatter which has settings, so that the settings button + // will appear. + // @todo Specify the formatter in setUp() so we can remove this step. + $select = $page->findById('edit-fields-field-text-test-type'); + $select->selectOption('string'); + $session->assertWaitOnAjaxRequest(); + + // We can't know the exact ID of the edit button; it has a random + // suffix after the ajax request. + $button = $page->find('css', 'input[type=image][id^=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[type=image][id^=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[id^=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.'); + } + +}