swoop_ui/container/
v_stack.rs1use bevy_ecs::prelude::*;
2use bevy_ui::prelude::*;
3
4use crate::{UiBase, UiToBundle};
5
6use super::{BackgroundContainer, BackgroundStyle, BorderContainer, BorderStyle, StackContainer};
7
8pub struct VStack {
9 name: Name,
10 node: Node,
11 border: BorderStyle,
12 background: BackgroundStyle,
13}
14
15impl Default for VStack {
16 fn default() -> Self {
17 Self {
18 name: Name::new("HStack"),
19 node: Node {
20 display: Display::Flex,
21 flex_direction: FlexDirection::Column,
22 justify_content: JustifyContent::Start,
23 align_items: AlignItems::Center,
24 row_gap: Val::Px(8.0),
25 ..Default::default()
26 },
27 border: BorderStyle::default(),
28 background: BackgroundStyle::default(),
29 }
30 }
31}
32
33impl UiBase for VStack {
34 fn name_node(&mut self) -> &mut Name {
35 &mut self.name
36 }
37
38 fn node_node(&mut self) -> &mut Node {
39 &mut self.node
40 }
41}
42
43impl StackContainer for VStack {
44 fn node_node(&mut self) -> &mut Node {
45 &mut self.node
46 }
47}
48
49impl BackgroundContainer for VStack {
50 fn background_node(&mut self) -> &mut BackgroundStyle {
51 &mut self.background
52 }
53}
54
55impl BorderContainer for VStack {
56 fn border_node(&mut self) -> &mut BorderStyle {
57 &mut self.border
58 }
59}
60
61impl UiToBundle for VStack {
62 fn pack(self) -> impl Bundle {
63 let name = self.name;
64 let border = self.border.pack();
65 let background = self.background.pack();
66 (name, self.node, border, background)
67 }
68}