encre_css/plugins/grid/
mod.rs

1//! Grid utilities
2pub mod gap;
3pub mod grid_auto_columns;
4pub mod grid_auto_flow;
5pub mod grid_auto_rows;
6pub mod grid_column;
7pub mod grid_row;
8pub mod grid_template_columns;
9pub mod grid_template_rows;
10
11#[cfg(test)]
12mod tests {
13    use crate::{generate, utils::testing::base_config};
14
15    use pretty_assertions::assert_eq;
16
17    #[test]
18    fn gap() {
19        // gap
20        assert_eq!(
21            generate(["gap-4"], &base_config()),
22            ".gap-4 {
23  gap: 1rem;
24}"
25        );
26        assert_eq!(
27            generate(["-gap-4"], &base_config()),
28            ".-gap-4 {
29  gap: -1rem;
30}"
31        );
32        assert_eq!(
33            generate(["gap-[40px]"], &base_config()),
34            r".gap-\[40px\] {
35  gap: 40px;
36}"
37        );
38
39        // gap-x
40        assert_eq!(
41            generate(["gap-x-4"], &base_config()),
42            ".gap-x-4 {
43  column-gap: 1rem;
44}"
45        );
46        assert_eq!(
47            generate(["-gap-x-4"], &base_config()),
48            ".-gap-x-4 {
49  column-gap: -1rem;
50}"
51        );
52        assert_eq!(
53            generate(["gap-x-[40px]"], &base_config()),
54            r".gap-x-\[40px\] {
55  column-gap: 40px;
56}"
57        );
58
59        // gap-y
60        assert_eq!(
61            generate(["gap-y-4"], &base_config()),
62            ".gap-y-4 {
63  row-gap: 1rem;
64}"
65        );
66        assert_eq!(
67            generate(["-gap-y-4"], &base_config()),
68            ".-gap-y-4 {
69  row-gap: -1rem;
70}"
71        );
72        assert_eq!(
73            generate(["gap-y-[40px]"], &base_config()),
74            r".gap-y-\[40px\] {
75  row-gap: 40px;
76}"
77        );
78    }
79
80    #[test]
81    fn grid_auto_columns() {
82        assert_eq!(
83            generate(["auto-cols-auto"], &base_config()),
84            ".auto-cols-auto {
85  grid-auto-columns: auto;
86}"
87        );
88        assert_eq!(
89            generate(["auto-cols-fr"], &base_config()),
90            ".auto-cols-fr {
91  grid-auto-columns: minmax(0, 1fr);
92}"
93        );
94        assert_eq!(
95            generate(
96                ["auto-cols-[100px_minmax(100px,_auto)_10%_0.5fr_fit-content(400px)]"],
97                &base_config(),
98            ),
99            r".auto-cols-\[100px_minmax\(100px\,_auto\)_10\%_0\.5fr_fit-content\(400px\)\] {
100  grid-auto-columns: 100px minmax(100px, auto) 10% 0.5fr fit-content(400px);
101}"
102        );
103    }
104
105    #[test]
106    fn grid_auto_flow() {
107        assert_eq!(
108            generate(["grid-flow-row"], &base_config()),
109            ".grid-flow-row {
110  grid-auto-flow: row;
111}"
112        );
113        assert_eq!(
114            generate(["grid-flow-col-dense"], &base_config()),
115            ".grid-flow-col-dense {
116  grid-auto-flow: column dense;
117}"
118        );
119    }
120
121    #[test]
122    fn grid_auto_rows() {
123        assert_eq!(
124            generate(["auto-rows-auto"], &base_config()),
125            ".auto-rows-auto {
126  grid-auto-rows: auto;
127}"
128        );
129        assert_eq!(
130            generate(["auto-rows-fr"], &base_config()),
131            ".auto-rows-fr {
132  grid-auto-rows: minmax(0, 1fr);
133}"
134        );
135        assert_eq!(
136            generate(
137                ["auto-rows-[100px_minmax(100px,_auto)_10%_0.5fr_fit-content(400px)]"],
138                &base_config(),
139            ),
140            r".auto-rows-\[100px_minmax\(100px\,_auto\)_10\%_0\.5fr_fit-content\(400px\)\] {
141  grid-auto-rows: 100px minmax(100px, auto) 10% 0.5fr fit-content(400px);
142}"
143        );
144    }
145
146    #[test]
147    fn grid_column() {
148        assert_eq!(
149            generate(["col-auto"], &base_config()),
150            ".col-auto {
151  grid-column: auto;
152}"
153        );
154        assert_eq!(
155            generate(["col-span-12"], &base_config()),
156            ".col-span-12 {
157  grid-column: span 12 / span 12;
158}"
159        );
160        assert_eq!(
161            generate(["col-span-full"], &base_config()),
162            ".col-span-full {
163  grid-column: 1 / -1;
164}"
165        );
166        assert_eq!(
167            generate(["col-start-2"], &base_config()),
168            ".col-start-2 {
169  grid-column-start: 2;
170}"
171        );
172        assert_eq!(
173            generate(["col-end-4"], &base_config()),
174            ".col-end-4 {
175  grid-column-end: 4;
176}"
177        );
178        assert_eq!(
179            generate(["col-[span_2_/_7]"], &base_config()),
180            r".col-\[span_2_\/_7\] {
181  grid-column: span 2 / 7;
182}"
183        );
184    }
185
186    #[test]
187    fn grid_row() {
188        assert_eq!(
189            generate(["row-auto"], &base_config()),
190            ".row-auto {
191  grid-row: auto;
192}"
193        );
194        assert_eq!(
195            generate(["row-span-12"], &base_config()),
196            ".row-span-12 {
197  grid-row: span 12 / span 12;
198}"
199        );
200        assert_eq!(
201            generate(["row-span-full"], &base_config()),
202            ".row-span-full {
203  grid-row: 1 / -1;
204}"
205        );
206        assert_eq!(
207            generate(["row-start-2"], &base_config()),
208            ".row-start-2 {
209  grid-row-start: 2;
210}"
211        );
212        assert_eq!(
213            generate(["row-end-4"], &base_config()),
214            ".row-end-4 {
215  grid-row-end: 4;
216}"
217        );
218        assert_eq!(
219            generate(["row-[span_2_/_7]"], &base_config()),
220            r".row-\[span_2_\/_7\] {
221  grid-row: span 2 / 7;
222}"
223        );
224    }
225
226    #[test]
227    fn grid_template_columns() {
228        assert_eq!(
229            generate(["grid-cols-4"], &base_config()),
230            ".grid-cols-4 {
231  grid-template-columns: repeat(4, minmax(0, 1fr));
232}"
233        );
234        assert_eq!(
235            generate(["grid-cols-none"], &base_config()),
236            ".grid-cols-none {
237  grid-template-columns: none;
238}"
239        );
240    }
241
242    #[test]
243    fn grid_template_rows() {
244        assert_eq!(
245            generate(["grid-rows-4"], &base_config()),
246            ".grid-rows-4 {
247  grid-template-rows: repeat(4, minmax(0, 1fr));
248}"
249        );
250        assert_eq!(
251            generate(["grid-rows-none"], &base_config()),
252            ".grid-rows-none {
253  grid-template-rows: none;
254}"
255        );
256    }
257}