You are here

public static function ActionsDropbutton::processElement in Express 8

Process a specific form element.

Parameters

\Drupal\bootstrap\Utility\Element $element: The element object.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

array $complete_form: The complete form structure.

Overrides ProcessBase::processElement

See also

\Drupal\bootstrap\Plugin\Process\ProcessBase::process()

\Drupal\bootstrap\Plugin\Alter\ElementInfo::alter()

File

themes/contrib/bootstrap/src/Plugin/Process/ActionsDropbutton.php, line 31
Contains \Drupal\bootstrap\Plugin\Process\ActionsDropbutton.

Class

ActionsDropbutton
Replaces the process callback for dropbuttons on an "actions" element.

Namespace

Drupal\bootstrap\Plugin\Process

Code

public static function processElement(Element $element, FormStateInterface $form_state, array &$complete_form) {
  $dropbuttons = Element::create();
  foreach ($element
    ->children(TRUE) as $key => $child) {
    if ($dropbutton = $child
      ->getProperty('dropbutton')) {

      // If there is no dropbutton for this button group yet, create one.
      if (!isset($dropbuttons->{$dropbutton})) {
        $dropbuttons->{$dropbutton} = [
          '#type' => 'dropbutton',
        ];
      }
      $dropbuttons[$dropbutton]['#links'][$key] = $child
        ->getArray();

      // Remove original child from the element so it's not rendered twice.
      $child
        ->setProperty('printed', TRUE);
    }
  }
  $element
    ->exchangeArray($dropbuttons
    ->getArray() + $element
    ->getArray());
}