You are here

function claro_views_ui_display_top_alter in Drupal 9

Same name and namespace in other branches
  1. 8 core/themes/claro/claro.theme \claro_views_ui_display_top_alter()

Implements hook_views_ui_display_top_alter().

File

core/themes/claro/claro.theme, line 581
Functions to support theming in the Claro theme.

Code

function claro_views_ui_display_top_alter(&$element) {

  // @todo remove this after https://www.drupal.org/node/3051605 has been
  //   solved.
  $element['tabs']['#prefix'] = preg_replace('/(class="(.+\\s)?)tabs(\\s.+"|")/', '$1views-tabs$3', $element['tabs']['#prefix']);
  $element['tabs']['#prefix'] = preg_replace('/(class="(.+\\s)?)secondary(\\s.+"|")/', '$1views-tabs--secondary$3', $element['tabs']['#prefix']);
  foreach (Element::children($element['tabs']) as $tab) {
    $element['tabs'][$tab]['#theme'] = 'menu_local_task__views_ui';
  }

  // Change top extra actions to use the small dropbutton variant.
  // @todo Revisit after https://www.drupal.org/node/3057581 is added.
  if (!empty($element['extra_actions'])) {
    $element['extra_actions']['#dropbutton_type'] = 'small';
  }

  // Add a class to each item in the add display dropdown so they can be styled
  // with a single selector.
  if (isset($element['add_display'])) {
    foreach ($element['add_display'] as &$display_item) {
      if (isset($display_item['#type']) && in_array($display_item['#type'], [
        'submit',
        'button',
      ], TRUE)) {
        $display_item['#attributes']['class'][] = 'views-tabs__action-list-button';
      }
    }
  }

  // Rearrange top bar contents so floats aren't necessary for positioning.
  if (isset($element['extra_actions'], $element['tabs'], $element['add_display'])) {
    $element['extra_actions']['#weight'] = 10;
    $element['extra_actions']['#theme_wrappers'] = [
      'container' => [
        '#attributes' => [
          'class' => [
            'views-display-top__extra-actions-wrapper',
          ],
        ],
      ],
    ];
    $element['#attributes']['class'] = array_diff($element['#attributes']['class'], [
      'clearfix',
    ]);
  }
}