tailwind_css_fixes/modules/layouts/placement/
inset.rs

1use super::*;
2
3#[doc=include_str!("readme.md")]
4#[derive(Clone, Debug)]
5pub struct TailwindInset {
6    axis: AxisXY,
7    kind: UnitValue,
8}
9
10impl Display for TailwindInset {
11    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12        self.kind.write_negative(f)?;
13        self.axis.write_xyn(f, "inset", &self.kind)
14    }
15}
16
17impl TailwindInstance for TailwindInset {
18    fn attributes(&self, _: &TailwindBuilder) -> CssAttributes {
19        let size = self.kind.get_properties_rem();
20        match self.axis {
21            AxisXY::X => css_attributes! {
22                "right" => &size,
23                "left" => &size,
24            },
25            AxisXY::Y => css_attributes! {
26                "top" => &size,
27                "bottom" => &size,
28            },
29            AxisXY::N => css_attributes! {
30                "top" => &size,
31                "right" => &size,
32                "bottom" => &size,
33                "left" => &size,
34            },
35        }
36    }
37}
38
39impl TailwindInset {
40    pub fn parse(pattern: &[&str], arbitrary: &TailwindArbitrary, negative: Negative) -> Result<Self> {
41        let (axis, rest) = AxisXY::split_xyn(pattern);
42        let kind = get_kind_px_full_auto_fract("inset", rest, arbitrary, negative)?;
43        Ok(Self { axis, kind })
44    }
45    /// <https://developer.mozilla.org/en-US/docs/Web/CSS/inset#syntax>
46    pub fn check_valid(mode: &str) -> bool {
47        ["auto", "inherit", "initial", "revert", "unset"].contains(&mode)
48    }
49}