71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @file
 | 
						|
 * Media Library overrides for Claro
 | 
						|
 */
 | 
						|
(($, Drupal, window) => {
 | 
						|
  /**
 | 
						|
   * Update the media library selection when loaded or media items are selected.
 | 
						|
   *
 | 
						|
   * @type {Drupal~behavior}
 | 
						|
   *
 | 
						|
   * @prop {Drupal~behaviorAttach} attach
 | 
						|
   *   Attaches behavior to select media items.
 | 
						|
   */
 | 
						|
  Drupal.behaviors.MediaLibraryItemSelectionClaro = {
 | 
						|
    attach() {
 | 
						|
      // Move the selection count to the beginning of the button pane after it
 | 
						|
      // has been added to the Media Library dialog.
 | 
						|
      // @todo replace with theme function override in
 | 
						|
      //   https://drupal.org/node/3134526
 | 
						|
      if (!once('media-library-selection-info-claro-event', 'html').length) {
 | 
						|
        return;
 | 
						|
      }
 | 
						|
      window.addEventListener('dialog:aftercreate', (e) => {
 | 
						|
        const $element = $(e.target);
 | 
						|
        // Since the dialog HTML is not part of the context, we can't use
 | 
						|
        // context here.
 | 
						|
        const moveCounter = ($selectedCount, $buttonPane) => {
 | 
						|
          const $moveSelectedCount = $selectedCount.detach();
 | 
						|
          $buttonPane.prepend($moveSelectedCount);
 | 
						|
        };
 | 
						|
 | 
						|
        const $buttonPane = $element
 | 
						|
          .closest('.media-library-widget-modal')
 | 
						|
          .find('.ui-dialog-buttonpane');
 | 
						|
        if (!$buttonPane.length) {
 | 
						|
          return;
 | 
						|
        }
 | 
						|
        const $selectedCount = $buttonPane.find(
 | 
						|
          '.js-media-library-selected-count',
 | 
						|
        );
 | 
						|
 | 
						|
        // If the `selected` counter is already present, it can be moved from
 | 
						|
        // the end of the button pane to the beginning.
 | 
						|
        if ($selectedCount.length) {
 | 
						|
          moveCounter($selectedCount, $buttonPane);
 | 
						|
        } else {
 | 
						|
          // If the `selected` counter is not yet present, create a mutation
 | 
						|
          // observer that checks for items added to the button pane. As soon
 | 
						|
          // as the counter is added, move it from the end of the button pane
 | 
						|
          // to the beginning.
 | 
						|
          const selectedCountObserver = new MutationObserver(() => {
 | 
						|
            const $selectedCountFind = $buttonPane.find(
 | 
						|
              '.js-media-library-selected-count',
 | 
						|
            );
 | 
						|
            if ($selectedCountFind.length) {
 | 
						|
              moveCounter($selectedCountFind, $buttonPane);
 | 
						|
              selectedCountObserver.disconnect();
 | 
						|
            }
 | 
						|
          });
 | 
						|
          selectedCountObserver.observe($buttonPane[0], {
 | 
						|
            attributes: false,
 | 
						|
            childList: true,
 | 
						|
            characterData: false,
 | 
						|
            subtree: true,
 | 
						|
          });
 | 
						|
        }
 | 
						|
      });
 | 
						|
    },
 | 
						|
  };
 | 
						|
})(jQuery, Drupal, window);
 |