annotate 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
rev   line source
Chris@5 1 /**
Chris@5 2 * DO NOT EDIT THIS FILE.
Chris@5 3 * See the following change record for more information,
Chris@5 4 * https://www.drupal.org/node/2815083
Chris@5 5 * @preserve
Chris@5 6 **/
Chris@5 7
Chris@5 8 (function ($, Drupal, window) {
Chris@5 9 Drupal.MediaLibrary = {
Chris@5 10 currentSelection: []
Chris@5 11 };
Chris@5 12
Chris@5 13 Drupal.AjaxCommands.prototype.updateMediaLibrarySelection = function (ajax, response, status) {
Chris@5 14 Object.values(response.mediaIds).forEach(function (value) {
Chris@5 15 Drupal.MediaLibrary.currentSelection.push(value);
Chris@5 16 });
Chris@5 17 };
Chris@5 18
Chris@5 19 Drupal.behaviors.MediaLibraryWidgetWarn = {
Chris@5 20 attach: function attach(context) {
Chris@5 21 $('.js-media-library-item a[href]', context).once('media-library-warn-link').on('click', function (e) {
Chris@5 22 var message = Drupal.t('Unsaved changes to the form will be lost. Are you sure you want to leave?');
Chris@5 23 var confirmation = window.confirm(message);
Chris@5 24 if (!confirmation) {
Chris@5 25 e.preventDefault();
Chris@5 26 }
Chris@5 27 });
Chris@5 28 }
Chris@5 29 };
Chris@5 30
Chris@5 31 Drupal.behaviors.MediaLibraryTabs = {
Chris@5 32 attach: function attach(context) {
Chris@5 33 var $menu = $('.js-media-library-menu');
Chris@5 34 $menu.find('a', context).once('media-library-menu-item').on('click', function (e) {
Chris@5 35 e.preventDefault();
Chris@5 36 e.stopPropagation();
Chris@5 37
Chris@5 38 var ajaxObject = Drupal.ajax({
Chris@5 39 wrapper: 'media-library-content',
Chris@5 40 url: e.currentTarget.href,
Chris@5 41 dialogType: 'ajax',
Chris@5 42 progress: {
Chris@5 43 type: 'fullscreen',
Chris@5 44 message: Drupal.t('Please wait...')
Chris@5 45 }
Chris@5 46 });
Chris@5 47
Chris@5 48 ajaxObject.success = function (response, status) {
Chris@5 49 var _this = this;
Chris@5 50
Chris@5 51 if (this.progress.element) {
Chris@5 52 $(this.progress.element).remove();
Chris@5 53 }
Chris@5 54 if (this.progress.object) {
Chris@5 55 this.progress.object.stopMonitoring();
Chris@5 56 }
Chris@5 57 $(this.element).prop('disabled', false);
Chris@5 58
Chris@5 59 Object.keys(response || {}).forEach(function (i) {
Chris@5 60 if (response[i].command && _this.commands[response[i].command]) {
Chris@5 61 _this.commands[response[i].command](_this, response[i], status);
Chris@5 62 }
Chris@5 63 });
Chris@5 64
Chris@5 65 document.getElementById('media-library-content').focus();
Chris@5 66
Chris@5 67 this.settings = null;
Chris@5 68 };
Chris@5 69 ajaxObject.execute();
Chris@5 70
Chris@5 71 $menu.find('.active-tab').remove();
Chris@5 72 $menu.find('a').removeClass('active');
Chris@5 73 $(e.currentTarget).addClass('active').html(Drupal.t('@title<span class="active-tab visually-hidden"> (active tab)</span>', { '@title': $(e.currentTarget).html() }));
Chris@5 74 });
Chris@5 75 }
Chris@5 76 };
Chris@5 77
Chris@5 78 Drupal.behaviors.MediaLibraryViewsDisplay = {
Chris@5 79 attach: function attach(context) {
Chris@5 80 var $view = $(context).hasClass('.js-media-library-view') ? $(context) : $('.js-media-library-view', context);
Chris@5 81
Chris@5 82 $view.closest('.views-element-container').attr('id', 'media-library-view');
Chris@5 83
Chris@5 84 $('.views-display-link-widget, .views-display-link-widget_table', context).once('media-library-views-display-link').on('click', function (e) {
Chris@5 85 e.preventDefault();
Chris@5 86 e.stopPropagation();
Chris@5 87
Chris@5 88 var $link = $(e.currentTarget);
Chris@5 89
Chris@5 90 var loadingAnnouncement = '';
Chris@5 91 var displayAnnouncement = '';
Chris@5 92 var focusSelector = '';
Chris@5 93 if ($link.hasClass('views-display-link-widget')) {
Chris@5 94 loadingAnnouncement = Drupal.t('Loading grid view.');
Chris@5 95 displayAnnouncement = Drupal.t('Changed to grid view.');
Chris@5 96 focusSelector = '.views-display-link-widget';
Chris@5 97 } else if ($link.hasClass('views-display-link-widget_table')) {
Chris@5 98 loadingAnnouncement = Drupal.t('Loading table view.');
Chris@5 99 displayAnnouncement = Drupal.t('Changed to table view.');
Chris@5 100 focusSelector = '.views-display-link-widget_table';
Chris@5 101 }
Chris@5 102
Chris@5 103 var ajaxObject = Drupal.ajax({
Chris@5 104 wrapper: 'media-library-view',
Chris@5 105 url: e.currentTarget.href,
Chris@5 106 dialogType: 'ajax',
Chris@5 107 progress: {
Chris@5 108 type: 'fullscreen',
Chris@5 109 message: loadingAnnouncement || Drupal.t('Please wait...')
Chris@5 110 }
Chris@5 111 });
Chris@5 112
Chris@5 113 if (displayAnnouncement || focusSelector) {
Chris@5 114 var success = ajaxObject.success;
Chris@5 115 ajaxObject.success = function (response, status) {
Chris@5 116 success.bind(this)(response, status);
Chris@5 117
Chris@5 118 if (focusSelector) {
Chris@5 119 $(focusSelector).focus();
Chris@5 120 }
Chris@5 121
Chris@5 122 if (displayAnnouncement) {
Chris@5 123 Drupal.announce(displayAnnouncement);
Chris@5 124 }
Chris@5 125 };
Chris@5 126 }
Chris@5 127
Chris@5 128 ajaxObject.execute();
Chris@5 129
Chris@5 130 if (loadingAnnouncement) {
Chris@5 131 Drupal.announce(loadingAnnouncement);
Chris@5 132 }
Chris@5 133 });
Chris@5 134 }
Chris@5 135 };
Chris@5 136
Chris@5 137 Drupal.behaviors.MediaLibraryItemSelection = {
Chris@5 138 attach: function attach(context, settings) {
Chris@5 139 var $form = $('.js-media-library-views-form, .js-media-library-add-form', context);
Chris@5 140 var currentSelection = Drupal.MediaLibrary.currentSelection;
Chris@5 141
Chris@5 142 if (!$form.length) {
Chris@5 143 return;
Chris@5 144 }
Chris@5 145
Chris@5 146 var $mediaItems = $('.js-media-library-item input[type="checkbox"]', $form);
Chris@5 147
Chris@5 148 function disableItems($items) {
Chris@5 149 $items.prop('disabled', true).closest('.js-media-library-item').addClass('media-library-item--disabled');
Chris@5 150 }
Chris@5 151
Chris@5 152 function enableItems($items) {
Chris@5 153 $items.prop('disabled', false).closest('.js-media-library-item').removeClass('media-library-item--disabled');
Chris@5 154 }
Chris@5 155
Chris@5 156 function updateSelectionCount(remaining) {
Chris@5 157 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', {
Chris@5 158 '@selected': currentSelection.length
Chris@5 159 });
Chris@5 160
Chris@5 161 $('.js-media-library-selected-count').html(selectItemsText);
Chris@5 162 }
Chris@5 163
Chris@5 164 $mediaItems.once('media-item-change').on('change', function (e) {
Chris@5 165 var id = e.currentTarget.value;
Chris@5 166
Chris@5 167 var position = currentSelection.indexOf(id);
Chris@5 168 if (e.currentTarget.checked) {
Chris@5 169 if (position === -1) {
Chris@5 170 currentSelection.push(id);
Chris@5 171 }
Chris@5 172 } else if (position !== -1) {
Chris@5 173 currentSelection.splice(position, 1);
Chris@5 174 }
Chris@5 175
Chris@5 176 $form.find('#media-library-modal-selection').val(currentSelection.join()).trigger('change');
Chris@5 177
Chris@5 178 $('.js-media-library-add-form-current-selection').val(currentSelection.join());
Chris@5 179 });
Chris@5 180
Chris@5 181 $('#media-library-modal-selection', $form).once('media-library-selection-change').on('change', function (e) {
Chris@5 182 updateSelectionCount(settings.media_library.selection_remaining);
Chris@5 183
Chris@5 184 if (currentSelection.length === settings.media_library.selection_remaining) {
Chris@5 185 disableItems($mediaItems.not(':checked'));
Chris@5 186 enableItems($mediaItems.filter(':checked'));
Chris@5 187 } else {
Chris@5 188 enableItems($mediaItems);
Chris@5 189 }
Chris@5 190 });
Chris@5 191
Chris@5 192 currentSelection.forEach(function (value) {
Chris@5 193 $form.find('input[type="checkbox"][value="' + value + '"]').prop('checked', true).trigger('change');
Chris@5 194 });
Chris@5 195
Chris@5 196 $(window).once('media-library-selection-info').on('dialog:aftercreate', function () {
Chris@5 197 var $buttonPane = $('.media-library-widget-modal .ui-dialog-buttonpane');
Chris@5 198 if (!$buttonPane.length) {
Chris@5 199 return;
Chris@5 200 }
Chris@5 201 $buttonPane.append(Drupal.theme('mediaLibrarySelectionCount'));
Chris@5 202 updateSelectionCount(settings.media_library.selection_remaining);
Chris@5 203 });
Chris@5 204 }
Chris@5 205 };
Chris@5 206
Chris@5 207 Drupal.behaviors.MediaLibraryModalClearSelection = {
Chris@5 208 attach: function attach() {
Chris@5 209 $(window).once('media-library-clear-selection').on('dialog:afterclose', function () {
Chris@5 210 Drupal.MediaLibrary.currentSelection = [];
Chris@5 211 });
Chris@5 212 }
Chris@5 213 };
Chris@5 214
Chris@5 215 Drupal.theme.mediaLibrarySelectionCount = function () {
Chris@5 216 return '<div class="media-library-selected-count js-media-library-selected-count" role="status" aria-live="polite" aria-atomic="true"></div>';
Chris@5 217 };
Chris@5 218 })(jQuery, Drupal, window);