<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: evaluate how the baseline affects the grid intrinsic size</title>
<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid/#alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-align-self">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-by-baseline">
<link rel="stylesheet" href="/fonts/ahem.css">
<link rel="stylesheet" href="/css/support/alignment.css">
<link rel="stylesheet" href="/css/support/grid.css">
<meta name="assert" content="The grid intrinsic size is comptuted correctly, considering the effect of baseline alignment in the size of the column tracks"/>
<style>
body { margin: 0; }
.grid {
   position: relative;
   background: grey;
   float: left;
   margin: 5px;
   text-orientation: sideways;
   width: 350px;
   font-family: Ahem;
   line-height: 1;
   grid-auto-flow: row;
}
.grid > :nth-child(1) { font-size:20px; }
.grid > :nth-child(2) { font-size:30px; }
.grid > :nth-child(3) { font-size:50px; }
.grid > :nth-child(4) { font-size:60px; }
.item {
   border-width: 2px 5px 3px 4px;
   border-style: solid;
   padding: 6px 3px 7px 8px;
   margin: 10px 6px 4px 12px;
}
.extraTopPadding { padding-top: 50px; }
.extraBottomPadding { padding-bottom: 50px; }
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script type="text/javascript">
  setup({ explicit_done: true });
</script>

<body onload="document.fonts.ready.then(() => { runTests(); })">

<p>Vertical LR 4x1 grid with parallel and orthogonal items.</p>
<div id="grid1" class="grid verticalLR contentStart itemsBaseline" data-expected-height="92">
    <div class="item"                                 data-offset-x="12"  data-offset-y="10"  data-expected-width="40" data-expected-height="38">É</div>
    <div class="item horizontalTB"                    data-offset-x="70"  data-offset-y="34"  data-expected-width="50" data-expected-height="48">É</div>
    <div class="item"                                 data-offset-x="138" data-offset-y="10"  data-expected-width="70" data-expected-height="68">É</div>
    <div class="item horizontalTB"                    data-offset-x="226" data-offset-y="10"  data-expected-width="80" data-expected-height="78">É</div>
</div>
<div id="grid2" class="grid verticalLR contentStart itemsBaseline" data-expected-height="129">
    <div class="item extraTopPadding"                 data-offset-x="12"  data-offset-y="10"  data-expected-width="40" data-expected-height="82">É</div>
    <div class="item horizontalTB extraBottomPadding" data-offset-x="70"  data-offset-y="34"  data-expected-width="50" data-expected-height="91">É</div>
    <div class="item"                                 data-offset-x="138" data-offset-y="10"  data-expected-width="70" data-expected-height="68">É</div>
    <div class="item horizontalTB"                    data-offset-x="226" data-offset-y="10"  data-expected-width="80" data-expected-height="78">É</div>
</div>

<br clear="all">

<script>
    "use strict";
    function runTests() {

        let values = [ "auto", "min-content", "max-content" ];
        let minValues = values.concat([ "0px" ]);

        var grid1 = document.getElementById("grid1");
        var grid2 = document.getElementById("grid2");

        minValues.forEach(function (minValue) {
            values.forEach(function (maxValue) {

                grid1.id = "grid1-" + minValue + "-" + maxValue
                grid2.id = "grid2-" + minValue + "-" + maxValue

                grid1.style.gridTemplateColumns = "minmax(" + minValue + ", " + maxValue + ")";
                grid2.style.gridTemplateColumns = "minmax(" + minValue + ", " + maxValue + ")";

                checkLayout("#" + grid1.id, false);
                checkLayout("#" + grid2.id, false);
            });
        });

        done();
    }
</script>

</body>
