diff -u b/core/modules/media_library/js/media_library.widget.js b/core/modules/media_library/js/media_library.widget.js --- b/core/modules/media_library/js/media_library.widget.js +++ b/core/modules/media_library/js/media_library.widget.js @@ -39,24 +39,14 @@ Drupal.behaviors.MediaLibraryWidgetEditItem = { attach: function attach() { - $('.media-library-widget .js-media-library-item a[href]') + $('.media-library-widget .edit-media') .once('media-library-edit') - .each(function() { - var mediaEntity = $(this).closest( - '.media[data-drupal-selector]', - ); - var elementSettings = { - progress: { type: 'throbber' }, - dialogType: 'modal', - dialog: { width: '80%' }, - dialogRenderer: null, - base: $(this).attr('id'), - element: this, - url: $(this).attr('href').concat("?selector=").concat(mediaEntity.attr('data-drupal-selector')), - event: 'click', - }; - Drupal.ajax(elementSettings); - }); + .on('click',function(){ + // Remove any "selected-media" classes. + $(this).parent().find('selected-media').removeClass('selected-media'); + // Mark the media item as selected to render it properly when submitting an ajax media edit request. + $(this).parent().find('article').addClass('selected-media'); + }) }, }; diff -u b/core/modules/media_library/media_library.module b/core/modules/media_library/media_library.module --- b/core/modules/media_library/media_library.module +++ b/core/modules/media_library/media_library.module @@ -279,10 +279,9 @@ $media = $form_state->getFormObject()->getEntity(); $selector = $form_state->get('selector'); $render_array = \Drupal::entityTypeManager()->getViewBuilder('media')->view($media, 'media_library'); - $render_array['#attributes']['data-drupal-selector'] = $selector; $html = \Drupal::service('renderer')->render($render_array); $response->addCommand(new CloseModalDialogCommand()); - $response->addCommand(new ReplaceCommand('[data-drupal-selector="' . $selector . '"]', $html)); + $response->addCommand(new ReplaceCommand('.selected-media', $html)); } else { $form['status_messages'] = [ only in patch2: unchanged: --- a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php @@ -413,6 +413,17 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen // Prevent errors in other widgets from preventing removal. '#limit_validation_errors' => $limit_validation_errors, ], + 'edit_button' => [ + '#type' => 'button', + '#value' => $this->t('Edit'), + '#attributes' => [ + 'type' => 'button', + 'class' => ['edit-media','use-ajax'], + 'href' => Url::fromRoute('entity.media.edit_form', ['media' => $media_item->id()])->toString(), + 'data-dialog-type' => 'modal', + 'data-dialog-options' => '{"width":"80%"}', + ], + ], // @todo Make the view mode configurable in https://www.drupal.org/project/drupal/issues/2971209 'rendered_entity' => $view_builder->view($media_item, 'media_library'), 'target_id' => [