From 3178ab0c5864f0b406a5548375668a7cdb7a9467 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 08:52:43 +0000
Subject: [PATCH 01/15] ISSUE-3508202: Add Gitlab CI.

---
 .gitlab-ci.yml | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..ed0be75
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,38 @@
+################
+# Includes
+#
+# Additional configuration can be provided through includes.
+# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include.
+#
+# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml
+# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values
+################
+
+include:
+  ################
+  # DrupalCI includes:
+  # As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
+  # View these include files at https://git.drupalcode.org/project/gitlab_templates/
+  ################
+  - project: $_GITLAB_TEMPLATES_REPO
+    ref: $_GITLAB_TEMPLATES_REF
+    file:
+      - '/includes/include.drupalci.main.yml'
+      - '/includes/include.drupalci.variables.yml'
+      - '/includes/include.drupalci.workflows.yml'
+
+################
+# Pipeline configuration variables
+#
+# These are the variables provided to the Run Pipeline form that a user may want to override.
+#
+# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/main/includes/include.drupalci.variables.yml
+################
+variables:
+  # Broaden test coverage.
+  _SHOW_ENVIRONMENT_VARIABLES: 1
+  _PHPUNIT_CONCURRENT: 1
+  OPT_IN_TEST_CURRENT: 1
+  OPT_IN_TEST_PREVIOUS_MAJOR: 1
+  OPT_IN_TEST_MIN_PHP: 1
+  OPT_IN_TEST_MAX_PHP: 1
-- 
GitLab


From 30058bb648a1433991750751133511ac601457e5 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 09:53:34 +0000
Subject: [PATCH 02/15] ISSUE-3508202: Add composer.json.

---
 composer.json | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 composer.json

diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..50ce120
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,8 @@
+{
+    "name": "drupal/ui_patterns_settings",
+    "description": "Configure patterns with settings.",
+    "type": "drupal-module",
+    "require": {
+        "drupal/ui_patterns": "^1"
+    }
+}
-- 
GitLab


From bfaf5222f2a5a979e7cdd103212b7d79fa30a116 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 10:12:29 +0000
Subject: [PATCH 03/15] ISSUE-3508202: Add modules required for the tests.

---
 composer.json | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/composer.json b/composer.json
index 50ce120..25f5140 100644
--- a/composer.json
+++ b/composer.json
@@ -4,5 +4,9 @@
     "type": "drupal-module",
     "require": {
         "drupal/ui_patterns": "^1"
+    },
+    "require-dev": {
+        "drupal/ds": "^3",
+        "drupal/token": "^1"
     }
 }
-- 
GitLab


From d63f98b03e009b1fa6d24d4fb224823a01ad100a Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 10:33:41 +0000
Subject: [PATCH 04/15] ISSUE-3508202: Fix implicitly marking parameter  as
 nullable is deprecated.

---
 src/UiPatternsSettings.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/UiPatternsSettings.php b/src/UiPatternsSettings.php
