selection ui change

This commit is contained in:
2026-02-13 21:14:40 -06:00
parent 664e9e944a
commit 0972d10f32

View File

@@ -12,6 +12,7 @@ use ratatui::{
layout::{Constraint, Layout, Rect, Spacing}, layout::{Constraint, Layout, Rect, Spacing},
symbols::merge::MergeStrategy, symbols::merge::MergeStrategy,
widgets::{Block, List, ListItem, ListState, Paragraph}, widgets::{Block, List, ListItem, ListState, Paragraph},
style::{Modifier, Style},
Frame, Terminal, Frame, Terminal,
}; };
use ratatui::backend::CrosstermBackend; use ratatui::backend::CrosstermBackend;
@@ -84,7 +85,7 @@ fn run_app(terminal: &mut Terminal<CrosstermBackend<io::Stdout>>) -> io::Result<
// tick-based updates go here later (smooth nav, download polling, etc.) // tick-based updates go here later (smooth nav, download polling, etc.)
last_tick = Instant::now(); last_tick = Instant::now();
} }
}; }
Ok(()) Ok(())
} }
@@ -93,19 +94,24 @@ fn handle_key(app: &mut App, code: KeyCode) {
KeyCode::Char('q') => app.should_exit = true, KeyCode::Char('q') => app.should_exit = true,
KeyCode::Up | KeyCode::Char('k') => { KeyCode::Up | KeyCode::Char('k') => {
if app.selected > 0 { if app.items.is_empty() {
return;
}
if app.selected == 0 {
app.selected = app.items.len() - 1;
} else {
app.selected -= 1; app.selected -= 1;
} }
app.status = format!("Selected: {}", app.items[app.selected]); app.status = format!("Selected: {}", app.items[app.selected]);
} }
KeyCode::Down | KeyCode::Char('j') => { KeyCode::Down | KeyCode::Char('j') => {
if app.selected + 1 < app.items.len() { if app.items.is_empty() {
app.selected += 1; return;
} }
app.selected = (app.selected + 1) % app.items.len();
app.status = format!("Selected: {}", app.items[app.selected]); app.status = format!("Selected: {}", app.items[app.selected]);
} }
_ => {} _ => {}
} }
} }
@@ -126,7 +132,8 @@ fn ui(frame: &mut Frame, app: &App) {
let list = List::new(items) let list = List::new(items)
.block(Block::bordered().title("List").merge_borders(MergeStrategy::Exact)) .block(Block::bordered().title("List").merge_borders(MergeStrategy::Exact))
.highlight_symbol("> "); .highlight_symbol("> ")
.highlight_style(Style::default().add_modifier(Modifier::REVERSED));
let mut state = ListState::default(); let mut state = ListState::default();
state.select(Some(app.selected)); state.select(Some(app.selected));