protected static function ProcessManager::processInputGroups in Express 8
Processes elements that have input groups.
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.
1 call to ProcessManager::processInputGroups()
- ProcessManager::process in themes/
contrib/ bootstrap/ src/ Plugin/ ProcessManager.php - Global #process callback for form elements.
File
- themes/
contrib/ bootstrap/ src/ Plugin/ ProcessManager.php, line 113 - Contains \Drupal\bootstrap\Plugin\ProcessManager.
Class
- ProcessManager
- Manages discovery and instantiation of Bootstrap form process callbacks.
Namespace
Drupal\bootstrap\PluginCode
protected static function processInputGroups(Element $element, FormStateInterface $form_state, array &$complete_form) {
// Automatically inject the nearest button found after this element if
// #input_group_button exists.
if ($element
->getProperty('input_group_button')) {
// Obtain the parent array to limit search.
$array_parents = $element
->getProperty('array_parents', []);
// Remove the current element from the array.
array_pop($array_parents);
// Retrieve the parent element.
$parent = Element::create(NestedArray::getValue($complete_form, $array_parents), $form_state);
// Find the closest button.
if ($button = self::findButton($parent)) {
// Since this button is technically being "moved", it needs to be
// rendered now, so it doesn't get printed twice (in the original spot).
$element
->appendProperty('field_suffix', $button
->setIcon()
->render());
}
}
$input_group_attributes = [
'class' => [
'input-group-' . ($element
->getProperty('input_group_button') ? 'btn' : 'addon'),
],
];
if ($prefix = $element
->getProperty('field_prefix')) {
$element
->setProperty('field_prefix', [
'#type' => 'html_tag',
'#tag' => 'span',
'#attributes' => $input_group_attributes,
'#value' => Element::create($prefix)
->renderPlain(),
'#weight' => -1,
]);
}
if ($suffix = $element
->getProperty('field_suffix')) {
$element
->setProperty('field_suffix', [
'#type' => 'html_tag',
'#tag' => 'span',
'#attributes' => $input_group_attributes,
'#value' => Element::create($suffix)
->renderPlain(),
'#weight' => 1,
]);
}
}