update_selection(
self,
selected_index: int,
) -> NoneUpdate which row is selected, re-windowing the DOM when needed.
Rows are windowed around the selection, so a move beyond the mounted range rebuilds the window instead of just re-styling a row.