You are here

public function MediaLibraryUiBuilder::buildUi in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/media_library/src/MediaLibraryUiBuilder.php \Drupal\media_library\MediaLibraryUiBuilder::buildUi()
  2. 9 core/modules/media_library/src/MediaLibraryUiBuilder.php \Drupal\media_library\MediaLibraryUiBuilder::buildUi()

Build the media library UI.

Parameters

\Drupal\media_library\MediaLibraryState $state: (optional) The current state of the media library, derived from the current request.

Return value

array The render array for the media library.

File

core/modules/media_library/src/MediaLibraryUiBuilder.php, line 109

Class

MediaLibraryUiBuilder
Service which builds the media library.

Namespace

Drupal\media_library

Code

public function buildUi(MediaLibraryState $state = NULL) {
  if (!$state) {
    $state = MediaLibraryState::fromRequest($this->request);
  }

  // When navigating to a media type through the vertical tabs, we only want
  // to load the changed library content. This is not only more efficient, but
  // also provides a more accessible user experience for screen readers.
  if ($state
    ->get('media_library_content') === '1') {
    return $this
      ->buildLibraryContent($state);
  }
  else {
    return [
      '#theme' => 'media_library_wrapper',
      '#attributes' => [
        'id' => 'media-library-wrapper',
      ],
      'menu' => $this
        ->buildMediaTypeMenu($state),
      'content' => $this
        ->buildLibraryContent($state),
      // Attach the JavaScript for the media library UI. The number of
      // available slots needs to be added to make sure users can't select
      // more items than allowed.
      '#attached' => [
        'library' => [
          'media_library/ui',
        ],
        'drupalSettings' => [
          'media_library' => [
            'selection_remaining' => $state
              ->getAvailableSlots(),
          ],
        ],
      ],
    ];
  }
}