Change record status: 
Project: 
Introduced in branch: 
8.x
Description: 

There is a new, simple API for callers to theme_table(). Less important columns should get a RESPONSIVE_PRIORITY_MEDIUM class or a RESPONSIVE_PRIORITY_LOW class in their $header array. Both of these column types are hidden for narrow devices; MEDIUM priority columns are shown at tablet widths, and LOW priority columns are shown at desktop widths. Columns with no responsive class are assumed to be essential and always shown. Hidden columns can always be exposed on demand by the user by clicking a 'Show all columns' link.

Here is an example from admin/content (node.admin.inc).

// Build the sortable table header.
  $header = array(
    'title' => array(
      'data' => t('Title'),
      'field' => 'n.title',
    ),
    'type' => array(
      'data' => t('Content type'),
      'field' => 'n.type',
      'class' => array(RESPONSIVE_PRIORITY_MEDIUM),
    ),
    'author' => array(
      'data' => t('Author'),
      'class' => array(RESPONSIVE_PRIORITY_LOW),
    ),
    'status' => array(
      'data' => t('Status'),
      'field' => 'n.status',
    ),
    'changed' => array(
      'data' => t('Updated'),
      'field' => 'n.changed',
      'sort' => 'desc',
      'class' => array(RESPONSIVE_PRIORITY_LOW),
    ),
  );

Themes need to add media queries to their CSS in order to support this feature. See core/themes/stark/css/layout.css for an example.


To remove the default responsive behaviour for an individual table, add '#responsive' => FALSE to the render array:

$table = array(
  '#theme' => 'table__forum_topic_list',
  '#attributes' => array('id' => 'forum-topic-' . $variables['tid']),
  '#header' => array(),
  '#rows' => array(),
  '#responsive' => FALSE,
);
Impacts: 
Site builders, administrators, editors
Module developers
Themers