annotate core/modules/media_library/js/media_library.view.es6.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
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);