From eb2b8352f5d3b900c306b5b3fc3972f0509e5fc0 Mon Sep 17 00:00:00 2001
From: Florent Torregrosa
 <14238-florenttorregrosa@users.noreply.drupalcode.org>
Date: Fri, 6 Sep 2024 19:45:18 +0000
Subject: [PATCH] Issue #3469755 by grimreaper: Links normalize drops link
 options

---
 src/Plugin/UiPatterns/SettingType/LinksSettingType.php | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/Plugin/UiPatterns/SettingType/LinksSettingType.php b/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
index 52a1cef..75569fd 100644
--- a/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
+++ b/src/Plugin/UiPatterns/SettingType/LinksSettingType.php
@@ -30,7 +30,7 @@ class LinksSettingType extends ComplexSettingTypeBase {
    * @return array
    */
   public static function normalize(array $items): array {
-    foreach ($items as $index => &$item) {
+    foreach ($items as $index => $item) {
       if (!is_array($item)) {
         unset($items[$index]);
         continue;
@@ -52,13 +52,16 @@ class LinksSettingType extends ComplexSettingTypeBase {
       if (!isset($item["url"]) && isset($item["link"])) {
         // Example: links.html.twig.
         $item["url"] = $item["link"]["#url"];
-        $item["url"]->setOptions($item["link"]["#options"]);
+        if (isset($item["link"]["#options"])) {
+          $item["url"]->mergeOptions($item["link"]["#options"]);
+        }
         unset($item["link"]);
       }
       $item = self::normalizeUrl($item);
       if (array_key_exists("below", $item)) {
         $item["below"] = self::normalize($item["below"]);
       }
+      $items[$index] = $item;
     }
     $items = array_values($items);
     return $items;
-- 
GitLab