diff --git a/src/Plugin/UiPatterns/SettingType/MachineNameSettingType.php b/src/Plugin/UiPatterns/SettingType/MachineNameSettingType.php new file mode 100644 index 0000000000000000000000000000000000000000..916f0be7c5bd7d699d6a4c2de62235962c2e4614 --- /dev/null +++ b/src/Plugin/UiPatterns/SettingType/MachineNameSettingType.php @@ -0,0 +1,34 @@ +<?php + +namespace Drupal\ui_patterns_settings\Plugin\UiPatterns\SettingType; + +use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting; +use Drupal\ui_patterns_settings\Plugin\PatternSettingTypeBase; + +/** + * MachineName setting type. + * + * @UiPatternsSettingType( + * id = "machine_name", + * label = @Translation("Machine name") + * ) + */ +class MachineNameSettingType extends PatternSettingTypeBase { + + /** + * {@inheritdoc} + */ + public function settingsForm(array $form, $value, PatternDefinitionSetting $def, $form_type) { + $form[$def->getName()] = [ + '#type' => 'textfield', + '#title' => $def->getLabel(), + '#description' => $def->getDescription(), + '#default_value' => $this->getValue($value), + '#pattern' => "[A-Za-z]+[\w\-]*", + ]; + + $this->handleInput($form[$def->getName()], $def, $form_type); + return $form; + } + +} diff --git a/tests/modules/ui_patterns_settings_render_test/templates/pattern-foo-settings.html.twig b/tests/modules/ui_patterns_settings_render_test/templates/pattern-foo-settings.html.twig index cdb8747be51e7602611eed86ce151a9d49d954c0..ad13d83be9176dbcc3221eac0855ad028ae8cb50 100644 --- a/tests/modules/ui_patterns_settings_render_test/templates/pattern-foo-settings.html.twig +++ b/tests/modules/ui_patterns_settings_render_test/templates/pattern-foo-settings.html.twig @@ -15,4 +15,5 @@ <div class="media_style">Media Style: {{ media_style }}</div> <div class="select_config">select_config: {{ pattern_configuration('foo_settings', '', 'select_config')[select_config] }}</div> <div class="value">Value: {{ setting_value }}</div> + <div class="machine_name">Machine name: {{ machine_name }}</div> </div> diff --git a/tests/modules/ui_patterns_settings_render_test/templates/settings.ui_patterns.yml b/tests/modules/ui_patterns_settings_render_test/templates/settings.ui_patterns.yml index d121d6fabcc069063c695efa59c610ecd5876d17..a7a1d709e4fcd2429ca715e8122cab0e7ffbc7ce 100644 --- a/tests/modules/ui_patterns_settings_render_test/templates/settings.ui_patterns.yml +++ b/tests/modules/ui_patterns_settings_render_test/templates/settings.ui_patterns.yml @@ -151,6 +151,9 @@ foo_settings: group: tab_2 options: option1: Option 1 + machine_name: + type: machine_name + label: Machine name configuration: config: config_value diff --git a/tests/src/Functional/UiPatternsSettingsRenderTest.php b/tests/src/Functional/UiPatternsSettingsRenderTest.php index aa7aaf8abdb9e4ed2e5d75761c367beccc4ea79c..02ba9334ce04eda25ceaa53f626fad05ad56c732 100644 --- a/tests/src/Functional/UiPatternsSettingsRenderTest.php +++ b/tests/src/Functional/UiPatternsSettingsRenderTest.php @@ -16,7 +16,7 @@ class UiPatternsSettingsRenderTest extends BrowserTestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'stable'; + protected $defaultTheme = 'stable9'; /** * Disable schema validation when running tests. @@ -85,6 +85,7 @@ class UiPatternsSettingsRenderTest extends BrowserTestBase { 'input' => 'group_sub', 'result' => 'Group sub: group_sub', ], + '[machine_name]' => ['input' => 'key', 'result' => 'Machine name: key'], ]; // Select the layout.