diff --git a/core/modules/media_library/js/media_library.click_to_select.es6.js b/core/modules/media_library/js/media_library.click_to_select.es6.js
index 536526a6c8..d10a8a65d5 100644
--- a/core/modules/media_library/js/media_library.click_to_select.es6.js
+++ b/core/modules/media_library/js/media_library.click_to_select.es6.js
@@ -15,15 +15,7 @@
     attach(context) {
       $('.js-click-to-select-trigger', context)
         .once('media-library-click-to-select')
-        .on('click', event => {
-          // Links inside the trigger should not be click-able.
-          event.preventDefault();
-          // Click the hidden checkbox when the trigger is clicked.
-          const $input = $(event.currentTarget)
-            .closest('.js-click-to-select')
-            .find('.js-click-to-select-checkbox input');
-          $input.prop('checked', !$input.prop('checked')).trigger('change');
-        });
+        .on('click', Drupal.MediaLibrary.clickToSelectTriggerEvent);
 
       $('.js-click-to-select-checkbox input', context)
         .once('media-library-click-to-select')
diff --git a/core/modules/media_library/js/media_library.click_to_select.js b/core/modules/media_library/js/media_library.click_to_select.js
index 265ec4531b..14fbd92ccd 100644
--- a/core/modules/media_library/js/media_library.click_to_select.js
+++ b/core/modules/media_library/js/media_library.click_to_select.js
@@ -8,12 +8,7 @@
 (function ($, Drupal) {
   Drupal.behaviors.ClickToSelect = {
     attach: function attach(context) {
-      $('.js-click-to-select-trigger', context).once('media-library-click-to-select').on('click', function (event) {
-        event.preventDefault();
-
-        var $input = $(event.currentTarget).closest('.js-click-to-select').find('.js-click-to-select-checkbox input');
-        $input.prop('checked', !$input.prop('checked')).trigger('change');
-      });
+      $('.js-click-to-select-trigger', context).once('media-library-click-to-select').on('click', Drupal.MediaLibrary.clickToSelectTriggerEvent);
 
       $('.js-click-to-select-checkbox input', context).once('media-library-click-to-select').on('change', function (_ref) {
         var currentTarget = _ref.currentTarget;
diff --git a/core/modules/media_library/js/media_library.main.es6.js b/core/modules/media_library/js/media_library.main.es6.js
new file mode 100644
index 0000000000..fc3c3ade4e
--- /dev/null
+++ b/core/modules/media_library/js/media_library.main.es6.js
@@ -0,0 +1,32 @@
+/**
+ * @file media_library.main.js
+ */
+(($, Drupal) => {
+  /**
+   * Wrapper object for the current state of the media library.
+   */
+  Drupal.MediaLibrary = {
+    /**
+     * When a user interacts with the media library we want the selection to
+     * persist as long as the media library modal is opened. We temporarily
+     * store the selected items while the user filters the media library view or
+     * navigates to different tabs.
+     */
+    currentSelection: [],
+    /**
+     * Media item click listener that is used in multiple files.
+     *
+     * @param {object} event
+     *   The click event.
+     */
+    clickToSelectTriggerEvent: event => {
+      // Links inside the trigger should not be click-able.
+      event.preventDefault();
+      // Click the hidden checkbox when the trigger is clicked.
+      const $input = $(event.currentTarget)
+        .closest('.js-click-to-select')
+        .find('.js-click-to-select-checkbox input');
+      $input.prop('checked', !$input.prop('checked')).trigger('change');
+    },
+  };
+})(jQuery, Drupal);
diff --git a/core/modules/media_library/js/media_library.main.js b/core/modules/media_library/js/media_library.main.js
new file mode 100644
index 0000000000..30781f4143
--- /dev/null
+++ b/core/modules/media_library/js/media_library.main.js
@@ -0,0 +1,19 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
+
+(function ($, Drupal) {
+  Drupal.MediaLibrary = {
+    currentSelection: [],
+
+    clickToSelectTriggerEvent: function clickToSelectTriggerEvent(event) {
+      event.preventDefault();
+
+      var $input = $(event.currentTarget).closest('.js-click-to-select').find('.js-click-to-select-checkbox input');
+      $input.prop('checked', !$input.prop('checked')).trigger('change');
+    }
+  };
+})(jQuery, Drupal);
\ No newline at end of file
diff --git a/core/modules/media_library/js/media_library.ui.es6.js b/core/modules/media_library/js/media_library.ui.es6.js
index f896f59a50..1f8971bf92 100644
--- a/core/modules/media_library/js/media_library.ui.es6.js
+++ b/core/modules/media_library/js/media_library.ui.es6.js
@@ -2,19 +2,6 @@
  * @file media_library.widget.js
  */
 (($, Drupal, window) => {
-  /**
-   * Wrapper object for the current state of the media library.
-   */
-  Drupal.MediaLibrary = {
-    /**
-     * When a user interacts with the media library we want the selection to
-     * persist as long as the media library modal is opened. We temporarily
-     * store the selected items while the user filters the media library view or
-     * navigates to different tabs.
-     */
-    currentSelection: [],
-  };
-
   /**
    * Command to update the current media library selection.
    *
@@ -290,10 +277,16 @@
        *   A jQuery object representing the media items that should be disabled.
        */
       function disableItems($items) {
+        console.log('disable items', $items);
         $items
           .prop('disabled', true)
           .closest('.js-media-library-item')
-          .addClass('media-library-item--disabled');
+          .addClass('media-library-item--disabled')
+          .find('.js-click-to-select-trigger')
+          .off('click')
+          .closest('.js-media-library-item')
+          .find('a')
+          .attr('onclick', 'return false;');
       }
 
       /**
@@ -305,8 +298,13 @@
       function enableItems($items) {
         $items
           .prop('disabled', false)
+          .closest('.media-library-item--disabled')
+          .removeClass('media-library-item--disabled')
+          .find('.js-click-to-select-trigger')
+          .on('click', Drupal.MediaLibrary.clickToSelectTriggerEvent)
           .closest('.js-media-library-item')
-          .removeClass('media-library-item--disabled');
+          .find('a')
+          .removeAttr('onclick');
       }
 
       /**
diff --git a/core/modules/media_library/js/media_library.ui.js b/core/modules/media_library/js/media_library.ui.js
index 9573e94cff..3caa06dade 100644
--- a/core/modules/media_library/js/media_library.ui.js
+++ b/core/modules/media_library/js/media_library.ui.js
@@ -6,10 +6,6 @@
 **/
 
 (function ($, Drupal, window) {
-  Drupal.MediaLibrary = {
-    currentSelection: []
-  };
-
   Drupal.AjaxCommands.prototype.updateMediaLibrarySelection = function (ajax, response, status) {
     Object.values(response.mediaIds).forEach(function (value) {
       Drupal.MediaLibrary.currentSelection.push(value);
@@ -156,11 +152,12 @@
       var $mediaItems = $('.js-media-library-item input[type="checkbox"]', $form);
 
       function disableItems($items) {
-        $items.prop('disabled', true).closest('.js-media-library-item').addClass('media-library-item--disabled');
+        console.log('disable items', $items);
+        $items.prop('disabled', true).closest('.js-media-library-item').addClass('media-library-item--disabled').find('.js-click-to-select-trigger').off('click').closest('.js-media-library-item').find('a').attr('onclick', 'return false;');
       }
 
       function enableItems($items) {
-        $items.prop('disabled', false).closest('.js-media-library-item').removeClass('media-library-item--disabled');
+        $items.prop('disabled', false).closest('.media-library-item--disabled').removeClass('media-library-item--disabled').find('.js-click-to-select-trigger').on('click', Drupal.MediaLibrary.clickToSelectTriggerEvent).closest('.js-media-library-item').find('a').removeAttr('onclick');
       }
 
       function updateSelectionCount(remaining) {
diff --git a/core/modules/media_library/media_library.libraries.yml b/core/modules/media_library/media_library.libraries.yml
index 2eff9bf3ac..24065e1cca 100644
--- a/core/modules/media_library/media_library.libraries.yml
+++ b/core/modules/media_library/media_library.libraries.yml
@@ -6,6 +6,11 @@ style:
     theme:
       css/media_library.theme.css: {}
 
+main:
+  version: VERSION
+  js:
+    js/media_library.main.js: {}
+
 click_to_select:
   version: VERSION
   js:
@@ -13,6 +18,7 @@ click_to_select:
   dependencies:
     - core/drupal
     - core/jquery.once
+    - media_library/main
 
 view:
   version: VERSION
@@ -21,6 +27,7 @@ view:
   dependencies:
     - core/drupal.announce
     - core/drupal.checkbox
+    - media_library/main
     - media_library/style
     - media_library/click_to_select
 
@@ -32,6 +39,7 @@ widget:
     - core/drupal.dialog.ajax
     - core/jquery.ui.sortable
     - core/jquery.once
+    - media_library/main
     - media_library/style
 
 ui:
@@ -42,4 +50,5 @@ ui:
     - core/drupal.ajax
     - core/drupal.announce
     - core/jquery.once
+    - media_library/main
     - media_library/view
