polished_css/property/scroll/
overflow.rs

1//! FIXME: Handle shorthands
2
3macro_rules! create_overflow_struct {
4    ($property:ident, $atomic:expr) => {
5        $crate::create_property!(
6            $property,
7            display = "",
8            atomic = $atomic,
9            custom = false,
10            data_type = "",
11            initial_value = Visible,
12            keywords = "visible,hidden,clip,scroll,auto",
13        );
14    };
15}
16
17create_overflow_struct!(Overflow, "flow");
18create_overflow_struct!(OverflowX, "flow-x");
19create_overflow_struct!(OverflowY, "flow-y");
20create_overflow_struct!(OverflowBlock, "flow-bl");
21create_overflow_struct!(OverflowInline, "flow-in");
22
23crate::create_property!(
24    OverflowAnchor,
25    display = "",
26    atomic = "flow-a",
27    custom = false,
28    data_type = "",
29    initial_value = Auto,
30    keywords = "auto,none",
31);
32
33crate::create_property!(
34    OverflowClipMargin,
35    display = "",
36    atomic = "flow-clip-m",
37    custom = false,
38    data_type = "<length>",
39    initial_value = Initial,
40    keywords = "content-box,padding-box,border-box",
41);
42
43crate::create_property!(
44    OverflowWrap,
45    display = "",
46    atomic = "flow-w",
47    custom = false,
48    data_type = "",
49    initial_value = Normal,
50    keywords = "normal,break-word,anywhere",
51);
52
53#[cfg(test)]
54mod test {
55    #[test]
56    fn overflows() {
57        macro_rules! test_property {
58            ($property:ident, $name:expr, $atomic:expr) => {
59                crate::test_property_initial_value!($property, Visible);
60                crate::test_global_keywords!($property, $name);
61                crate::test_function_var!($property, $name);
62                #[cfg(feature = "atomic")]
63                crate::test_atomic_property!($property, $atomic);
64            };
65        }
66        test_property!(Overflow, "overflow", "flow");
67        test_property!(OverflowX, "overflow-x", "flow-x");
68        test_property!(OverflowY, "overflow-y", "flow-y");
69        test_property!(OverflowBlock, "overflow-block", "flow-bl");
70        test_property!(OverflowInline, "overflow-inline", "flow-in");
71    }
72
73    #[test]
74    fn overflow_anchor() {
75        let name = "overflow-anchor";
76        crate::test_property_initial_value!(OverflowAnchor, Auto);
77        crate::test_global_keywords!(OverflowAnchor, name);
78        crate::test_function_var!(OverflowAnchor, name);
79        #[cfg(feature = "atomic")]
80        crate::test_atomic_property!(OverflowAnchor, "flow-a");
81    }
82
83    #[test]
84    fn overflow_clip_margin() {
85        let name = "overflow-clip-margin";
86        crate::test_property_initial_value!(OverflowClipMargin, Initial);
87        crate::test_global_keywords!(OverflowClipMargin, name);
88        crate::test_function_var!(OverflowClipMargin, name);
89        #[cfg(feature = "atomic")]
90        crate::test_atomic_property!(OverflowClipMargin, "flow-clip-m");
91    }
92
93    #[test]
94    fn overflow_wrap() {
95        let name = "overflow-wrap";
96        crate::test_property_initial_value!(OverflowWrap, Normal);
97        crate::test_global_keywords!(OverflowWrap, name);
98        crate::test_function_var!(OverflowWrap, name);
99        #[cfg(feature = "atomic")]
100        crate::test_atomic_property!(OverflowWrap, "flow-w");
101    }
102}