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},
symbols::merge::MergeStrategy,
widgets::{Block, List, ListItem, ListState, Paragraph},
style::{Modifier, Style},
Frame, Terminal,
};
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.)
last_tick = Instant::now();
}
};
}
Ok(())
}
@@ -93,19 +94,24 @@ fn handle_key(app: &mut App, code: KeyCode) {
KeyCode::Char('q') => app.should_exit = true,
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.status = format!("Selected: {}", app.items[app.selected]);
}
KeyCode::Down | KeyCode::Char('j') => {
if app.selected + 1 < app.items.len() {
app.selected += 1;
if app.items.is_empty() {
return;
}
app.selected = (app.selected + 1) % app.items.len();
app.status = format!("Selected: {}", app.items[app.selected]);
}
_ => {}
}
}
@@ -126,7 +132,8 @@ fn ui(frame: &mut Frame, app: &App) {
let list = List::new(items)
.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();
state.select(Some(app.selected));