From e48e2753ca964d3af4e23dc2dae5b121ffafc007 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Mon, 13 Nov 2023 10:35:10 +0100
Subject: [PATCH] [ivette/sidebar] sidebar selector tweaks

---
 ivette/src/renderer/Sidebar.tsx | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/ivette/src/renderer/Sidebar.tsx b/ivette/src/renderer/Sidebar.tsx
index c7b33a3bdff..8ac673ab020 100644
--- a/ivette/src/renderer/Sidebar.tsx
+++ b/ivette/src/renderer/Sidebar.tsx
@@ -87,7 +87,17 @@ function Wrapper(props: WrapperProps): JSX.Element {
 export function Panel(): JSX.Element {
   const [selected, setSelected] =
     Dome.useStringSettings('ivette.sidebar.selected');
+
   const sidebars = Ext.useElements(SIDEBAR);
+
+  // Ensures there is one selected sidebar
+  React.useEffect(() => {
+    if (sidebars.every((sb) => sb.id !== selected)) {
+      const first = sidebars[0];
+      if (first) setSelected(first.id);
+    }
+  }, [sidebars, selected, setSelected]);
+
   const items = sidebars.map((sb) => (
     <Selector
       key={sb.id}
@@ -95,6 +105,7 @@ export function Panel(): JSX.Element {
       setSelected={setSelected}
       {...sb} />
   ));
+
   const wrappers = sidebars.map((sb) => (
     <Wrapper
       key={sb.id}
@@ -103,9 +114,15 @@ export function Panel(): JSX.Element {
     />
   ));
 
+  // Hide sidebar if only one of them
+  const selectorClasses = classes(
+    'sidebar-items dome-color-frame',
+    sidebars.length <= 1 && 'dome-erased'
+  );
+
   return (
     <div className="sidebar-ruler">
-      <div className="sidebar-items dome-color-frame">
+      <div className={selectorClasses}>
         {items}
       </div>
       {wrappers}
-- 
GitLab