fix: modal scroll, SSH key textarea, nav full-page, remove OS/Provider

- Fix modal scroll: restructure overlay with scroll/centering wrapper
- Add SSH key textarea + file upload to host modal (authType='key')
- Fix textarea reset on new host (clear via DOM)
- SSH username placeholder instead of default 'root'
- Nav uses plain <a href> instead of HTMX for full-page navigation
- /hosts route returns full page; /hosts/list for HTMX partials
- Remove OS and Provider from host modal, grid card, and list card
- Fix key modal x-data scope for Alpine $dispatch
- Update key_grid to display multi-line key content properly
- Simplify SSH key placeholder format
This commit is contained in:
swanadiva
2026-07-09 18:21:45 +07:00
parent 5445d15aca
commit 56eaf57649
7 changed files with 100 additions and 83 deletions
+4 -4
View File
@@ -68,22 +68,22 @@
<button @click="filter = 'all'"
:class="filter === 'all' ? 'bg-white text-primary shadow-sm' : 'text-on-surface-variant hover:text-on-surface'"
class="px-2.5 py-1 rounded-md transition-all"
hx-get="/hosts?filter=all" hx-target="#host-list">All</button>
hx-get="/hosts/list?filter=all" hx-target="#host-list">All</button>
<button @click="filter = 'active'"
:class="filter === 'active' ? 'bg-white text-primary shadow-sm' : 'text-on-surface-variant hover:text-on-surface'"
class="px-2.5 py-1 rounded-md transition-all"
hx-get="/hosts?filter=active" hx-target="#host-list">Active</button>
hx-get="/hosts/list?filter=active" hx-target="#host-list">Active</button>
<button @click="filter = 'offline'"
:class="filter === 'offline' ? 'bg-white text-primary shadow-sm' : 'text-on-surface-variant hover:text-on-surface'"
class="px-2.5 py-1 rounded-md transition-all"
hx-get="/hosts?filter=offline" hx-target="#host-list">Offline</button>
hx-get="/hosts/list?filter=offline" hx-target="#host-list">Offline</button>
</div>
</div>
<div class="flex items-center gap-3">
<div class="relative">
<svg class="absolute left-3 top-1/2 -translate-y-1/2 text-outline w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/></svg>
<input type="search" name="q" placeholder="Search hosts..."
hx-get="/hosts" hx-trigger="keyup delay:200ms"
hx-get="/hosts/list" hx-trigger="keyup delay:200ms"
hx-target="#host-list"
class="pl-9 pr-4 py-1.5 rounded-full bg-surface-container-low border border-outline-variant/30 text-sm focus:border-primary focus:bg-white focus:outline-none focus:ring-1 focus:ring-primary w-48 sm:w-60 transition-all text-on-surface placeholder-on-surface-variant">
</div>