diff --git a/Tests/LibWeb/Layout/expected/grid/all-implicit-rows.txt b/Tests/LibWeb/Layout/expected/grid/all-implicit-rows.txt new file mode 100644 index 0000000000..e46ad3ff96 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/grid/all-implicit-rows.txt @@ -0,0 +1,36 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x600 [BFC] children: not-inline + BlockContainer at (8,8) content-size 784x200 children: not-inline + Box at (8,8) content-size 784x200 [GFC] children: not-inline + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> + BlockContainer at (8,8) content-size 392x100 [BFC] children: inline + line 0 width: 6.34375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 1, rect: [8,8 6.34375x17.46875] + "1" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> + BlockContainer at (400,8) content-size 392x100 [BFC] children: inline + line 0 width: 8.8125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 1, rect: [400,8 8.8125x17.46875] + "2" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> + BlockContainer at (8,108) content-size 392x100 [BFC] children: inline + line 0 width: 9.09375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 1, rect: [8,108 9.09375x17.46875] + "3" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> + BlockContainer at (400,108) content-size 392x100 [BFC] children: inline + line 0 width: 7.75, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 1, rect: [400,108 7.75x17.46875] + "4" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> + BlockContainer <(anonymous)> at (8,208) content-size 784x0 children: inline + TextNode <#text> diff --git a/Tests/LibWeb/Layout/input/grid/all-implicit-rows.html b/Tests/LibWeb/Layout/input/grid/all-implicit-rows.html new file mode 100644 index 0000000000..d9fd9fc906 --- /dev/null +++ b/Tests/LibWeb/Layout/input/grid/all-implicit-rows.html @@ -0,0 +1,18 @@ + +
+
1
+
2
+
3
+
4
+
diff --git a/Userland/Libraries/LibWeb/CSS/ComputedValues.h b/Userland/Libraries/LibWeb/CSS/ComputedValues.h index 5c13a4ed9b..b750570fa3 100644 --- a/Userland/Libraries/LibWeb/CSS/ComputedValues.h +++ b/Userland/Libraries/LibWeb/CSS/ComputedValues.h @@ -77,8 +77,8 @@ public: static CSS::Size height() { return CSS::Size::make_auto(); } static CSS::Size min_height() { return CSS::Size::make_auto(); } static CSS::Size max_height() { return CSS::Size::make_none(); } - static CSS::GridTrackSizeList grid_template_columns() { return CSS::GridTrackSizeList::make_auto(); } - static CSS::GridTrackSizeList grid_template_rows() { return CSS::GridTrackSizeList::make_auto(); } + static CSS::GridTrackSizeList grid_template_columns() { return CSS::GridTrackSizeList::make_none(); } + static CSS::GridTrackSizeList grid_template_rows() { return CSS::GridTrackSizeList::make_none(); } static CSS::GridTrackPlacement grid_column_end() { return CSS::GridTrackPlacement::make_auto(); } static CSS::GridTrackPlacement grid_column_start() { return CSS::GridTrackPlacement::make_auto(); } static CSS::GridTrackPlacement grid_row_end() { return CSS::GridTrackPlacement::make_auto(); } diff --git a/Userland/Libraries/LibWeb/CSS/GridTrackSize.cpp b/Userland/Libraries/LibWeb/CSS/GridTrackSize.cpp index 304fcdbe61..ac09fb3936 100644 --- a/Userland/Libraries/LibWeb/CSS/GridTrackSize.cpp +++ b/Userland/Libraries/LibWeb/CSS/GridTrackSize.cpp @@ -197,7 +197,7 @@ GridTrackSizeList::GridTrackSizeList() { } -GridTrackSizeList GridTrackSizeList::make_auto() +GridTrackSizeList GridTrackSizeList::make_none() { return GridTrackSizeList(); } diff --git a/Userland/Libraries/LibWeb/CSS/GridTrackSize.h b/Userland/Libraries/LibWeb/CSS/GridTrackSize.h index 87206ec053..5183153efd 100644 --- a/Userland/Libraries/LibWeb/CSS/GridTrackSize.h +++ b/Userland/Libraries/LibWeb/CSS/GridTrackSize.h @@ -91,7 +91,7 @@ public: GridTrackSizeList(Vector track_list, Vector> line_names); GridTrackSizeList(); - static GridTrackSizeList make_auto(); + static GridTrackSizeList make_none(); Vector track_list() const { return m_track_list; } Vector> line_names() const { return m_line_names; } diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index e365d7eef9..ee59ee62b8 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -6856,6 +6856,13 @@ Optional Parser::parse_track_sizing_function(ComponentVa ErrorOr> Parser::parse_grid_track_size_list(Vector const& component_values, bool allow_separate_line_name_blocks) { + if (component_values.size() == 1 && component_values.first().is(Token::Type::Ident)) { + auto ident = TRY(parse_identifier_value(component_values.first())); + if (ident && ident->to_identifier() == ValueID::None) { + return GridTrackSizeListStyleValue::make_none(); + } + } + Vector track_list; Vector> line_names_list; auto last_object_was_line_names = false; diff --git a/Userland/Libraries/LibWeb/CSS/Properties.json b/Userland/Libraries/LibWeb/CSS/Properties.json index e650d898f4..3455c61833 100644 --- a/Userland/Libraries/LibWeb/CSS/Properties.json +++ b/Userland/Libraries/LibWeb/CSS/Properties.json @@ -1099,7 +1099,7 @@ }, "grid-template-columns": { "inherited": false, - "initial": "auto", + "initial": "none", "max-values": 4, "valid-identifiers": [ "auto" @@ -1112,7 +1112,7 @@ }, "grid-template-rows": { "inherited": false, - "initial": "auto", + "initial": "none", "max-values": 4, "valid-identifiers": [ "auto" diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.cpp index d32262e6b0..3a1538cde0 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.cpp @@ -26,4 +26,9 @@ ErrorOr> GridTrackSizeL return adopt_nonnull_ref_or_enomem(new (nothrow) GridTrackSizeListStyleValue(CSS::GridTrackSizeList())); } +ErrorOr> GridTrackSizeListStyleValue::make_none() +{ + return adopt_nonnull_ref_or_enomem(new (nothrow) GridTrackSizeListStyleValue(CSS::GridTrackSizeList())); +} + } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.h index db0ffe2be7..bc973db41e 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackSizeListStyleValue.h @@ -20,6 +20,7 @@ public: virtual ~GridTrackSizeListStyleValue() override = default; static ErrorOr> make_auto(); + static ErrorOr> make_none(); CSS::GridTrackSizeList grid_track_size_list() const { return m_grid_track_size_list; }