windjammer_ui/components/generated/
splitpanel.rs1#![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}