vcard_tui 0.1.2

Terminal UI application for managing vCard contacts.
use std::borrow::BorrowMut;

use ratatui::layout::Rect;
use ratatui::widgets::List;
use ratatui::Frame;

use crate::state::properties::PropertiesState;
use crate::util::{get_block, get_list_item, property_content, property_title};

pub fn render_properties_state(state: &mut PropertiesState, selected: bool, frame: &mut Frame, rect: Rect) {
    let mut items = Vec::new();

    for (i, p) in state.properties.iter().enumerate() {
        items.push(get_list_item(
            property_content(p),
            selected && state.list.selected().unwrap_or_default() == i,
        ));
    }

    frame.render_stateful_widget(
        List::new(items).block(get_block(selected, property_title(&state.property_name))),
        rect,
        state.list.borrow_mut(),
    );
}