windjammer_ui/components/generated/
splitpanel.rs

1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5pub enum SplitDirection {
6    Horizontal,
7    Vertical,
8}
9
10pub struct SplitPanel {
11    left: String,
12    right: String,
13    direction: SplitDirection,
14    initial_size: i32,
15}
16
17impl SplitPanel {
18    #[inline]
19    pub fn new(left: String, right: String) -> SplitPanel {
20        SplitPanel {
21            left,
22            right,
23            direction: SplitDirection::Vertical,
24            initial_size: 50,
25        }
26    }
27    #[inline]
28    pub fn direction(mut self, direction: SplitDirection) -> SplitPanel {
29        self.direction = direction;
30        self
31    }
32    #[inline]
33    pub fn initial_size(mut self, size: i32) -> SplitPanel {
34        self.initial_size = size;
35        self
36    }
37}
38
39impl Renderable for SplitPanel {
40    #[inline]
41    fn render(self) -> String {
42        let flex_direction = match self.direction {
43            SplitDirection::Horizontal => "column",
44            SplitDirection::Vertical => "row",
45        };
46        format!(
47            "<div class='wj-split-panel' style='display: flex; flex-direction: {}; height: 100%;'>
48  <div class='wj-split-pane' style='flex: {}%;'>
49    {}
50  </div>
51  <div class='wj-split-divider'></div>
52  <div class='wj-split-pane' style='flex: {}%;'>
53    {}
54  </div>
55</div>",
56            flex_direction,
57            self.initial_size,
58            self.left,
59            100 - self.initial_size,
60            self.right
61        )
62    }
63}