windjammer_ui/components/generated/
splitpanel.rs

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