use bevy::{
ecs::spawn::{SpawnIter, SpawnWith},
prelude::*,
};
use bevy_scrollbar::{Scrollbar, ScrollbarPlugin};
fn main() {
App::new()
.add_plugins((DefaultPlugins, ScrollbarPlugin))
.add_systems(Startup, setup)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn(Camera2d);
commands.spawn((
Node {
width: Val::Percent(100.0),
height: Val::Percent(100.0),
justify_content: JustifyContent::Center,
align_items: AlignItems::Center,
..default()
},
Children::spawn(SpawnWith(|container: &mut ChildSpawner| {
let scrollable = container
.spawn((
Node {
height: Val::Percent(80.0),
border: UiRect::all(Val::Px(5.0)).with_right(Val::Px(2.5)),
overflow: Overflow::scroll_y(),
flex_direction: FlexDirection::Column,
..default()
},
BorderColor::all(Color::BLACK),
Children::spawn(SpawnIter(
(0..100).map(|i| Text::new(format!(" Scrolling {i}! "))),
)),
))
.id();
container.spawn((
Scrollbar { scrollable },
Node {
width: Val::Percent(1.5),
height: Val::Percent(80.0),
border: UiRect::all(Val::Px(5.0)).with_left(Val::Px(2.5)),
..default()
},
BorderColor::all(Color::BLACK),
));
})),
));
}