Chris@17: /** Chris@17: * @file media_library.view.es6.js Chris@17: */ Chris@17: (($, Drupal) => { Chris@17: /** Chris@17: * Adds checkbox to select all items in the library. Chris@18: * Chris@18: * @type {Drupal~behavior} Chris@18: * Chris@18: * @prop {Drupal~behaviorAttach} attach Chris@18: * Attaches behavior to select all media items. Chris@17: */ Chris@17: Drupal.behaviors.MediaLibrarySelectAll = { Chris@17: attach(context) { Chris@18: const $view = $('.js-media-library-view', context).once( Chris@17: 'media-library-select-all', Chris@17: ); Chris@18: if ($view.length && $view.find('.js-media-library-item').length) { Chris@17: const $checkbox = $( Chris@17: '', Chris@17: ).on('click', ({ currentTarget }) => { Chris@17: // Toggle all checkboxes. Chris@17: const $checkboxes = $(currentTarget) Chris@17: .closest('.media-library-view') Chris@18: .find('.js-media-library-item input[type="checkbox"]'); Chris@17: $checkboxes Chris@17: .prop('checked', $(currentTarget).prop('checked')) Chris@17: .trigger('change'); Chris@17: // Announce the selection. Chris@17: const announcement = $(currentTarget).prop('checked') Chris@17: ? Drupal.t('Zero items selected') Chris@17: : Drupal.t('All @count items selected', { Chris@17: '@count': $checkboxes.length, Chris@17: }); Chris@17: Drupal.announce(announcement); Chris@17: }); Chris@17: const $label = $( Chris@17: '', Chris@17: ).text(Drupal.t('Select all media')); Chris@17: $label.prepend($checkbox); Chris@17: $view Chris@18: .find('.js-media-library-item') Chris@17: .first() Chris@17: .before($label); Chris@17: } Chris@17: }, Chris@17: }; Chris@17: })(jQuery, Drupal);