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