index dad1efe..17f386e 100644
--- a/src/UiPatternsSettings.php
+++ b/src/UiPatternsSettings.php
@@ -90,7 +90,7 @@ class UiPatternsSettings {
    * @return array
    *   The processed settings.
    */
-  public static function preprocess($pattern_id, array $settings, $variant, $preview, EntityInterface $entity = NULL, &$element = NULL) {
+  public static function preprocess($pattern_id, array $settings, $variant, $preview, ?EntityInterface $entity = NULL, &$element = NULL) {
     $processed_settings = [];
     $definition = UiPatterns::getPatternDefinition($pattern_id);
     $context = [];
-- 
GitLab


From 53e9b29d89b921eb1931d11ffa98f75cece872ea Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 10:40:26 +0000
Subject: [PATCH 05/15] ISSUE-3508202: Ignore \Drupal calls should be avoided
 in classes.

---
 src/Plugin/TokenSettingTypeBase.php | 1 +
 src/UiPatternsSettingsManager.php   | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/Plugin/TokenSettingTypeBase.php b/src/Plugin/TokenSettingTypeBase.php
index 4913ee3..85c56bc 100644
--- a/src/Plugin/TokenSettingTypeBase.php
+++ b/src/Plugin/TokenSettingTypeBase.php
@@ -106,6 +106,7 @@ abstract class TokenSettingTypeBase extends PatternSettingTypeBase implements Co
    */
   public function getTokenService() {
     if (!$this->tokenService) {
+      // @phpstan-ignore-next-line
       $this->tokenService = \Drupal::token();
     }
 
diff --git a/src/UiPatternsSettingsManager.php b/src/UiPatternsSettingsManager.php
index eb53b91..db6b3ea 100644
--- a/src/UiPatternsSettingsManager.php
+++ b/src/UiPatternsSettingsManager.php
@@ -54,6 +54,7 @@ class UiPatternsSettingsManager extends DefaultPluginManager implements PluginMa
     $plugin_class = DefaultFactory::getPluginClass($plugin_id, $plugin_definition);
     // If the plugin provides a factory method, pass the container to it.
     if (is_subclass_of($plugin_class, 'Drupal\Core\Plugin\ContainerFactoryPluginInterface')) {
+      // @phpstan-ignore-next-line
       $plugin = $plugin_class::create(\Drupal::getContainer(), $configuration, $plugin_id, $plugin_definition);
     }
     else {
-- 
GitLab


From 8dfd223c27faa253159c7159ad7875a8aea73ab9 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 10:43:53 +0000
Subject: [PATCH 06/15] ISSUE-3508202: Fix implicitly nullable via default
 value null.

---
 src/Plugin/PatternSettingTypeBase.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Plugin/PatternSettingTypeBase.php b/src/Plugin/PatternSettingTypeBase.php
index 85e96f8..6d3251c 100644
--- a/src/Plugin/PatternSettingTypeBase.php
+++ b/src/Plugin/PatternSettingTypeBase.php
@@ -406,7 +406,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
    */
   public static function formGroupProcess(
     array &$element,
-    FormStateInterface $form_state = NULL,
+    ?FormStateInterface $form_state = NULL,
     &$form = []
   ) {
     if (isset($element['#pattern_setting_definition'])) {
-- 
GitLab


From 7b5885c8d10e4151741c56032f021a8bef91b986 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 11:24:46 +0000
Subject: [PATCH 07/15] ISSUE-3508202: Fix js standards.

---
 js/ui_pattern_settings.toggle_token.js | 40 ++++++++++++++++----------
 1 file changed, 25 insertions(+), 15 deletions(-)

diff --git a/js/ui_pattern_settings.toggle_token.js b/js/ui_pattern_settings.toggle_token.js
index 2bd98be..d14f08c 100644
--- a/js/ui_pattern_settings.toggle_token.js
+++ b/js/ui_pattern_settings.toggle_token.js
@@ -4,9 +4,6 @@
  */
 
 (function ($, Drupal, drupalSettings, DrupalCoffee) {
-
-  'use strict';
-
   /**
    * Attaches ui patterns settings module behaviors.
    *
@@ -20,18 +17,29 @@
    */
   Drupal.behaviors.ups_toggle_token = {
     attach: function () {
-      once('ui-patterns-settings-show-token-link', '.js-ui-patterns-settings-show-token-link').forEach(function (elm) {
-        $(elm).after($('<a href="#" class="ui-patterns-settings-show-token-a">' + Drupal.t('Browse available token') + '</a>').click(function (event) {
-          event.preventDefault();
-          $('#ui-patterns-settings-token-link:first a').click();
-        }));
+      once('ui-patterns-settings-show-token-link',
+        '.js-ui-patterns-settings-show-token-link'
+      ).forEach(function (elm) {
+        $(elm).after($(
+          '<a href="#" class="ui-patterns-settings-show-token-a">' +
+          Drupal.t('Browse available token') +
+          '</a>').click(function (event) {
+            event.preventDefault();
+            $('#ui-patterns-settings-token-link:first a').click();
+          }),
+        );
       });
 
-      once('ui-patterns-settings-wrapper', '.js-ui-patterns-settings__wrapper').forEach(function (el) {
-        var wrapper = $(el);
-        var toggler = $('<div class="js-ui-patterns-settings__toggler" title="Use token"></div>');
+      once(
+        'ui-patterns-settings-wrapper',
+        '.js-ui-patterns-settings__wrapper'
+      ).forEach(function (el) {
+        let wrapper = $(el);
+        let toggler = $(
+          '<div class="js-ui-patterns-settings__toggler" title="Use token"></div>'
+        );
         $(toggler).click(function () {
-          var tokenInput = $('.js-ui-patterns-settings__token', wrapper);
+          let tokenInput = $('.js-ui-patterns-settings__token', wrapper);
           if ($(wrapper).hasClass('js-ui-patterns-settings--token-has-value')) {
             tokenInput.attr('data-init-val', tokenInput.val());
             tokenInput.val('');
@@ -41,9 +49,11 @@
             wrapper.addClass('js-ui-patterns-settings--token-has-value');
           }
         });
-        $('.js-ui-patterns-settings__input-wrapper', wrapper).append(toggler)
-        $('.js-ui-patterns-settings__token-wrapper', wrapper).append(toggler.clone(true))
+        $('.js-ui-patterns-settings__input-wrapper', wrapper).append(toggler);
+        $('.js-ui-patterns-settings__token-wrapper', wrapper).append(
+          toggler.clone(true),
+        )
       });
-    }
+    },
   };
 })(jQuery, Drupal, drupalSettings);
-- 
GitLab


From db0d5c2cb9abbdd695691af3869255e52bf186a2 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 13:19:04 +0000
Subject: [PATCH 08/15] ISSUE-3508202: Fix more js standards.

---
 js/ui_pattern_settings.toggle_token.js | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/js/ui_pattern_settings.toggle_token.js b/js/ui_pattern_settings.toggle_token.js
index d14f08c..fe84ad6 100644
--- a/js/ui_pattern_settings.toggle_token.js
+++ b/js/ui_pattern_settings.toggle_token.js
@@ -17,13 +17,15 @@
    */
   Drupal.behaviors.ups_toggle_token = {
     attach: function () {
-      once('ui-patterns-settings-show-token-link',
-        '.js-ui-patterns-settings-show-token-link'
+      once(
+        'ui-patterns-settings-show-token-link',
+        '.js-ui-patterns-settings-show-token-link',
       ).forEach(function (elm) {
-        $(elm).after($(
-          '<a href="#" class="ui-patterns-settings-show-token-a">' +
-          Drupal.t('Browse available token') +
-          '</a>').click(function (event) {
+        $(elm).after(
+          $('<a href="#" class="ui-patterns-settings-show-token-a">' +
+            Drupal.t('Browse available token') +
+            '</a>',
+          ).click(function (event) {
             event.preventDefault();
             $('#ui-patterns-settings-token-link:first a').click();
           }),
@@ -32,14 +34,14 @@
 
       once(
         'ui-patterns-settings-wrapper',
-        '.js-ui-patterns-settings__wrapper'
+        '.js-ui-patterns-settings__wrapper',
       ).forEach(function (el) {
-        let wrapper = $(el);
-        let toggler = $(
-          '<div class="js-ui-patterns-settings__toggler" title="Use token"></div>'
+        const wrapper = $(el);
+        const toggler = $(
+          '<div class="js-ui-patterns-settings__toggler" title="Use token"></div>',
         );
         $(toggler).click(function () {
-          let tokenInput = $('.js-ui-patterns-settings__token', wrapper);
+          const tokenInput = $('.js-ui-patterns-settings__token', wrapper);
           if ($(wrapper).hasClass('js-ui-patterns-settings--token-has-value')) {
             tokenInput.attr('data-init-val', tokenInput.val());
             tokenInput.val('');
@@ -52,7 +54,7 @@
         $('.js-ui-patterns-settings__input-wrapper', wrapper).append(toggler);
         $('.js-ui-patterns-settings__token-wrapper', wrapper).append(
           toggler.clone(true),
-        )
+        );
       });
     },
   };
-- 
GitLab


From bc15e29f4bf2678b1757a699c3958f390664268a Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 14:13:03 +0000
Subject: [PATCH 09/15] ISSUE-3508202: Fix more js standards.

---
 js/ui_pattern_settings.toggle_token.js | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/js/ui_pattern_settings.toggle_token.js b/js/ui_pattern_settings.toggle_token.js
index fe84ad6..a607454 100644
--- a/js/ui_pattern_settings.toggle_token.js
+++ b/js/ui_pattern_settings.toggle_token.js
@@ -12,19 +12,20 @@
    * @type {Drupal~behavior}
    *
    * @prop {Drupal~behaviorAttach} attach
-   *   Attach  ui patterns settings toggle functionality to the page.
+   *   Attach ui patterns settings toggle functionality to the page.
    *
    */
   Drupal.behaviors.ups_toggle_token = {
-    attach: function () {
+    attach() {
       once(
         'ui-patterns-settings-show-token-link',
         '.js-ui-patterns-settings-show-token-link',
       ).forEach(function (elm) {
         $(elm).after(
-          $('<a href="#" class="ui-patterns-settings-show-token-a">' +
-            Drupal.t('Browse available token') +
-            '</a>',
+          $(
+              `<a href="#" class="ui-patterns-settings-show-token-a">
+              ${Drupal.t('Browse available token')}
+              </a>`,
           ).click(function (event) {
             event.preventDefault();
             $('#ui-patterns-settings-token-link:first a').click();
-- 
GitLab


From b5fe57b5c32ef68c6a1156405fd711089e29f955 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 14:13:23 +0000
Subject: [PATCH 10/15] ISSUE-3508202: Fix typos.

---
 README.md                                          |  2 +-
 src/Form/SettingsFormBuilder.php                   | 14 +++++++-------
 src/Plugin/ComplexSettingTypeBase.php              |  2 +-
 src/Plugin/PatternSettingTypeInterface.php         |  4 ++--
 .../UiPatterns/SettingType/LinksSettingType.php    |  2 +-
 .../UiPatterns/Source/SettingFieldSource.php       |  2 +-
 src/UiPatternsSettings.php                         |  2 +-
 7 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/README.md b/README.md
index 6f9dac4..e3f2e35 100644
--- a/README.md
+++ b/README.md
@@ -81,7 +81,7 @@ You can easily create your own setting types.
 - attributes
 - token
 - url (Generates urls from uri or user input. 
-  Tokens are accepted. Useful for linkfield uris?)
+  Tokens are accepted. Useful for link field uris?)
 
 REQUIREMENTS
 ------------
diff --git a/src/Form/SettingsFormBuilder.php b/src/Form/SettingsFormBuilder.php
index 942bb3c..1b8df84 100644
--- a/src/Form/SettingsFormBuilder.php
+++ b/src/Form/SettingsFormBuilder.php
@@ -45,9 +45,9 @@ class SettingsFormBuilder {
     if (!empty($entity_type_id)) {
       $content_entity_types[] = $entity_type_id;
     } else {
-      $entity_type_definations = \Drupal::entityTypeManager()->getDefinitions();
+      $entity_type_definitions = \Drupal::entityTypeManager()->getDefinitions();
       /** @var EntityTypeInterface $definition */
-      foreach ($entity_type_definations as $definition) {
+      foreach ($entity_type_definitions as $definition) {
         if ($definition instanceof ContentEntityType) {
           $content_entity_types[] = $definition->id();
         }
@@ -225,19 +225,19 @@ class SettingsFormBuilder {
     foreach ($settings as $setting_name => $setting) {
       $states = $setting->getStates();
       if (!is_null($states) && count($states) !== 0) {
-        foreach ($states as $visibilty => $conditions) {
+        foreach ($states as $visibility => $conditions) {
           foreach ($conditions as $state) {
             if (isset($state['variant'])) {
-              $fieldset[$setting_name]['#states'][$visibilty][][$variant_selector]['value'] = $state['variant'];
+              $fieldset[$setting_name]['#states'][$visibility][][$variant_selector]['value'] = $state['variant'];
               if (isset($fieldset[$setting_name . '_token'])) {
-                $fieldset[$setting_name . '_token']['#states'][$visibilty][][$variant_selector]['value'] = $state['variant'];
+                $fieldset[$setting_name . '_token']['#states'][$visibility][][$variant_selector]['value'] = $state['variant'];
               }
             }
             if (isset($state['setting'])) {
               $setting_select = '.js-ui-patterns-settings-' . $state['setting'];
-              $fieldset[$setting_name]['#states'][$visibilty][][$setting_select]['value'] = $state['value'];
+              $fieldset[$setting_name]['#states'][$visibility][][$setting_select]['value'] = $state['value'];
               if (isset($fieldset[$setting_name . '_token'])) {
-                $fieldset[$setting_name . '_token']['#states'][$visibilty][][$setting_select]['value'] = $state['value'];
+                $fieldset[$setting_name . '_token']['#states'][$visibility][][$setting_select]['value'] = $state['value'];
               }
             }
           }
diff --git a/src/Plugin/ComplexSettingTypeBase.php b/src/Plugin/ComplexSettingTypeBase.php
index ead5ac2..66ca5f0 100644
--- a/src/Plugin/ComplexSettingTypeBase.php
+++ b/src/Plugin/ComplexSettingTypeBase.php
@@ -56,7 +56,7 @@ abstract class ComplexSettingTypeBase extends PatternSettingTypeBase implements
     $provider_select_id = $def->getName(). '_provider';
     $form[$def->getName()]['provider'] = [
       '#type' => 'select',
-      '#title' => $this->t('Dataprovider'),
+      '#title' => $this->t('Data provider'),
       '#default_value' => $this->getValue($value['provider'] ?? NULL),
       '#options' => $provider_options,
       '#attributes'=> ['id' => $provider_select_id]
diff --git a/src/Plugin/PatternSettingTypeInterface.php b/src/Plugin/PatternSettingTypeInterface.php
index 49bf7c3..93ec161 100644
--- a/src/Plugin/PatternSettingTypeInterface.php
+++ b/src/Plugin/PatternSettingTypeInterface.php
@@ -35,7 +35,7 @@ interface PatternSettingTypeInterface extends ConfigurableInterface {
    * @param string $value
    *   The stored value.
    * @param array $context
-   *   Context informations.
+   *   Context information.
    *   Keys:
    *    - entity.
    * @param \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting $def
@@ -52,7 +52,7 @@ interface PatternSettingTypeInterface extends ConfigurableInterface {
    * @param string $value
    *   The stored value.
    * @param array $context
-   *   Context informations.
+   *   Context information.
    *
    * @return mixed
    *   The processed value.
diff --git a/src/Plugin/UiPatterns/SettingType/LinksSettingType.php b/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
index 75569fd..c1bdd53 100644
--- a/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
@@ -68,7 +68,7 @@ class LinksSettingType extends ComplexSettingTypeBase {
   }
 
   /**
-   * Normaize URL in an item.
+   * Normalize URL in an item.
    *
    * Useful for: menu.html.twig, links.html.twig.
    */
diff --git a/src/Plugin/UiPatterns/Source/SettingFieldSource.php b/src/Plugin/UiPatterns/Source/SettingFieldSource.php
index 239b69c..6cc709c 100644
--- a/src/Plugin/UiPatterns/Source/SettingFieldSource.php
+++ b/src/Plugin/UiPatterns/Source/SettingFieldSource.php
@@ -11,7 +11,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *
  * @UiPatternsSource(
  *   id = "settings_field",
- *   label = @Translation("Seting Fields (UI Pattern settings)"),
+ *   label = @Translation("Setting Fields (UI Pattern settings)"),
  *   provider = "ui_patterns_settings",
  *   tags = {
  *     "field_properties"
diff --git a/src/UiPatternsSettings.php b/src/UiPatternsSettings.php
index 17f386e..5cdcfc8 100644
--- a/src/UiPatternsSettings.php
+++ b/src/UiPatternsSettings.php
@@ -267,7 +267,7 @@ class UiPatternsSettings {
    *   The definition.
    *
    * @return \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting[]
-   *   Setting pattern definitons.
+   *   Setting pattern definitions.
    */
   public static function getPatternDefinitionSettings(PatternDefinition $definition) {
     if (isset(self::$settings[$definition->id()])) {
-- 
GitLab


From 909bf3b054243aa444f0f7b8ddd72034ad0c7019 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 14:18:38 +0000
Subject: [PATCH 11/15] ISSUE-3508202: Fix more typos.

---
 src/UiPatternsSettings.php | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/UiPatternsSettings.php b/src/UiPatternsSettings.php
index 5cdcfc8..2a9f872 100644
--- a/src/UiPatternsSettings.php
+++ b/src/UiPatternsSettings.php
@@ -290,18 +290,18 @@ class UiPatternsSettings {
    *
    * @param \Drupal\ui_patterns\Definition\PatternDefinition $pattern_definition
    *   The pattern definition.
-   * @param \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting $setting_defintion
+   * @param \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting $setting_definition
    *   The setting definition.
    *
    * @return \Drupal\ui_patterns_settings\Plugin\PatternSettingTypeInterface
    *   UI Patterns setting manager instance.
    */
-  public static function createSettingType(PatternDefinition $pattern_definition, PatternDefinitionSetting $setting_defintion) {
+  public static function createSettingType(PatternDefinition $pattern_definition, PatternDefinitionSetting $setting_definition) {
     $configuration = [];
-    $configuration['pattern_setting_definition'] = $setting_defintion;
+    $configuration['pattern_setting_definition'] = $setting_definition;
     $configuration['pattern_definition'] = $pattern_definition;
     return \Drupal::service('plugin.manager.ui_patterns_settings')
-      ->createInstance($setting_defintion->getType(), $configuration);
+      ->createInstance($setting_definition->getType(), $configuration);
   }
 
 }
-- 
GitLab


From b442e6982093bab9667996d8e40be94b7db6a5d8 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 14:19:15 +0000
Subject: [PATCH 12/15] ISSUE-3508202: Ignore some cspell words.

---
 .cspell-project-words.txt | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 .cspell-project-words.txt

diff --git a/.cspell-project-words.txt b/.cspell-project-words.txt
new file mode 100644
index 0000000..15a3639
--- /dev/null
+++ b/.cspell-project-words.txt
@@ -0,0 +1,3 @@
+colorwidget
+coloriswidget
+exposable
-- 
GitLab


From e03db81f3d93f8a69222c3baf0d244aceca5da2d Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 14:37:04 +0000
Subject: [PATCH 13/15] ISSUE-3508202: Ignore some cspell words.

---
 .cspell-project-words.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.cspell-project-words.txt b/.cspell-project-words.txt
index 15a3639..0c01d8e 100644
--- a/.cspell-project-words.txt
+++ b/.cspell-project-words.txt
@@ -1,3 +1,4 @@
+coloris
 colorwidget
 coloriswidget
 exposable
-- 
GitLab


From 3bc65d49694cf82c9538558e125994a66b037a54 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 14:40:21 +0000
Subject: [PATCH 14/15] ISSUE-3508202: Fix phpcs.

---
 js/ui_pattern_settings.toggle_token.js        |  6 ++--
 .../UiPatternsSettingDataProvider.php         |  1 +
 src/Definition/PatternDefinitionSetting.php   |  8 +++--
 src/Element/PatternSettings.php               |  8 +++--
 src/Form/SettingsFormBuilder.php              | 16 +++++-----
 src/Plugin/ComplexSettingTypeBase.php         |  9 +++---
 src/Plugin/EnumerationSettingTypeBase.php     |  2 +-
 .../LanguageCheckboxesSettingTypeBase.php     |  4 +--
 src/Plugin/PatternSettingDataProviderBase.php |  6 ++--
 .../PatternSettingDataProviderInterface.php   |  2 ++
 src/Plugin/PatternSettingTypeBase.php         | 22 +++++++-------
 src/Plugin/RoleCheckboxesSettingTypeBase.php  |  5 ++--
 .../BreadcrumbDataProvider.php                |  6 ++--
 .../SettingDataProvider/MenuDataProvider.php  |  6 ++--
 .../SettingType/ColorisWidgetSettingType.php  |  6 ++--
 .../LanguageCheckboxesSettingType.php         |  4 ---
 .../SettingType/LinksSettingType.php          |  1 +
 .../SettingType/MediaLibrarySettingType.php   |  6 ++--
 .../SettingType/ValueSettingType.php          |  9 ++++--
 src/UiPatternsSettings.php                    | 13 +++++---
 src/UiPatternsSettingsDataProviderManager.php |  9 ++++++
 .../SettingType/SampleComplexSettingType.php  |  2 --
 tests/src/Kernel/ComplexSettingTypeTest.php   | 24 ++++++++++-----
 ui_patterns_settings.api.php                  |  6 ++--
 ui_patterns_settings.module                   | 30 ++++++++++++-------
 25 files changed, 123 insertions(+), 88 deletions(-)

diff --git a/js/ui_pattern_settings.toggle_token.js b/js/ui_pattern_settings.toggle_token.js
index a607454..2efcc53 100644
--- a/js/ui_pattern_settings.toggle_token.js
+++ b/js/ui_pattern_settings.toggle_token.js
@@ -23,9 +23,9 @@
       ).forEach(function (elm) {
         $(elm).after(
           $(
-              `<a href="#" class="ui-patterns-settings-show-token-a">
-              ${Drupal.t('Browse available token')}
-              </a>`,
+            `<a href="#" class="ui-patterns-settings-show-token-a">
+            ${Drupal.t('Browse available token')}
+            </a>`,
           ).click(function (event) {
             event.preventDefault();
             $('#ui-patterns-settings-token-link:first a').click();
diff --git a/src/Annotation/UiPatternsSettingDataProvider.php b/src/Annotation/UiPatternsSettingDataProvider.php
index 12f9219..0bc3162 100644
--- a/src/Annotation/UiPatternsSettingDataProvider.php
+++ b/src/Annotation/UiPatternsSettingDataProvider.php
@@ -42,4 +42,5 @@ class UiPatternsSettingDataProvider extends Plugin {
    * @var string
    */
   public $settingType;
+
 }
diff --git a/src/Definition/PatternDefinitionSetting.php b/src/Definition/PatternDefinitionSetting.php
index a458a08..8ecd754 100644
--- a/src/Definition/PatternDefinitionSetting.php
+++ b/src/Definition/PatternDefinitionSetting.php
@@ -71,7 +71,8 @@ class PatternDefinitionSetting implements \ArrayAccess {
             $processed_options[$option_key] = $option_value;
           }
         }
-      } else {
+      } 
+      else {
         $processed_options = NULL;
       }
       $this->definition['options'] = $processed_options;
@@ -87,7 +88,7 @@ class PatternDefinitionSetting implements \ArrayAccess {
   /**
    * Overwrite setting definition.
    *
-   * @param $definitions
+   * @param array $definitions
    *   The overwritten definitions.
    */
   public function setDefinitions($definitions) {
@@ -328,6 +329,7 @@ class PatternDefinitionSetting implements \ArrayAccess {
     $this->definition['form_visible'] = $visible;
     return $this;
   }
+
   /**
    * Get Type property.
    *
@@ -341,7 +343,7 @@ class PatternDefinitionSetting implements \ArrayAccess {
   /**
    * Set Expose property.
    *
-   * @param string $type
+   * @param string $expose_as_field
    *   Property value.
    *
    * @return $this
diff --git a/src/Element/PatternSettings.php b/src/Element/PatternSettings.php
index 55d67c6..47efa5a 100644
--- a/src/Element/PatternSettings.php
+++ b/src/Element/PatternSettings.php
@@ -121,9 +121,11 @@ class PatternSettings implements TrustedCallbackInterface {
           }
           elseif (is_array($element[$key]) && is_array($setting)) {
             $element[$key] = array_merge($element[$key], $setting);
-          } elseif (empty($element[$key]) && !empty($setting)) {
-            // Handle Exposed fields. Overwrite expose fields if the setting is provided
-            // but the variable prefilled with an empty field. (e.g. component blocks)
+          } 
+          elseif (empty($element[$key]) && !empty($setting)) {
+            // Handle Exposed fields. Overwrite expose fields if the setting is 
+            // provided but the variable prefilled with an empty field.
+            // (e.g. component blocks)
             $setting_definition = UiPatternsSettings::getPatternDefinitionSetting(UiPatterns::getPatternDefinition($pattern_id), $name);
             if ($setting_definition !== NULL && $setting_definition->getExposeAsField()) {
               $element[$key] = $setting;
diff --git a/src/Form/SettingsFormBuilder.php b/src/Form/SettingsFormBuilder.php
index 1b8df84..c0b172d 100644
--- a/src/Form/SettingsFormBuilder.php
+++ b/src/Form/SettingsFormBuilder.php
@@ -5,11 +5,8 @@ namespace Drupal\ui_patterns_settings\Form;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Entity\ContentEntityType;
 use Drupal\Core\Form\FormState;
-use Drupal\Core\Render\Element;
-use Drupal\Core\Render\Element\Form;
 use Drupal\ui_patterns\Definition\PatternDefinition;
 use Drupal\ui_patterns\UiPatterns;
-use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting;
 use Drupal\ui_patterns_settings\UiPatternsSettings;
 use Drupal\ui_patterns_settings\UiPatternsSettingsManager;
 
@@ -31,7 +28,7 @@ class SettingsFormBuilder {
   private static function buildTokenLink(array &$form) {
 
     // Detecting current entity type.
-    // We don't have access to
+    // We don't have access to.
     $request = \Drupal::request();
     $entity_type_id = $request->attributes->get('entity_type_id');
     if (empty($entity_type_id)) {
@@ -44,7 +41,8 @@ class SettingsFormBuilder {
 
     if (!empty($entity_type_id)) {
       $content_entity_types[] = $entity_type_id;
-    } else {
+    } 
+    else {
       $entity_type_definitions = \Drupal::entityTypeManager()->getDefinitions();
       /** @var EntityTypeInterface $definition */
       foreach ($entity_type_definitions as $definition) {
@@ -84,7 +82,7 @@ class SettingsFormBuilder {
 
     $form['#attached']['library'][] = 'ui_patterns_settings/widget';
     if (UiPatternsSettingsManager::allowVariantToken($definition)) {
-      $variant_token_value = isset($configuration['pattern']['variant_token']) ? $configuration['pattern']['variant_token'] : NULL;
+      $variant_token_value = $configuration['pattern']['variant_token'] ?? NULL;
       $form['variant_token'] = [
         '#type' => 'textfield',
         '#title' => 'Variant token',
@@ -212,7 +210,7 @@ class SettingsFormBuilder {
   /**
    * Build settings form.
    *
-   * @param string $select_selector
+   * @param string $variant_selector
    *   The id of the variant select field.
    * @param array $fieldset
    *   The fieldset.
@@ -221,7 +219,7 @@ class SettingsFormBuilder {
    */
   private static function buildStatesForm($variant_selector, array &$fieldset, PatternDefinition $definition) {
     $settings = UiPatternsSettings::getPatternDefinitionSettings($definition);
-    /** @var PatternDefinitionSetting $setting */
+    /** @var \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting $setting */
     foreach ($settings as $setting_name => $setting) {
       $states = $setting->getStates();
       if (!is_null($states) && count($states) !== 0) {
@@ -246,7 +244,7 @@ class SettingsFormBuilder {
     }
   }
 
-   /**
+  /**
    * Hide all settings which are configured by the variant.
    *
    * @param string $select_selector
diff --git a/src/Plugin/ComplexSettingTypeBase.php b/src/Plugin/ComplexSettingTypeBase.php
index 66ca5f0..7094370 100644
--- a/src/Plugin/ComplexSettingTypeBase.php
+++ b/src/Plugin/ComplexSettingTypeBase.php
@@ -53,13 +53,13 @@ abstract class ComplexSettingTypeBase extends PatternSettingTypeBase implements
       '#title' => $def->getLabel(),
     ];
 
-    $provider_select_id = $def->getName(). '_provider';
+    $provider_select_id = $def->getName() . '_provider';
     $form[$def->getName()]['provider'] = [
       '#type' => 'select',
       '#title' => $this->t('Data provider'),
       '#default_value' => $this->getValue($value['provider'] ?? NULL),
       '#options' => $provider_options,
-      '#attributes'=> ['id' => $provider_select_id]
+      '#attributes' => ['id' => $provider_select_id],
     ];
 
     $form[$def->getName()]['configuration'] = [];
@@ -68,7 +68,8 @@ abstract class ComplexSettingTypeBase extends PatternSettingTypeBase implements
       $data_provider_id = $data_provider_definition['id'];
       $provider_settings_form = $provider_plugins[$data_provider_id]->settingsForm($value['configuration'][$data_provider_id]['config'] ?? []);
       if ($provider_settings_form) {
-        $form[$def->getName()]['configuration'][$data_provider_id] = ['#type' => 'container',
+        $form[$def->getName()]['configuration'][$data_provider_id] = [
+          '#type' => 'container',
           '#states' => [
             'visible' => [
               'select[id="' . $provider_select_id . '"]' => ['value' => $data_provider_id],
@@ -87,7 +88,7 @@ abstract class ComplexSettingTypeBase extends PatternSettingTypeBase implements
   public function settingsPreprocess(
     $value,
     array $context,
-    PatternDefinitionSetting $def
+    PatternDefinitionSetting $def,
   ) {
     $provider_id = $value['provider'] ?? NULL;
     if ($provider_id) {
diff --git a/src/Plugin/EnumerationSettingTypeBase.php b/src/Plugin/EnumerationSettingTypeBase.php
index b466d0e..72cfd6d 100644
--- a/src/Plugin/EnumerationSettingTypeBase.php
+++ b/src/Plugin/EnumerationSettingTypeBase.php
@@ -51,7 +51,7 @@ abstract class EnumerationSettingTypeBase extends PatternSettingTypeBase {
    * Returns the enumeration options.
    *
    * @param \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting $def
-   *  The pattern definition.
+   *   The pattern definition.
    *
    * @return mixed
    *   The options.
diff --git a/src/Plugin/LanguageCheckboxesSettingTypeBase.php b/src/Plugin/LanguageCheckboxesSettingTypeBase.php
index faaf951..64cdff9 100644
--- a/src/Plugin/LanguageCheckboxesSettingTypeBase.php
+++ b/src/Plugin/LanguageCheckboxesSettingTypeBase.php
@@ -101,8 +101,8 @@ class LanguageCheckboxesSettingTypeBase extends EnumerationSettingTypeBase {
   public static function create(
     ContainerInterface $container,
     array $configuration,
-                       $plugin_id,
-                       $plugin_definition
+    $plugin_id,
+    $plugin_definition,
   ) {
     $plugin = parent::create($container, $configuration, $plugin_id, $plugin_definition);
     $plugin->languageManager = $container->get('language_manager');
diff --git a/src/Plugin/PatternSettingDataProviderBase.php b/src/Plugin/PatternSettingDataProviderBase.php
index e66903e..3c93456 100644
--- a/src/Plugin/PatternSettingDataProviderBase.php
+++ b/src/Plugin/PatternSettingDataProviderBase.php
@@ -39,7 +39,7 @@ abstract class PatternSettingDataProviderBase extends PluginBase implements Patt
     $plugin_id,
     array $plugin_definition,
     ModuleHandlerInterface $module_handler,
-    EntityTypeManagerInterface $entity_type_manager
+    EntityTypeManagerInterface $entity_type_manager,
   ) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
     $this->entityTypeManager = $entity_type_manager;
@@ -47,13 +47,13 @@ abstract class PatternSettingDataProviderBase extends PluginBase implements Patt
   }
 
   /**
-   *
+   * {@inheritdoc}
    */
   public static function create(
     ContainerInterface $container,
     array $configuration,
     $plugin_id,
-    $plugin_definition
+    $plugin_definition,
   ) {
     $plugin = new static(
       $configuration,
diff --git a/src/Plugin/PatternSettingDataProviderInterface.php b/src/Plugin/PatternSettingDataProviderInterface.php
index 10c20e5..bc9e35f 100644
--- a/src/Plugin/PatternSettingDataProviderInterface.php
+++ b/src/Plugin/PatternSettingDataProviderInterface.php
@@ -26,6 +26,8 @@ interface PatternSettingDataProviderInterface {
   public function settingsForm($value);
 
   /**
+   * Return the data.
+   *
    * @return array
    *   The provided data.
    */
diff --git a/src/Plugin/PatternSettingTypeBase.php b/src/Plugin/PatternSettingTypeBase.php
index 6d3251c..7d1dad2 100644
--- a/src/Plugin/PatternSettingTypeBase.php
+++ b/src/Plugin/PatternSettingTypeBase.php
@@ -17,9 +17,9 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  * Base class for UI Patterns Setting plugins.
  */
 abstract class PatternSettingTypeBase extends PluginBase implements
-    ConfigurableInterface,
-    PatternSettingTypeInterface,
-    ContainerFactoryPluginInterface {
+  ConfigurableInterface,
+  PatternSettingTypeInterface,
+  ContainerFactoryPluginInterface {
 
   /**
    * Returns a list of plugin dependencies.
@@ -74,7 +74,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
     $plugin_id,
     array $plugin_definition,
     ModuleHandlerInterface $module_handler,
-    EntityTypeManagerInterface $entity_type_manager
+    EntityTypeManagerInterface $entity_type_manager,
   ) {
     $configuration += $this->defaultConfiguration();
     $this->patternSettingDefinition = $configuration['pattern_setting_definition'];
@@ -121,7 +121,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
     ContainerInterface $container,
     array $configuration,
     $plugin_id,
-    $plugin_definition
+    $plugin_definition,
   ) {
     $plugin = new static(
       $configuration,
@@ -223,7 +223,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
   public function settingsPreprocess(
     $value,
     array $context,
-    PatternDefinitionSetting $def
+    PatternDefinitionSetting $def,
   ) {
     return $value;
   }
@@ -244,7 +244,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
   protected function tokenForm(
     array $form,
     $value,
-    PatternDefinitionSetting $def
+    PatternDefinitionSetting $def,
   ) {
     $form[$def->getName() . "_token"] = [
       '#type' => 'textfield',
@@ -274,7 +274,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
   public static function validateLayout(
     array $element,
     FormStateInterface &$form_state,
-    array &$form
+    array &$form,
   ) {
     $parents = $element['#parents'];
     $value = $form_state->getValue($parents);
@@ -324,7 +324,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
   protected function handleInput(
     array &$input,
     PatternDefinitionSetting $def,
-    $form_type
+    $form_type,
   ) {
     $input['#attributes']['class'][] = 'js-ui-patterns-settings__input js-ui-patterns-settings-' . $def->getName();
     $input['#wrapper_attributes']['class'][] = 'js-ui-patterns-settings__input-wrapper';
@@ -354,7 +354,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
     array $form,
     $value,
     $token_value,
-    $form_type
+    $form_type,
   ) {
     $dependencies = $this->getSettingTypeDependencies();
     $def = $this->getPatternSettingDefinition();
@@ -407,7 +407,7 @@ abstract class PatternSettingTypeBase extends PluginBase implements
   public static function formGroupProcess(
     array &$element,
     ?FormStateInterface $form_state = NULL,
-    &$form = []
+    &$form = [],
   ) {
     if (isset($element['#pattern_setting_definition'])) {
       $setting_definition = $element['#pattern_setting_definition'];
diff --git a/src/Plugin/RoleCheckboxesSettingTypeBase.php b/src/Plugin/RoleCheckboxesSettingTypeBase.php
index da13e44..58dc760 100644
--- a/src/Plugin/RoleCheckboxesSettingTypeBase.php
+++ b/src/Plugin/RoleCheckboxesSettingTypeBase.php
@@ -42,9 +42,8 @@ class RoleCheckboxesSettingTypeBase extends EnumerationSettingTypeBase {
     if ($value === NULL) {
       return !is_array($this->getPatternSettingDefinition()
         ->getDefaultValue()) ? [
-        $this->getPatternSettingDefinition()
-          ->getDefaultValue(),
-      ] : $this->getPatternSettingDefinition()->getDefaultValue();
+          $this->getPatternSettingDefinition()->getDefaultValue(),
+        ] : $this->getPatternSettingDefinition()->getDefaultValue();
     }
     else {
       return $value ?? "";
diff --git a/src/Plugin/UiPatterns/SettingDataProvider/BreadcrumbDataProvider.php b/src/Plugin/UiPatterns/SettingDataProvider/BreadcrumbDataProvider.php
index 5210f64..21eb661 100644
--- a/src/Plugin/UiPatterns/SettingDataProvider/BreadcrumbDataProvider.php
+++ b/src/Plugin/UiPatterns/SettingDataProvider/BreadcrumbDataProvider.php
@@ -34,13 +34,13 @@ class BreadcrumbDataProvider extends PatternSettingDataProviderBase implements P
   protected $breadcrumbManager;
 
   /**
-   *
+   * {@inheritdoc}
    */
   public static function create(
     ContainerInterface $container,
     array $configuration,
-                       $plugin_id,
-                       $plugin_definition
+    $plugin_id,
+    $plugin_definition,
   ) {
     $plugin = new static(
       $configuration,
diff --git a/src/Plugin/UiPatterns/SettingDataProvider/MenuDataProvider.php b/src/Plugin/UiPatterns/SettingDataProvider/MenuDataProvider.php
index 304ae35..7e38486 100644
--- a/src/Plugin/UiPatterns/SettingDataProvider/MenuDataProvider.php
+++ b/src/Plugin/UiPatterns/SettingDataProvider/MenuDataProvider.php
@@ -43,13 +43,13 @@ class MenuDataProvider extends PatternSettingDataProviderBase implements Pattern
   protected $menuId;
 
   /**
-   *
+   * {@inheritdoc}
    */
   public static function create(
     ContainerInterface $container,
     array $configuration,
-                       $plugin_id,
-                       $plugin_definition
+    $plugin_id,
+    $plugin_definition,
   ) {
     $plugin = new static(
       $configuration,
diff --git a/src/Plugin/UiPatterns/SettingType/ColorisWidgetSettingType.php b/src/Plugin/UiPatterns/SettingType/ColorisWidgetSettingType.php
index c1b8a2d..ad45ac9 100644
--- a/src/Plugin/UiPatterns/SettingType/ColorisWidgetSettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/ColorisWidgetSettingType.php
@@ -3,7 +3,6 @@
 namespace Drupal\ui_patterns_settings\Plugin\UIPatterns\SettingType;
 
 use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting;
-use Drupal\ui_patterns_settings\Plugin\EnumerationSettingTypeBase;
 use Drupal\ui_patterns_settings\Plugin\PatternSettingTypeBase;
 
 /**
@@ -29,13 +28,14 @@ class ColorisWidgetSettingType extends PatternSettingTypeBase {
   public function settingsPreprocess(
     $value,
     array $context,
-    PatternDefinitionSetting $def
+    PatternDefinitionSetting $def,
   ) {
     if (is_string($value) && !empty($value)) {
       return $value;
     }
     return $value['coloris'] ?? '';
   }
+
   /**
    * {@inheritdoc}
    */
@@ -47,7 +47,7 @@ class ColorisWidgetSettingType extends PatternSettingTypeBase {
       '#title' => $def->getLabel(),
       '#description' => $def->getDescription(),
       '#default_value' => $this->getValue($value),
-      '#swatches' => $swatches
+      '#swatches' => $swatches,
     ];
 
     $this->handleInput($form[$def->getName()], $def, $form_type);
diff --git a/src/Plugin/UiPatterns/SettingType/LanguageCheckboxesSettingType.php b/src/Plugin/UiPatterns/SettingType/LanguageCheckboxesSettingType.php
index 560c2b6..b24a39b 100644
--- a/src/Plugin/UiPatterns/SettingType/LanguageCheckboxesSettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/LanguageCheckboxesSettingType.php
@@ -2,11 +2,7 @@
 
 namespace Drupal\ui_patterns_settings\Plugin\UIPatterns\SettingType;
 
-use Drupal\Core\Language\LanguageManagerInterface;
-use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting;
-use Drupal\ui_patterns_settings\Plugin\EnumerationSettingTypeBase;
 use Drupal\ui_patterns_settings\Plugin\LanguageCheckboxesSettingTypeBase;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Language Checkboxes setting type.
diff --git a/src/Plugin/UiPatterns/SettingType/LinksSettingType.php b/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
index c1bdd53..22edcb8 100644
--- a/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
@@ -28,6 +28,7 @@ class LinksSettingType extends ComplexSettingTypeBase {
    *   The items to convert.
    *
    * @return array
+   *   Normalized menu items.
    */
   public static function normalize(array $items): array {
     foreach ($items as $index => $item) {
diff --git a/src/Plugin/UiPatterns/SettingType/MediaLibrarySettingType.php b/src/Plugin/UiPatterns/SettingType/MediaLibrarySettingType.php
index 680d5b3..9a79c17 100644
--- a/src/Plugin/UiPatterns/SettingType/MediaLibrarySettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/MediaLibrarySettingType.php
@@ -2,11 +2,8 @@
 
 namespace Drupal\ui_patterns_settings\Plugin\UIPatterns\SettingType;
 
-use Drupal\Component\Utility\UrlHelper;
 use Drupal\Core\Field\FieldItemList;
-use Drupal\Core\Url;
 use Drupal\media\Entity\Media;
-use Drupal\media_library\MediaLibraryUiBuilder;
 use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting;
 use Drupal\ui_patterns_settings\Plugin\PatternSettingTypeBase;
 
@@ -81,6 +78,9 @@ class MediaLibrarySettingType extends PatternSettingTypeBase {
     return ['entity_reference'];
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function preprocessExposedField(FieldItemList $items) {
     foreach ($items as $item) {
       if ($item->entity !== NULL) {
diff --git a/src/Plugin/UiPatterns/SettingType/ValueSettingType.php b/src/Plugin/UiPatterns/SettingType/ValueSettingType.php
index eb5ca41..e1a5f9b 100644
--- a/src/Plugin/UiPatterns/SettingType/ValueSettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/ValueSettingType.php
@@ -20,13 +20,16 @@ class ValueSettingType extends PatternSettingTypeBase {
    */
   public function buildConfigurationForm(
     array $form,
-          $value,
-          $token_value,
-          $form_type
+    $value,
+    $token_value,
+    $form_type,
   ) {
     return [];
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function settingsForm(array $form, $value, PatternDefinitionSetting $def, $form_type) {
     return [];
   }
diff --git a/src/UiPatternsSettings.php b/src/UiPatternsSettings.php
index 2a9f872..3267870 100644
--- a/src/UiPatternsSettings.php
+++ b/src/UiPatternsSettings.php
@@ -86,6 +86,8 @@ class UiPatternsSettings {
    *   Is preview.
    * @param \Drupal\Core\Entity\EntityInterface $entity
    *   The entity of the pattern. Useful for dynamic settings.
+   * @param array $element
+   *   The element.
    *
    * @return array
    *   The processed settings.
@@ -120,7 +122,7 @@ class UiPatternsSettings {
           // Do nothing inside layout builder.
         }
       }
-      // Use exposed field value if no other setting is provided
+      // Use exposed field value if no other setting is provided.
       elseif (isset($processed_settings[$key]) && empty($settings[$key])) {
         $value = $processed_settings[$key];
       }
@@ -146,7 +148,8 @@ class UiPatternsSettings {
                 $setting_definition = clone $setting_definition;
                 $setting_definition->setDefinitions($variant_ary['settings'][$key]['definition']);
               }
-            } else {
+            } 
+            else {
               $value = $variant_ary['settings'][$key];
             }
           }
@@ -223,7 +226,8 @@ class UiPatternsSettings {
   public static function getPatternConfiguration(PatternDefinition $definition, $variant = NULL, $name = NULL) {
     $additional = $definition->getAdditional();
     $configuration = $additional['configuration'] ?? [];
-    // Check for variant configuration
+
+    // Check for variant configuration.
     if (!empty($variant)) {
       $variant_ob = $definition->getVariant($variant);
       if ($variant_ob != NULL) {
@@ -233,7 +237,8 @@ class UiPatternsSettings {
         }
       }
     }
-    // Check for settings configuration
+
+    // Check for settings configuration.
     if (isset($additional['settings'][$name]['options'])) {
       foreach ($additional['settings'][$name]['options'] as $option_key => $option_value) {
         if (is_array($option_value) && isset($option_value['configuration'])) {
diff --git a/src/UiPatternsSettingsDataProviderManager.php b/src/UiPatternsSettingsDataProviderManager.php
index cf98a28..4bac7a8 100644
--- a/src/UiPatternsSettingsDataProviderManager.php
+++ b/src/UiPatternsSettingsDataProviderManager.php
@@ -34,6 +34,15 @@ class UiPatternsSettingsDataProviderManager extends DefaultPluginManager {
     $this->setCacheBackend($cache_backend, 'ui_patterns_settings_data_provider_plugins');
   }
 
+  /**
+   * Get definitions by setting type.
+   *
+   * @param string $setting_type_id
+   *   Settings type id.
+
+   * @return array
+   *   The definitions.
+   */
   public function getDefinitionsBySettingType($setting_type_id) {
     $definitions = $this->getDefinitions();
     $results = [];
diff --git a/tests/modules/ui_patterns_settings_data_provider/src/Plugin/UiPatterns/SettingType/SampleComplexSettingType.php b/tests/modules/ui_patterns_settings_data_provider/src/Plugin/UiPatterns/SettingType/SampleComplexSettingType.php
index 3912a2e..2619c1c 100644
--- a/tests/modules/ui_patterns_settings_data_provider/src/Plugin/UiPatterns/SettingType/SampleComplexSettingType.php
+++ b/tests/modules/ui_patterns_settings_data_provider/src/Plugin/UiPatterns/SettingType/SampleComplexSettingType.php
@@ -3,7 +3,6 @@
 namespace Drupal\ui_patterns_settings_data_provider\Plugin\UIPatterns\SettingType;
 
 use Drupal\ui_patterns_settings\Plugin\ComplexSettingTypeBase;
-use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting;
 
 /**
  * Complex Setting Type.
@@ -15,5 +14,4 @@ use Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting;
  */
 class SampleComplexSettingType extends ComplexSettingTypeBase {
 
-
 }
diff --git a/tests/src/Kernel/ComplexSettingTypeTest.php b/tests/src/Kernel/ComplexSettingTypeTest.php
index cdaa1a1..7751107 100644
--- a/tests/src/Kernel/ComplexSettingTypeTest.php
+++ b/tests/src/Kernel/ComplexSettingTypeTest.php
@@ -23,13 +23,11 @@ class ComplexSettingTypeTest extends KernelTestBase {
   ];
 
   /**
-   * {@inheritdoc}
+   * Get setting type.
+   * 
+   * @return \Drupal\ui_patterns_settings\Plugin\PatternSettingTypeInterface
+   *   The settings type.
    */
-  protected function setUp(): void {
-    parent::setUp();
-    // Mock required services here.
-  }
-
   private function getTestSettingType() {
     /** @var \Drupal\ui_patterns_settings_data_provider\Plugin\UIPatterns\SettingType\SampleComplexSettingType $sample_complex_setting_type */
     $definition = new PatternDefinition([
@@ -42,6 +40,12 @@ class ComplexSettingTypeTest extends KernelTestBase {
     return UiPatternsSettings::createSettingType($definition, $this->getTestSettingDefinition());
   }
 
+  /**
+   * Get setting definition.
+   * 
+   * @return \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting
+   *   The settings.
+   */
   private function getTestSettingDefinition() {
     return new PatternDefinitionSetting('sample_complex_setting_type', [
       'name' => 'sample_complex_setting_type',
@@ -51,22 +55,26 @@ class ComplexSettingTypeTest extends KernelTestBase {
   }
 
   /**
-   * Test testSettingsForm.
+   * Test settings form.
    */
   public function testSettingsForm() {
     $sample_definition = $this->getTestSettingDefinition();
     $sample_complex_setting_type = $this->getTestSettingType();
-    $fieldset = $sample_complex_setting_type->settingsForm([],  '', $sample_definition, 'layout');
+    $fieldset = $sample_complex_setting_type->settingsForm([], '', $sample_definition, 'layout');
     self::assertArrayHasKey('sample_complex_setting_type', $fieldset);
     self::assertArrayHasKey('provider', $fieldset['sample_complex_setting_type']);
     self::assertArrayHasKey('foo', $fieldset['sample_complex_setting_type']['configuration']);
     self::assertArrayHasKey('#type', $fieldset['sample_complex_setting_type']['configuration']['foo']['config']);
   }
 
+  /**
+   * Test preprocess.
+   */
   public function testPreprocess() {
     $sample_complex_setting_type = $this->getTestSettingType();
     $context = [];
     $ary = $sample_complex_setting_type->preprocess(['provider' => 'foo'], $context);
     self::assertArrayHasKey('data', $ary);
   }
+
 }
diff --git a/ui_patterns_settings.api.php b/ui_patterns_settings.api.php
index 1e09880..7210dae 100644
--- a/ui_patterns_settings.api.php
+++ b/ui_patterns_settings.api.php
@@ -18,7 +18,7 @@
  *   keys:
  *    - #pattern_id: The pattern id.
  *    - #variant: The variant id.
- *    - #context: The pattern context
+ *    - #context: The pattern context.
  *
  * @see \Drupal\ui_patterns_settings\Element\PatternSettings
  */
@@ -34,14 +34,14 @@ function hook_ui_pattern_settings_settings_alter(array &$settings, array $contex
  * Implement this hook to override the configured pattern variant for
  * specific patterns or to configure custom variant logic.
  *
- * @param $variant
+ * @param string $variant
  *   Pattern variant.
  * @param array $context
  *   Context Properties: The context and the entity of the pattern.
  *   keys:
  *    - #pattern_id: The pattern id.
  *    - #variant: The variant id.
- *    - #context: The pattern context
+ *    - #context: The pattern context.
  *
  * @see \Drupal\ui_patterns_settings\Element\PatternSettings
  */
diff --git a/ui_patterns_settings.module b/ui_patterns_settings.module
index e651a8f..2c4042a 100644
--- a/ui_patterns_settings.module
+++ b/ui_patterns_settings.module
@@ -27,6 +27,15 @@ function ui_patterns_settings_ui_patterns_layouts_display_settings_form_alter(&$
   SettingsFormBuilder::layoutForm($form, $definition, $configuration);
 }
 
+/**
+ * Build media edit button.
+ *
+ * @param string $media_id
+ *   The media id.
+ *
+ * @return array
+ *   The button array.
+ */
 function ui_patterns_settings_build_media_edit_button($media_id) {
   $media_entity_type = \Drupal::entityTypeManager()->getStorage('media')->getEntityType();
   $edit_template = $media_entity_type->getLinkTemplate('edit-form');
@@ -48,10 +57,10 @@ function ui_patterns_settings_build_media_edit_button($media_id) {
       ],
       'target' => '_blank',
       'data-dialog-options' => json_encode([
-                                             'height' => $dialog_options['height'],
-                                             'width' => $dialog_options['width'],
-                                             'classes' => ['ui-dialog-content' => 'media-library-edit__modal'],
-                                           ]),
+        'height' => $dialog_options['height'],
+        'width' => $dialog_options['width'],
+        'classes' => ['ui-dialog-content' => 'media-library-edit__modal'],
+      ]),
       'data-dialog-type' => 'dialog',
     ],
     '#attached' => [
@@ -63,6 +72,7 @@ function ui_patterns_settings_build_media_edit_button($media_id) {
   ];
 
 }
+
 /**
  * Implements hook_preprocess_media_library_element().
  */
@@ -73,8 +83,8 @@ function ui_patterns_settings_preprocess_media_library_element(&$variables) {
       $selection = &$variables['content']['selection'][$child];
       $media_id = $selection['preview']['target_id']['#value'] ?? NULL;
       if ($media_id !== NULL) {
-        // Remove js-media-library-item
-        if (($key = array_search('js-media-library-item', $selection['#attributes']['class'])) !== false) {
+        // Remove js-media-library-item.
+        if (($key = array_search('js-media-library-item', $selection['#attributes']['class'])) !== FALSE) {
           unset($selection['#attributes']['class'][$key]);
         }
         $selection['media_edit'] = ui_patterns_settings_build_media_edit_button($media_id);
@@ -149,8 +159,7 @@ function ui_patterns_settings_entity_field_storage_info_alter(&$fields, EntityTy
   /** @var \Drupal\field\Entity\FieldStorageConfig $field */
   foreach ($fields as $field) {
     if ($field instanceof FieldStorageConfig) {
-      if (($mapping = UiPatternsSettings::getConfigManager()
-          ->getMapping($field->id())) !== NULL) {
+      if (($mapping = UiPatternsSettings::getConfigManager()->getMapping($field->id())) !== NULL) {
         [$pattern_id, $setting_id] = explode('::', $mapping);
         try {
           $pattern_definition = UiPatterns::getPatternDefinition($pattern_id);
@@ -167,7 +176,8 @@ function ui_patterns_settings_entity_field_storage_info_alter(&$fields, EntityTy
           else {
             \Drupal::messenger()->addError('No pattern setting %setting found');
           }
-        } catch (\Exception $e) {
+        } 
+        catch (\Exception $e) {
           \Drupal::messenger()->addError($e->getMessage());
         }
       }
@@ -325,7 +335,7 @@ function ui_patterns_settings_layout_alter(&$definitions) {
  * Implements hook_ui_patterns_info_alter().
  */
 function ui_patterns_settings_ui_patterns_info_alter(&$definitions) {
-  /** @var PatternDefinition $definition */
+  /** @var \Drupal\ui_patterns\Definition\PatternDefinition $definition */
   foreach ($definitions as $definition) {
     $settings = UiPatternsSettings::getPatternDefinitionSettings($definition);
     foreach ($settings as $setting) {
-- 
GitLab


From 42f66e64dff033a7716e7518ada21817ed6113f2 Mon Sep 17 00:00:00 2001
From: Mohammed Nassar <msh.nassar@gmail.com>
Date: Fri, 21 Feb 2025 15:50:53 +0000
Subject: [PATCH 15/15] ISSUE-3508202: Fix phpcs.

---
 src/Definition/PatternDefinitionSetting.php   | 2 +-
 src/Element/PatternSettings.php               | 4 ++--
 src/Form/SettingsFormBuilder.php              | 2 +-
 src/UiPatternsSettings.php                    | 2 +-
 src/UiPatternsSettingsDataProviderManager.php | 2 +-
 tests/src/Kernel/ComplexSettingTypeTest.php   | 4 ++--
 ui_patterns_settings.module                   | 2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/Definition/PatternDefinitionSetting.php b/src/Definition/PatternDefinitionSetting.php
index 8ecd754..18758ed 100644
--- a/src/Definition/PatternDefinitionSetting.php
+++ b/src/Definition/PatternDefinitionSetting.php
@@ -71,7 +71,7 @@ class PatternDefinitionSetting implements \ArrayAccess {
             $processed_options[$option_key] = $option_value;
           }
         }
-      } 
+      }
       else {
         $processed_options = NULL;
       }
diff --git a/src/Element/PatternSettings.php b/src/Element/PatternSettings.php
index 47efa5a..65375b9 100644
--- a/src/Element/PatternSettings.php
+++ b/src/Element/PatternSettings.php
@@ -121,9 +121,9 @@ class PatternSettings implements TrustedCallbackInterface {
           }
           elseif (is_array($element[$key]) && is_array($setting)) {
             $element[$key] = array_merge($element[$key], $setting);
-          } 
+          }
           elseif (empty($element[$key]) && !empty($setting)) {
-            // Handle Exposed fields. Overwrite expose fields if the setting is 
+            // Handle Exposed fields. Overwrite expose fields if the setting is
             // provided but the variable prefilled with an empty field.
             // (e.g. component blocks)
             $setting_definition = UiPatternsSettings::getPatternDefinitionSetting(UiPatterns::getPatternDefinition($pattern_id), $name);
diff --git a/src/Form/SettingsFormBuilder.php b/src/Form/SettingsFormBuilder.php
index c0b172d..fa8dd14 100644
--- a/src/Form/SettingsFormBuilder.php
+++ b/src/Form/SettingsFormBuilder.php
@@ -41,7 +41,7 @@ class SettingsFormBuilder {
 
     if (!empty($entity_type_id)) {
       $content_entity_types[] = $entity_type_id;
-    } 
+    }
     else {
       $entity_type_definitions = \Drupal::entityTypeManager()->getDefinitions();
       /** @var EntityTypeInterface $definition */
diff --git a/src/UiPatternsSettings.php b/src/UiPatternsSettings.php
index 3267870..7842a33 100644
--- a/src/UiPatternsSettings.php
+++ b/src/UiPatternsSettings.php
@@ -148,7 +148,7 @@ class UiPatternsSettings {
                 $setting_definition = clone $setting_definition;
                 $setting_definition->setDefinitions($variant_ary['settings'][$key]['definition']);
               }
-            } 
+            }
             else {
               $value = $variant_ary['settings'][$key];
             }
diff --git a/src/UiPatternsSettingsDataProviderManager.php b/src/UiPatternsSettingsDataProviderManager.php
index 4bac7a8..a24c9d3 100644
--- a/src/UiPatternsSettingsDataProviderManager.php
+++ b/src/UiPatternsSettingsDataProviderManager.php
@@ -39,7 +39,7 @@ class UiPatternsSettingsDataProviderManager extends DefaultPluginManager {
    *
    * @param string $setting_type_id
    *   Settings type id.
-
+   *
    * @return array
    *   The definitions.
    */
diff --git a/tests/src/Kernel/ComplexSettingTypeTest.php b/tests/src/Kernel/ComplexSettingTypeTest.php
index 7751107..b8a9e8d 100644
--- a/tests/src/Kernel/ComplexSettingTypeTest.php
+++ b/tests/src/Kernel/ComplexSettingTypeTest.php
@@ -24,7 +24,7 @@ class ComplexSettingTypeTest extends KernelTestBase {
 
   /**
    * Get setting type.
-   * 
+   *
    * @return \Drupal\ui_patterns_settings\Plugin\PatternSettingTypeInterface
    *   The settings type.
    */
@@ -42,7 +42,7 @@ class ComplexSettingTypeTest extends KernelTestBase {
 
   /**
    * Get setting definition.
-   * 
+   *
    * @return \Drupal\ui_patterns_settings\Definition\PatternDefinitionSetting
    *   The settings.
    */
diff --git a/ui_patterns_settings.module b/ui_patterns_settings.module
index 2c4042a..35b2ad7 100644
--- a/ui_patterns_settings.module
+++ b/ui_patterns_settings.module
@@ -176,7 +176,7 @@ function ui_patterns_settings_entity_field_storage_info_alter(&$fields, EntityTy
           else {
             \Drupal::messenger()->addError('No pattern setting %setting found');
           }
-        } 
+        }
         catch (\Exception $e) {
           \Drupal::messenger()->addError($e->getMessage());
         }
-- 
GitLab