windjammer-ui 0.3.6

Cross-platform UI framework for Windjammer (Web, Desktop, Mobile)
Documentation
#![allow(clippy::all)]
#![allow(noop_method_call)]
use super::traits::Renderable;

#[derive(Clone, Debug, PartialEq, Copy)]
pub enum SplitDirection {
    Horizontal,
    Vertical,
}

#[derive(Debug, Clone, PartialEq)]
pub struct SplitPanel {
    pub left: String,
    pub right: String,
    pub direction: SplitDirection,
    pub initial_size: i32,
}

impl SplitPanel {
    #[inline]
    pub fn new(left: String, right: String) -> SplitPanel {
        SplitPanel {
            left,
            right,
            direction: SplitDirection::Vertical,
            initial_size: 50,
        }
    }
    #[inline]
    pub fn direction(mut self, direction: SplitDirection) -> SplitPanel {
        self.direction = direction;
        self
    }
    #[inline]
    pub fn initial_size(mut self, size: i32) -> SplitPanel {
        self.initial_size = size;
        self
    }
}

impl Renderable for SplitPanel {
    #[inline]
    fn render(self) -> String {
        let flex_direction = match self.direction {
            SplitDirection::Horizontal => "column".to_string(),
            SplitDirection::Vertical => "row".to_string(),
        };
        format!(
            "<div class='wj-split-panel' style='display: flex; flex-direction: {}; height: 100%;'>
  <div class='wj-split-pane' style='flex: {}%;'>
    {}
  </div>
  <div class='wj-split-divider'></div>
  <div class='wj-split-pane' style='flex: {}%;'>
    {}
  </div>
</div>",
            flex_direction,
            self.initial_size,
            self.left,
            100 - self.initial_size,
            self.right
        )
    }
}