110 lines
2.4 KiB
Rust
110 lines
2.4 KiB
Rust
use pagetop::prelude::*;
|
|
|
|
use crate::bs::BreakPoint;
|
|
|
|
use std::fmt;
|
|
|
|
mod component;
|
|
pub use component::Grid;
|
|
|
|
mod item;
|
|
pub use item::Item;
|
|
|
|
#[derive(AutoDefault)]
|
|
pub enum Layout {
|
|
#[default]
|
|
Default,
|
|
Rows(u8),
|
|
Cols(u8),
|
|
Grid(u8, u8),
|
|
}
|
|
|
|
#[rustfmt::skip]
|
|
impl fmt::Display for Layout {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
Layout::Rows(r) if *r > 1 => write!(f, "--bs-rows: {r};"),
|
|
Layout::Cols(c) if *c > 0 => write!(f, "--bs-columns: {c};"),
|
|
Layout::Grid(r, c) => write!(f, "{}", trio_string!(
|
|
Layout::Rows(*r).to_string(), " ", Layout::Cols(*c).to_string()
|
|
)),
|
|
_ => write!(f, ""),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(AutoDefault)]
|
|
pub enum Gap {
|
|
#[default]
|
|
Default,
|
|
Row(unit::Value),
|
|
Col(unit::Value),
|
|
Grid(unit::Value, unit::Value),
|
|
Both(unit::Value),
|
|
}
|
|
|
|
#[rustfmt::skip]
|
|
impl fmt::Display for Gap {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
Gap::Default => write!(f, ""),
|
|
Gap::Row(r) => write!(f, "row-gap: {r};"),
|
|
Gap::Col(c) => write!(f, "column-gap: {c};"),
|
|
Gap::Grid(r, c) => write!(f, "--bs-gap: {r} {c};"),
|
|
Gap::Both(v) => write!(f, "--bs-gap: {v};"),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(AutoDefault)]
|
|
pub enum ItemColumns {
|
|
#[default]
|
|
Default,
|
|
Cols(u8),
|
|
}
|
|
|
|
#[rustfmt::skip]
|
|
impl fmt::Display for ItemColumns {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
ItemColumns::Cols(c) if *c > 1 => write!(f, "g-col-{c}"),
|
|
_ => write!(f, ""),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(AutoDefault)]
|
|
pub enum ItemResponsive {
|
|
#[default]
|
|
Default,
|
|
Cols(BreakPoint, u8),
|
|
}
|
|
|
|
#[rustfmt::skip]
|
|
impl fmt::Display for ItemResponsive {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
ItemResponsive::Cols(bp, c) if bp.is_breakpoint() && *c > 0 => {
|
|
write!(f, "g-col-{bp}-{c}")
|
|
}
|
|
_ => write!(f, ""),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(AutoDefault)]
|
|
pub enum ItemStart {
|
|
#[default]
|
|
Default,
|
|
Col(u8),
|
|
}
|
|
|
|
#[rustfmt::skip]
|
|
impl fmt::Display for ItemStart {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
ItemStart::Col(c) if *c > 1 => write!(f, "g-start-{c}"),
|
|
_ => write!(f, ""),
|
|
}
|
|
}
|
|
}
|