Skip to content

Commit f904900

Browse files
committed
grid-auto-rows/columns
1 parent 9579d90 commit f904900

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5627,5 +5627,15 @@ mod tests {
56275627
minify_test(".foo { grid-template-columns: 200px repeat(auto-fill, 100px) 300px; }", ".foo{grid-template-columns:200px repeat(auto-fill,100px) 300px}");
56285628
minify_test(".foo { grid-template-columns: [linename1 linename2] 100px repeat(auto-fit, [linename1] 300px) [linename3]; }", ".foo{grid-template-columns:[linename1 linename2]100px repeat(auto-fit,[linename1]300px)[linename3]}");
56295629
minify_test(".foo { grid-template-rows: [linename1 linename2] 100px repeat(auto-fit, [linename1] 300px) [linename3]; }", ".foo{grid-template-rows:[linename1 linename2]100px repeat(auto-fit,[linename1]300px)[linename3]}");
5630+
5631+
minify_test(".foo { grid-auto-rows: auto; }", ".foo{grid-auto-rows:auto}");
5632+
minify_test(".foo { grid-auto-rows: 1fr; }", ".foo{grid-auto-rows:1fr}");
5633+
minify_test(".foo { grid-auto-rows: 100px; }", ".foo{grid-auto-rows:100px}");
5634+
minify_test(".foo { grid-auto-rows: min-content; }", ".foo{grid-auto-rows:min-content}");
5635+
minify_test(".foo { grid-auto-rows: max-content; }", ".foo{grid-auto-rows:max-content}");
5636+
minify_test(".foo { grid-auto-rows: minmax(100px,auto); }", ".foo{grid-auto-rows:minmax(100px,auto)}");
5637+
minify_test(".foo { grid-auto-rows: fit-content(20%); }", ".foo{grid-auto-rows:fit-content(20%)}");
5638+
minify_test(".foo { grid-auto-rows: 100px minmax(100px, auto) 10% 0.5fr fit-content(400px); }", ".foo{grid-auto-rows:100px minmax(100px,auto) 10% .5fr fit-content(400px)}");
5639+
minify_test(".foo { grid-auto-columns: 100px minmax(100px, auto) 10% 0.5fr fit-content(400px); }", ".foo{grid-auto-columns:100px minmax(100px,auto) 10% .5fr fit-content(400px)}");
56305640
}
56315641
}

src/properties/grid.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ pub enum TrackSize {
3636
FitContent(LengthPercentage)
3737
}
3838

39+
/// https://drafts.csswg.org/css-grid-2/#auto-tracks
40+
#[derive(Debug, Clone, PartialEq)]
41+
pub struct TrackSizeList(pub SmallVec<[TrackSize; 1]>);
42+
3943
/// https://drafts.csswg.org/css-grid-2/#typedef-track-breadth
4044
#[derive(Debug, Clone, PartialEq)]
4145
pub enum TrackBreadth {
@@ -347,3 +351,28 @@ impl ToCss for TrackSizing {
347351
}
348352
}
349353
}
354+
355+
impl Parse for TrackSizeList {
356+
fn parse<'i, 't>(input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, ()>> {
357+
let mut res = SmallVec::new();
358+
while let Ok(size) = input.try_parse(TrackSize::parse) {
359+
res.push(size)
360+
}
361+
Ok(TrackSizeList(res))
362+
}
363+
}
364+
365+
impl ToCss for TrackSizeList {
366+
fn to_css<W>(&self, dest: &mut Printer<W>) -> std::fmt::Result where W: std::fmt::Write {
367+
let mut first = true;
368+
for item in &self.0 {
369+
if first {
370+
first = false;
371+
} else {
372+
dest.write_char(' ')?;
373+
}
374+
item.to_css(dest)?;
375+
}
376+
Ok(())
377+
}
378+
}

src/properties/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,8 @@ define_properties! {
334334

335335
"grid-template-columns": GridTemplateColumns(TrackSizing),
336336
"grid-template-rows": GridTemplateRows(TrackSizing),
337+
"grid-auto-columns": GridAutoColumns(TrackSizeList),
338+
"grid-auto-rows": GridAutoRows(TrackSizeList),
337339

338340
"margin-top": MarginTop(LengthPercentageOrAuto),
339341
"margin-bottom": MarginBottom(LengthPercentageOrAuto),

0 commit comments

Comments
 (0)