diff --git a/core/lib/Drupal/Core/Entity/EntityForm.php b/core/lib/Drupal/Core/Entity/EntityForm.php index 3506218..d45ce7d 100644 --- a/core/lib/Drupal/Core/Entity/EntityForm.php +++ b/core/lib/Drupal/Core/Entity/EntityForm.php @@ -2,6 +2,7 @@ namespace Drupal\Core\Entity; +use Drupal\Component\Serialization\Json; use Drupal\Core\Form\FormBase; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Form\FormStateInterface; @@ -244,10 +245,15 @@ protected function actions(array $form, FormStateInterface $form_state) { '#title' => $this->t('Delete'), '#access' => $this->entity->access('delete'), '#attributes' => [ - 'class' => ['button', 'button--danger'], + 'class' => ['button', 'button--danger', 'use-ajax'], + 'data-dialog-type' => 'modal', + 'data-dialog-options' => Json::encode(['width' => 'auto']) ], + '#url' => $route_info, + ]; + $actions['#attached'] = [ + 'library' => ['core/drupal.ajax'], ]; - $actions['delete']['#url'] = $route_info; } return $actions; diff --git a/core/lib/Drupal/Core/Form/ConfirmFormHelper.php b/core/lib/Drupal/Core/Form/ConfirmFormHelper.php index fc92ff9..4e93d6c 100644 --- a/core/lib/Drupal/Core/Form/ConfirmFormHelper.php +++ b/core/lib/Drupal/Core/Form/ConfirmFormHelper.php @@ -45,7 +45,9 @@ public static function buildCancelLink(ConfirmFormInterface $form, Request $requ return [ '#type' => 'link', '#title' => $form->getCancelText(), - '#attributes' => ['class' => ['button']], + '#attributes' => [ + 'class' => ['button', 'dialog-cancel'] + ], '#url' => $url, '#cache' => [ 'contexts' => [ diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php index fb98d90..c57174e 100644 --- a/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php +++ b/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php @@ -178,8 +178,11 @@ public function testMediaTypes() { // Tests media type delete form. $page->clickLink('Delete'); - $assert_session->addressEquals('admin/structure/media/manage/' . $this->testMediaType->id() . '/delete'); - $page->pressButton('Delete'); + $assert_session->assertWaitOnAjaxRequest(); + $modal = $assert_session->waitForElementVisible('css', '#drupal-modal'); + $this->assertTrue($modal->isVisible(), 'Modal window found.'); + $assert_session->addressEquals('admin/structure/media/manage/' . $this->testMediaType->id()); + $this->click('.ui-dialog button:contains("' . t('Delete') . '")'); $assert_session->addressEquals('admin/structure/media'); $assert_session->pageTextContains('The media type ' . $new_name . ' has been deleted.'); @@ -191,8 +194,11 @@ public function testMediaTypes() { $media->save(); $this->drupalGet('admin/structure/media/manage/' . $media_type2->id()); $page->clickLink('Delete'); - $assert_session->addressEquals('admin/structure/media/manage/' . $media_type2->id() . '/delete'); - $assert_session->buttonNotExists('edit-submit'); + $assert_session->assertWaitOnAjaxRequest(); + $modal = $assert_session->waitForElementVisible('css', '#drupal-modal'); + $this->assertTrue($modal->isVisible(), 'Modal window found.'); + $assert_session->addressEquals('admin/structure/media/manage/' . $media_type2->id()); + $assert_session->elementNotExists('css', '.ui-dialog button:contains("' . t('Delete') . '")'); $assert_session->pageTextContains("$label2 is used by 1 media item on your site. You can not remove this media type until you have removed all of the $label2 media items."); }