diff --git a/modules/ui_patterns_ds/src/FieldTemplateProcessor.php b/modules/ui_patterns_ds/src/FieldTemplateProcessor.php index 85d6551367d8c3776cd37c9fe849322d1ca1bd24..3f946791ae61b2445e761aebc2b055852709d985 100644 --- a/modules/ui_patterns_ds/src/FieldTemplateProcessor.php +++ b/modules/ui_patterns_ds/src/FieldTemplateProcessor.php @@ -34,6 +34,7 @@ class FieldTemplateProcessor implements FieldTemplateProcessorInterface { $content['pattern_' . $delta] = [ '#type' => 'pattern', '#id' => $this->getPatternId(), + '#variant' => $this->getVariant(), '#fields' => $fields, '#context' => $this->getContext(), '#multiple_sources' => TRUE, @@ -81,17 +82,42 @@ class FieldTemplateProcessor implements FieldTemplateProcessorInterface { * Pattern ID. */ protected function getPatternId() { - return $this->variables['ds-config']['settings']['pattern']; + return $this->getSetting('pattern'); } /** * Get mapping settings. * - * @return mixed + * @return array * Mapping settings. */ protected function getMapping() { - return $this->variables['ds-config']['settings']['pattern_mapping']; + return $this->getSetting('pattern_mapping', []); + } + + /** + * Get mapping settings. + * + * @return string + * Mapping settings. + */ + protected function getVariant() { + return $this->getSetting('pattern_variant'); + } + + /** + * Get setting value or default to given value if none set. + * + * @param string $name + * Setting name. + * @param string $default + * Setting default value. + * + * @return mixed + * Setting value. + */ + protected function getSetting($name, $default = '') { + return isset($this->variables['ds-config']['settings'][$name]) ? $this->variables['ds-config']['settings'][$name] : $default; } /** diff --git a/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php b/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php index 741159b5c9b24589035845bccbd9b55d5238a649..c0d3c31ba88ea8fae3c45234df4803661e848f8c 100644 --- a/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php +++ b/modules/ui_patterns_ds/src/Plugin/DsFieldTemplate/Pattern.php @@ -131,7 +131,8 @@ class Pattern extends DsFieldTemplateBase implements ContainerFactoryPluginInter public function defaultConfiguration() { return [ 'pattern' => '', - 'pattern_mapping' => '', + 'pattern_variant' => '', + 'pattern_mapping' => [], ]; } diff --git a/src/Form/PatternDisplayFormTrait.php b/src/Form/PatternDisplayFormTrait.php index d433774886f495dbfcd209323c8004a967023c5d..6e3522080dba362558b3a9a294609d1b2414e2d9 100644 --- a/src/Form/PatternDisplayFormTrait.php +++ b/src/Form/PatternDisplayFormTrait.php @@ -43,10 +43,11 @@ trait PatternDisplayFormTrait { /** @var \Drupal\ui_patterns\Definition\PatternDefinition $definition */ foreach ($this->patternsManager->getDefinitions() as $pattern_id => $definition) { if ($definition->hasVariants()) { - $form['pattern_variants'] = [ + $form['pattern_variant'] = [ '#type' => 'select', - '#title' => $this->t('Variants'), + '#title' => $this->t('Variant'), '#options' => $definition->getVariantsAsOptions(), + '#default_value' => isset($configuration['pattern_variant']) ? $configuration['pattern_variant'] : NULL, '#weight' => 0, '#states' => [ 'visible' => [