You are here

public static function FooTable::preRenderFooTable in FooTable 8.2

Parameters

array $element:

Return value

array

File

src/Element/FooTable.php, line 61

Class

FooTable
Provides a render element for a FooTable.

Namespace

Drupal\footable\Element

Code

public static function preRenderFooTable($element) {
  $element['#attributes']['class'][] = 'footable';

  /* @var \Drupal\footable\FooTableInterface $footable */
  $footable = Drupal::service('footable.footable');
  $element['#attached']['library'][] = $footable
    ->getLibrary();

  // Add FooTable properties.
  foreach (static::getProperties() as $key => $property) {
    $default = $property['default'] ?? NULL;
    $value = $element['#' . $key] ?? $default;
    if ($value !== $default) {
      if (is_bool($value)) {
        $value = $value ? 'true' : 'false';
      }
      $element['#attributes']['data-' . $property['key']] = $value;
    }
  }
  if (isset($element['#header']) && is_array($element['#header'])) {
    foreach ($element['#header'] as $key => &$header) {
      if (!is_array($header) && Element::child($key)) {
        $header = [
          'data' => $header,
        ];
      }
      if ($footable = $header['footable'] ?? NULL) {
        unset($header['footable']);
        if (isset($footable['sort'])) {
          $element['#attributes']['data-sorting'] = 'true';
          $header['data-sortable'] = 'true';
          $header['data-direction'] = $footable['sort'];
          $header['data-breakpoints'] = 'all';
        }
      }
    }
  }
  return $element;
}