use crate::{
style::Style,
value::{
layouts::{Alignment, FlexBasis, FlexDirection, FlexWrap},
Unit,
},
};
use elvis_core_support::Setter;
#[derive(Clone, Default, Setter)]
pub struct FlexStyle {
pub align: Option<Alignment>,
pub basis: Option<FlexBasis>,
pub direction: Option<FlexDirection>,
#[skip]
pub grow: Option<Unit>,
#[skip]
pub order: Option<Unit>,
pub wrap: Option<FlexWrap>,
}
impl FlexStyle {
pub fn grow(mut self, grow: i64) -> FlexStyle {
self.grow = Some(Unit::None(grow as f64));
self
}
pub fn order(mut self, order: i64) -> FlexStyle {
self.order = Some(Unit::None(order as f64));
self
}
}
impl Into<Vec<Style>> for FlexStyle {
fn into(self) -> Vec<Style> {
let mut styles: Vec<Style> = vec![];
if let Some(v) = self.align {
styles.append(&mut v.into());
}
styles
}
}