diff --git a/js/builder.js b/js/builder.js
index ea77dc2d621cbe8d4695b999fec0fb9759995aee..8e01e2b5c20a5630698ad188551e2239677f7a37 100644
--- a/js/builder.js
+++ b/js/builder.js
@@ -59,6 +59,19 @@
     });
   }
 
+  /**
+   * Sets the visibility of UI elements based on the data-active attribute.
+   */
+  function setUiElementVisibility() {
+    selectAll('.js-lpb-component .js-lpb-ui').forEach((element) => {
+      if (element.closest('.js-lpb-component')?.getAttribute('data-active')) {
+        element.classList.remove('visually-hidden');
+      } else {
+        element.classList.add('visually-hidden');
+      }
+    });
+  }
+
   /**
    * Removes focus data attributes from all components.
    */
@@ -72,9 +85,7 @@
     selectAll('.is-navigating').forEach((element) =>
       element.classList.remove('is-navigating'),
     );
-    selectAll('.js-lpb-ui:not(.visually-hidden)').forEach((element) =>
-      element.classList.add('visually-hidden'),
-    );
+    setUiElementVisibility();
   }
 
   /**
@@ -87,9 +98,7 @@
     // Add the data-active attribute to the element.
     element.setAttribute('data-active', 'true');
     element.setAttribute('data-active-within', 'true');
-    selectAll('.js-lpb-ui', element)
-      .filter((uiElement) => uiElement.closest('.js-lpb-component') === element)
-      .forEach((uiElement) => uiElement.classList.remove('visually-hidden'));
+    setUiElementVisibility();
     // Add the data-active-within attribute to all parent elements.
     let parent = element.parentNode.closest('.js-lpb-component');
     while (parent) {
@@ -160,10 +169,9 @@
     const containerUiElements = uiElements[id] || [];
     Object.values(containerUiElements).forEach((uiElement) => {
       const { element, method } = uiElement;
-      $container[method](
-        $(element).addClass('js-lpb-ui').addClass('visually-hidden'),
-      );
+      $container[method]($(element).addClass('js-lpb-ui'));
     });
+    setUiElementVisibility();
   }
 
   /**