You are here

public static function PatternLayoutBuilder::processLayoutBuilderRegions in UI Patterns Layout Builder 8

Process layout builder regions.

Layout builder adds foreach region an renderable array after the pattern is built. So reassign the region to fields.

Parameters

array $element: Render array.

Return value

array Render array.

File

src/Element/PatternLayoutBuilder.php, line 34

Class

PatternLayoutBuilder
Renders a pattern element.

Namespace

Drupal\ui_patterns_layout_builder\Element

Code

public static function processLayoutBuilderRegions(array $element) {
  $definiton = UiPatterns::getPatternDefinition($element['#id']);
  if ($definiton != NULL) {
    foreach (Element::children($element) as $key) {
      if ($definiton
        ->hasField($key)) {
        $region_children = Element::children($element[$key]);
        $region_properties = Element::properties($element[$key]);
        if (isset($element['#' . $key]) && is_string($element['#' . $key])) {
          continue;
        }
        foreach ($region_children as $region_key) {
          $element['#' . $key][$region_key] = $element[$key][$region_key];
        }
        foreach ($region_properties as $property_key) {
          if ($property_key === '#attributes') {
            $element['#region_attributes'][$key] = new Attribute($element[$key][$property_key]);
          }
        }

        // Disabled unset region key. Region Used in quick edit.
        // unset($element[$key]);.
      }
    }
  }
  return $element;
}