public function LayoutStyleguide::items in Style Guide 8
Same name and namespace in other branches
- 2.x src/Plugin/Styleguide/LayoutStyleguide.php \Drupal\styleguide\Plugin\Styleguide\LayoutStyleguide::items()
Styleguide elements implementation.
Return value
array An array of Styleguide elements.
Overrides StyleguideInterface::items
File
- src/
Plugin/ Styleguide/ LayoutStyleguide.php, line 83
Class
- LayoutStyleguide
- Renders all found layouts from core Layout Discovery module.
Namespace
Drupal\styleguide\Plugin\StyleguideCode
public function items() {
if (!$this->layoutPluginManager) {
return [];
}
$items = [];
foreach ($this->layoutPluginManager
->getGroupedDefinitions() as $group => $layouts) {
$items[$group] = [
'title' => $group,
'content' => [],
'group' => $this
->t('Layouts'),
];
/** @var \Drupal\Core\Layout\LayoutDefinition $definition */
foreach ($layouts as $layout => $definition) {
$details = [];
if ($property = $definition
->id()) {
$details[] = $this
->t('ID: %property', [
'%property' => $property,
]);
}
if ($property = $definition
->getDescription()) {
$details[] = $this
->t('Description: %property', [
'%property' => $property,
]);
}
if ($property = $definition
->getProvider()) {
$details[] = $this
->t('Provider: %property', [
'%property' => $property,
]);
}
if ($property = $definition
->getDefaultRegion()) {
$details[] = $this
->t('Default region: %property', [
'%property' => $property,
]);
}
if ($property = $definition
->getLibrary()) {
$details[] = $this
->t('Library: %property', [
'%property' => $property,
]);
}
$build = [];
if ($region_labels = $definition
->getRegionLabels()) {
$regions = [];
foreach ($region_labels as $id => $label) {
$regions[$id] = [
'#type' => 'inline_template',
'#template' => '<span class="block-region demo-block">{{ label }} ({{ id }})</span>',
'#context' => [
'id' => $id,
'label' => $label,
],
];
}
$layoutInstance = $this->layoutPluginManager
->createInstance($definition
->id());
$build = $layoutInstance
->build($regions);
}
$items[$group]['content'][$layout] = [
'#type' => 'details',
'#title' => $definition
->getLabel(),
'#open' => FALSE,
'#description' => [
'info' => [
'#type' => 'container',
'#attributes' => [
'class' => 'styleguide__layout-info',
],
'icon' => $definition
->getIcon(60, 80, 1, 3),
'details' => [
'#theme' => 'item_list',
'#items' => $details,
],
],
'body' => [
'build' => $build,
],
],
];
}
}
return $items;
}