Commit 28ef6b28 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2152227 by JeroenT, joelpittet, steinmb, steveoliver, hussainweb,...

Issue #2152227 by JeroenT, joelpittet, steinmb, steveoliver, hussainweb, shanethehat, jenlampton, kpa, AnythonyR, EVIIILJ, kgoel, Cottser, dsdeiz, hanpersand: Convert theme_tableselect() to #theme table__tableselect.
parent 17fcc164
Loading
Loading
Loading
Loading
+22 −27
Original line number Diff line number Diff line
@@ -1348,16 +1348,17 @@ function form_process_container($element, FormStateInterface $form_state) {
}

/**
 * Returns HTML for a table with radio buttons or checkboxes.
 * Prepares a 'tableselect' #type element for rendering.
 *
 * @param $variables
 *   An associative array containing:
 *   - element: An associative array containing the properties and children of
 * Adds a column of radio buttons or checkboxes for each row of a table.
 *
 * @param array $element
 *   An associative array containing the properties and children of
 *   the tableselect element. Properties used: #header, #options, #empty,
 *   and #js_select. The #options property is an array of selection options;
 *   each array element of #options is an array of properties. These
 *   properties can include #attributes, which is added to the
 *     table row's HTML attributes; see theme_table(). An example of per-row
 *   table row's HTML attributes; see table.html.twig. An example of per-row
 *   options:
 *   @code
 *     $options = array(
@@ -1387,13 +1388,10 @@ function form_process_container($element, FormStateInterface $form_state) {
 *     );
 *   @endcode
 *
 * @ingroup themeable
 * @return array
 *   The processed element.
 */
function theme_tableselect($variables) {
  $element = $variables['element'];
  $table = array(
    '#type' => 'table',
  );
function form_pre_render_tableselect($element) {
  $rows = array();
  $header = $element['#header'];
  if (!empty($element['#options'])) {
@@ -1433,7 +1431,7 @@ function theme_tableselect($variables) {
    // checkboxes/radios in the first table column.
    if ($element['#js_select']) {
      // Add a "Select all" checkbox.
      $table['#attached']['library'][] = 'core/drupal.tableselect';
      $element['#attached']['library'][] = 'core/drupal.tableselect';
      array_unshift($header, array('class' => array('select-all')));
    }
    else {
@@ -1442,14 +1440,11 @@ function theme_tableselect($variables) {
      array_unshift($header, '');
    }
  }
  $table += array(
    '#header' => $header,
    '#rows' => $rows,
    '#empty' => $element['#empty'],
    '#attributes' => $element['#attributes'],
  );

  return drupal_render($table);
  $element['#header'] = $header;
  $element['#rows'] = $rows;

  return $element;
}

/**
@@ -1541,7 +1536,7 @@ function form_process_tableselect($element) {
 *   The processed element.
 *
 * @see form_process_tableselect()
 * @see theme_tableselect()
 * @see form_pre_render_tableselect()
 */
function form_process_table($element, FormStateInterface $form_state) {
  if ($element['#tableselect']) {
+0 −3
Original line number Diff line number Diff line
@@ -2705,9 +2705,6 @@ function drupal_common_theme() {
      'render element' => 'element',
      'template' => 'textarea',
    ),
    'tableselect' => array(
      'render element' => 'element',
    ),
    'form_element' => array(
      'render element' => 'element',
      'template' => 'form-element',
+4 −1
Original line number Diff line number Diff line
@@ -529,10 +529,13 @@ function system_element_info() {
    '#input' => TRUE,
    '#js_select' => TRUE,
    '#multiple' => TRUE,
    '#responsive' => TRUE,
    '#sticky' => FALSE,
    '#pre_render' => array('drupal_pre_render_table', 'form_pre_render_tableselect'),
    '#process' => array('form_process_tableselect'),
    '#options' => array(),
    '#empty' => '',
    '#theme' => 'tableselect',
    '#theme' => 'table__tableselect',
  );

  // Form structure.