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);