Skip to content
Snippets Groups Projects

Issue #3233420: CSSClass option plugin fails to build if there are no options defined.

Open Issue #3233420: CSSClass option plugin fails to build if there are no options defined.
Open John Ferris requested to merge issue/style_options-3233420:3233420-2 into 1.0.x
2 files
+ 24
11
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -66,20 +66,33 @@ class CssClass extends StyleOptionPluginBase {
@@ -66,20 +66,33 @@ class CssClass extends StyleOptionPluginBase {
*/
*/
public function build(array $build) {
public function build(array $build) {
$value = $this->getValue('css_class') ?? NULL;
$value = $this->getValue('css_class') ?? NULL;
$option_definition = $this->getConfiguration()['options'];
$available_options = $this->getConfiguration('options');
if (is_array($value)) {
$classes = [];
$class = implode(' ',
array_map(function ($index) use ($option_definition) {
// Handle open text field values.
return $option_definition[$index]['class'] ?? NULL;
if (!$available_options) {
}, $value)
$classes = $value;
);
}
}
else {
else {
$class = $this->getConfiguration()['options'][$value]['class'] ?? NULL;
if (is_array($value)) {
 
$classes = array_map(function ($index) use ($available_options) {
 
return $available_options[$index]['class'] ?? NULL;
 
}, $value);
 
}
 
else {
 
$classes = $available_options[$value]['class'] ?? NULL;
 
}
 
}
}
if (!empty($class)) {
$build['#attributes']['class'][] = $class;
if (!empty($classes)) {
 
// Ensure $classes is an array so it can be easily manipulated later.
 
$classes = is_array($classes) ? $classes : explode(' ', $classes);
 
foreach ($classes as $class) {
 
$build['#attributes']['class'][] = $class;
 
}
}
}
 
return $build;
return $build;
}
}
Loading