update
This commit is contained in:
parent
8208fa8899
commit
ed739d792f
35 changed files with 1675 additions and 447 deletions
78
src/ui/primitives/shadow.rs
Normal file
78
src/ui/primitives/shadow.rs
Normal file
|
@ -0,0 +1,78 @@
|
|||
use crate::ui::UIWidget;
|
||||
use maud::{Markup, Render, html};
|
||||
|
||||
pub struct Shadow(Box<dyn UIWidget>, String);
|
||||
|
||||
impl Shadow {
|
||||
pub fn medium<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "md".to_owned())
|
||||
}
|
||||
|
||||
pub fn small<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "sm".to_owned())
|
||||
}
|
||||
|
||||
pub fn regular<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), String::new())
|
||||
}
|
||||
|
||||
pub fn large<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "lg".to_owned())
|
||||
}
|
||||
|
||||
pub fn none<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "none".to_owned())
|
||||
}
|
||||
|
||||
pub fn xl<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "xl".to_owned())
|
||||
}
|
||||
|
||||
pub fn _2xl<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "2xl".to_owned())
|
||||
}
|
||||
|
||||
pub fn inner<T: UIWidget + 'static>(inner: T) -> Shadow {
|
||||
Shadow(Box::new(inner), "inner".to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
impl Render for Shadow {
|
||||
fn render(&self) -> Markup {
|
||||
self.render_with_class("")
|
||||
}
|
||||
}
|
||||
|
||||
impl UIWidget for Shadow {
|
||||
fn can_inherit(&self) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
fn base_class(&self) -> Vec<String> {
|
||||
if self.1.is_empty() {
|
||||
vec!["shadow".to_string()]
|
||||
} else {
|
||||
vec![format!("shadow-{}", self.1)]
|
||||
}
|
||||
}
|
||||
|
||||
fn extended_class(&self) -> Vec<String> {
|
||||
let mut c = self.base_class();
|
||||
c.extend_from_slice(&self.0.extended_class());
|
||||
c
|
||||
}
|
||||
|
||||
fn render_with_class(&self, class: &str) -> Markup {
|
||||
if self.0.as_ref().can_inherit() {
|
||||
self.0
|
||||
.as_ref()
|
||||
.render_with_class(&format!("{} {class}", self.base_class().join(" ")))
|
||||
} else {
|
||||
html! {
|
||||
div class=(format!("{} {class}", self.base_class().join(" "))) {
|
||||
(self.0.as_ref())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue