diff core/modules/media_library/js/media_library.ui.js @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/media_library/js/media_library.ui.js	Thu May 09 15:34:47 2019 +0100
@@ -0,0 +1,218 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
+
+(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);
+    });
+  };
+
+  Drupal.behaviors.MediaLibraryWidgetWarn = {
+    attach: function attach(context) {
+      $('.js-media-library-item a[href]', context).once('media-library-warn-link').on('click', function (e) {
+        var message = Drupal.t('Unsaved changes to the form will be lost. Are you sure you want to leave?');
+        var confirmation = window.confirm(message);
+        if (!confirmation) {
+          e.preventDefault();
+        }
+      });
+    }
+  };
+
+  Drupal.behaviors.MediaLibraryTabs = {
+    attach: function attach(context) {
+      var $menu = $('.js-media-library-menu');
+      $menu.find('a', context).once('media-library-menu-item').on('click', function (e) {
+        e.preventDefault();
+        e.stopPropagation();
+
+        var ajaxObject = Drupal.ajax({
+          wrapper: 'media-library-content',
+          url: e.currentTarget.href,
+          dialogType: 'ajax',
+          progress: {
+            type: 'fullscreen',
+            message: Drupal.t('Please wait...')
+          }
+        });
+
+        ajaxObject.success = function (response, status) {
+          var _this = this;
+
+          if (this.progress.element) {
+            $(this.progress.element).remove();
+          }
+          if (this.progress.object) {
+            this.progress.object.stopMonitoring();
+          }
+          $(this.element).prop('disabled', false);
+
+          Object.keys(response || {}).forEach(function (i) {
+            if (response[i].command && _this.commands[response[i].command]) {
+              _this.commands[response[i].command](_this, response[i], status);
+            }
+          });
+
+          document.getElementById('media-library-content').focus();
+
+          this.settings = null;
+        };
+        ajaxObject.execute();
+
+        $menu.find('.active-tab').remove();
+        $menu.find('a').removeClass('active');
+        $(e.currentTarget).addClass('active').html(Drupal.t('@title<span class="active-tab visually-hidden"> (active tab)</span>', { '@title': $(e.currentTarget).html() }));
+      });
+    }
+  };
+
+  Drupal.behaviors.MediaLibraryViewsDisplay = {
+    attach: function attach(context) {
+      var $view = $(context).hasClass('.js-media-library-view') ? $(context) : $('.js-media-library-view', context);
+
+      $view.closest('.views-element-container').attr('id', 'media-library-view');
+
+      $('.views-display-link-widget, .views-display-link-widget_table', context).once('media-library-views-display-link').on('click', function (e) {
+        e.preventDefault();
+        e.stopPropagation();
+
+        var $link = $(e.currentTarget);
+
+        var loadingAnnouncement = '';
+        var displayAnnouncement = '';
+        var focusSelector = '';
+        if ($link.hasClass('views-display-link-widget')) {
+          loadingAnnouncement = Drupal.t('Loading grid view.');
+          displayAnnouncement = Drupal.t('Changed to grid view.');
+          focusSelector = '.views-display-link-widget';
+        } else if ($link.hasClass('views-display-link-widget_table')) {
+          loadingAnnouncement = Drupal.t('Loading table view.');
+          displayAnnouncement = Drupal.t('Changed to table view.');
+          focusSelector = '.views-display-link-widget_table';
+        }
+
+        var ajaxObject = Drupal.ajax({
+          wrapper: 'media-library-view',
+          url: e.currentTarget.href,
+          dialogType: 'ajax',
+          progress: {
+            type: 'fullscreen',
+            message: loadingAnnouncement || Drupal.t('Please wait...')
+          }
+        });
+
+        if (displayAnnouncement || focusSelector) {
+          var success = ajaxObject.success;
+          ajaxObject.success = function (response, status) {
+            success.bind(this)(response, status);
+
+            if (focusSelector) {
+              $(focusSelector).focus();
+            }
+
+            if (displayAnnouncement) {
+              Drupal.announce(displayAnnouncement);
+            }
+          };
+        }
+
+        ajaxObject.execute();
+
+        if (loadingAnnouncement) {
+          Drupal.announce(loadingAnnouncement);
+        }
+      });
+    }
+  };
+
+  Drupal.behaviors.MediaLibraryItemSelection = {
+    attach: function attach(context, settings) {
+      var $form = $('.js-media-library-views-form, .js-media-library-add-form', context);
+      var currentSelection = Drupal.MediaLibrary.currentSelection;
+
+      if (!$form.length) {
+        return;
+      }
+
+      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');
+      }
+
+      function enableItems($items) {
+        $items.prop('disabled', false).closest('.js-media-library-item').removeClass('media-library-item--disabled');
+      }
+
+      function updateSelectionCount(remaining) {
+        var selectItemsText = remaining < 0 ? Drupal.formatPlural(currentSelection.length, '1 item selected', '@count items selected') : Drupal.formatPlural(remaining, '@selected of @count item selected', '@selected of @count items selected', {
+          '@selected': currentSelection.length
+        });
+
+        $('.js-media-library-selected-count').html(selectItemsText);
+      }
+
+      $mediaItems.once('media-item-change').on('change', function (e) {
+        var id = e.currentTarget.value;
+
+        var position = currentSelection.indexOf(id);
+        if (e.currentTarget.checked) {
+          if (position === -1) {
+            currentSelection.push(id);
+          }
+        } else if (position !== -1) {
+          currentSelection.splice(position, 1);
+        }
+
+        $form.find('#media-library-modal-selection').val(currentSelection.join()).trigger('change');
+
+        $('.js-media-library-add-form-current-selection').val(currentSelection.join());
+      });
+
+      $('#media-library-modal-selection', $form).once('media-library-selection-change').on('change', function (e) {
+        updateSelectionCount(settings.media_library.selection_remaining);
+
+        if (currentSelection.length === settings.media_library.selection_remaining) {
+          disableItems($mediaItems.not(':checked'));
+          enableItems($mediaItems.filter(':checked'));
+        } else {
+          enableItems($mediaItems);
+        }
+      });
+
+      currentSelection.forEach(function (value) {
+        $form.find('input[type="checkbox"][value="' + value + '"]').prop('checked', true).trigger('change');
+      });
+
+      $(window).once('media-library-selection-info').on('dialog:aftercreate', function () {
+        var $buttonPane = $('.media-library-widget-modal .ui-dialog-buttonpane');
+        if (!$buttonPane.length) {
+          return;
+        }
+        $buttonPane.append(Drupal.theme('mediaLibrarySelectionCount'));
+        updateSelectionCount(settings.media_library.selection_remaining);
+      });
+    }
+  };
+
+  Drupal.behaviors.MediaLibraryModalClearSelection = {
+    attach: function attach() {
+      $(window).once('media-library-clear-selection').on('dialog:afterclose', function () {
+        Drupal.MediaLibrary.currentSelection = [];
+      });
+    }
+  };
+
+  Drupal.theme.mediaLibrarySelectionCount = function () {
+    return '<div class="media-library-selected-count js-media-library-selected-count" role="status" aria-live="polite" aria-atomic="true"></div>';
+  };
+})(jQuery, Drupal, window);
\ No newline at end of file