Connection manager fixes: folder select, open-all-in-tabs, stable hover

- Folder select showed '(none)' regardless of the actual folder (Angular sets
  [value] on the select before its options render), so 'move out of folder'
  silently saved the old folderId. Per-option [selected] bindings fix both the
  display and the save.
- Folder rows gain 'Open all in tabs': each connection opens in its own new
  tab with the left panel connecting (right stays local); manager closes.
- Folder-row action buttons no longer shift the row on hover (opacity toggle
  instead of display toggle); also canonicalized accent-primary classes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jokin
2026-07-11 19:37:51 +02:00
co-authored by Claude Fable 5
parent 2d7e7b44cd
commit 7712655c3d
4 changed files with 36 additions and 9 deletions
+11 -1
View File
@@ -1,5 +1,5 @@
import { Injectable, computed, signal, type WritableSignal } from '@angular/core';
import type { ConnectionConfig, FileEntry } from '@shared/types';
import type { ConnectionConfig, FileEntry, SavedConnection } from '@shared/types';
import { RpcService } from './rpc.service';
import { ToastService } from './toast.service';
@@ -280,6 +280,16 @@ export class PanelsService {
}
}
/** One new tab per connection, its left panel connecting (right stays local). */
openInNewTabs(connections: SavedConnection[]): void {
for (const connection of connections) {
this.newWorkspace();
// connectPanel resolves the panel synchronously (before awaiting), so
// firing these back-to-back binds each connection to its own tab
void this.connectPanel('left', connection, connection.name);
}
}
/** Reorder a tab (drag & drop). Order is purely visual; ids stay stable. */
moveWorkspace(id: number, toIndex: number): void {
this.workspaces.update((list) => {