Chris@17
|
1 /**
|
Chris@17
|
2 * @file media_library.view.es6.js
|
Chris@17
|
3 */
|
Chris@17
|
4 (($, Drupal) => {
|
Chris@17
|
5 /**
|
Chris@17
|
6 * Adds checkbox to select all items in the library.
|
Chris@18
|
7 *
|
Chris@18
|
8 * @type {Drupal~behavior}
|
Chris@18
|
9 *
|
Chris@18
|
10 * @prop {Drupal~behaviorAttach} attach
|
Chris@18
|
11 * Attaches behavior to select all media items.
|
Chris@17
|
12 */
|
Chris@17
|
13 Drupal.behaviors.MediaLibrarySelectAll = {
|
Chris@17
|
14 attach(context) {
|
Chris@18
|
15 const $view = $('.js-media-library-view', context).once(
|
Chris@17
|
16 'media-library-select-all',
|
Chris@17
|
17 );
|
Chris@18
|
18 if ($view.length && $view.find('.js-media-library-item').length) {
|
Chris@17
|
19 const $checkbox = $(
|
Chris@17
|
20 '<input type="checkbox" class="form-checkbox" />',
|
Chris@17
|
21 ).on('click', ({ currentTarget }) => {
|
Chris@17
|
22 // Toggle all checkboxes.
|
Chris@17
|
23 const $checkboxes = $(currentTarget)
|
Chris@17
|
24 .closest('.media-library-view')
|
Chris@18
|
25 .find('.js-media-library-item input[type="checkbox"]');
|
Chris@17
|
26 $checkboxes
|
Chris@17
|
27 .prop('checked', $(currentTarget).prop('checked'))
|
Chris@17
|
28 .trigger('change');
|
Chris@17
|
29 // Announce the selection.
|
Chris@17
|
30 const announcement = $(currentTarget).prop('checked')
|
Chris@17
|
31 ? Drupal.t('Zero items selected')
|
Chris@17
|
32 : Drupal.t('All @count items selected', {
|
Chris@17
|
33 '@count': $checkboxes.length,
|
Chris@17
|
34 });
|
Chris@17
|
35 Drupal.announce(announcement);
|
Chris@17
|
36 });
|
Chris@17
|
37 const $label = $(
|
Chris@17
|
38 '<label class="media-library-select-all"></label>',
|
Chris@17
|
39 ).text(Drupal.t('Select all media'));
|
Chris@17
|
40 $label.prepend($checkbox);
|
Chris@17
|
41 $view
|
Chris@18
|
42 .find('.js-media-library-item')
|
Chris@17
|
43 .first()
|
Chris@17
|
44 .before($label);
|
Chris@17
|
45 }
|
Chris@17
|
46 },
|
Chris@17
|
47 };
|
Chris@17
|
48 })(jQuery, Drupal);
|