You are here

public static function WebformExcludedBase::processWebformExcluded in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Element/WebformExcludedBase.php \Drupal\webform\Element\WebformExcludedBase::processWebformExcluded()

Processes a webform elements webform element.

File

src/Element/WebformExcludedBase.php, line 37

Class

WebformExcludedBase
Provides a base webform element for webform excluded elements and columns.

Namespace

Drupal\webform\Element

Code

public static function processWebformExcluded(&$element, FormStateInterface $form_state, &$complete_form) {
  $options = static::getWebformExcludedOptions($element);
  $default_value = array_diff(array_keys($options), array_keys($element['#default_value'] ?: []));
  $element['#tree'] = TRUE;

  // Add validate callback.
  $element += [
    '#element_validate' => [],
  ];
  array_unshift($element['#element_validate'], [
    get_called_class(),
    'validateWebformExcluded',
  ]);
  $element['tableselect'] = [
    '#type' => 'tableselect',
    '#header' => static::getWebformExcludedHeader(),
    '#options' => $options,
    '#js_select' => TRUE,
    '#empty' => t('No elements are available.'),
    '#default_value' => array_combine($default_value, $default_value),
  ];
  TableSelect::setProcessTableSelectCallback($element['tableselect']);
  if (isset($element['#parents'])) {
    $element['tableselect']['#parents'] = array_merge($element['#parents'], [
      'tableselect',
    ]);
  }

  // Build tableselect element with selected properties.
  $properties = [
    '#title',
    '#title_display',
    '#description',
    '#description_display',
    '#ajax',
    '#states',
  ];
  $element['tableselect'] += array_intersect_key($element, array_combine($properties, $properties));
  return $element;
}