<!DOCTYPE html>
<link href="resources/grid.css" rel="stylesheet">
<link href="../css-intrinsic-dimensions/resources/width-keyword-classes.css" rel="stylesheet">
<style>
.grid {
    border: 2px solid black;
    position: relative;
    min-width: 30px;

    grid-auto-columns: 20px;

    padding-top: 10px;
    margin-bottom: 10px;
}

.abs { height: 5px; position: absolute; width: 100%; }

</style>
<script src="../../resources/check-layout.js"></script>
<script>
function setGridTemplate(id, gridTemplateRows, gridTemplateColumns)
{
     var gridElement = document.getElementById(id);
     gridElement.style.gridTemplateRows = gridTemplateRows;
     gridElement.style.gridTemplateColumns = gridTemplateColumns;
}

function setItemSize(id, width, height)
{
     var gridElement = document.getElementById(id);
     gridElement.style.width = width;
     gridElement.style.height = height;
}

function testGridDefinitions(gridItemsData)
{
    var length = gridItemsData.length;
    for (i = 0; i < length; ++i) {
        var item = document.getElementById(gridItemsData[i].id);
        item.setAttribute("data-expected-width", gridItemsData[i].width);
        item.setAttribute("data-expected-height", gridItemsData[i].height);
        item.setAttribute("data-offset-x", gridItemsData[i].x);
        item.setAttribute("data-offset-y", gridItemsData[i].y);
    }

    checkLayout(".grid");
}

function testChangingGridDefinitions()
{
     setGridTemplate('grid1', 'none', 'repeat(auto-fill, 20px) minmax(min-content, 40px)');

     setItemSize('item', '100px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '100', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '20', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '20', 'height': '5', 'x': '40', 'y': '0' },
         { 'id': 'a4', 'width': '40', 'height': '5', 'x': '60', 'y': '0' }
     ]);

     setItemSize('item', '80px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '80', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '20', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '40', 'height': '5', 'x': '40', 'y': '0' },
         { 'id': 'a4', 'width': '0', 'height': '5', 'x': '80', 'y': '0' }
     ]);

     setItemSize('item', '15px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '15', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '40', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '0', 'height': '5', 'x': '60', 'y': '0' },
         { 'id': 'a4', 'width': '60', 'height': '5', 'x': '0', 'y': '0' }
     ]);

     setItemSize('item', '120px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '120', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '20', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '20', 'height': '5', 'x': '40', 'y': '0' },
         { 'id': 'a4', 'width': '20', 'height': '5', 'x': '60', 'y': '0' }
     ]);

     var grid = document.getElementById('grid1');
     grid.className = grid.className.replace('max-content', 'min-content');

     setItemSize('item', '100px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '100', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '20', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '20', 'height': '5', 'x': '40', 'y': '0' },
         { 'id': 'a4', 'width': '40', 'height': '5', 'x': '60', 'y': '0' }
     ]);

     setItemSize('item', '80px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '80', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '20', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '40', 'height': '5', 'x': '40', 'y': '0' },
         { 'id': 'a4', 'width': '0', 'height': '5', 'x': '80', 'y': '0' }
     ]);

     setItemSize('item', '15px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '15', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '10', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '0', 'height': '5', 'x': '30', 'y': '0' },
         { 'id': 'a4', 'width': '30', 'height': '5', 'x': '0', 'y': '0' }
     ]);

     setItemSize('item', '120px', '30px');
     testGridDefinitions([
         { 'id': 'item', 'width': '120', 'height': '30', 'x': '0', 'y': '10' },
         { 'id': 'a1', 'width': '20', 'height': '5', 'x': '0', 'y': '0' },
         { 'id': 'a2', 'width': '20', 'height': '5', 'x': '20', 'y': '0' },
         { 'id': 'a3', 'width': '20', 'height': '5', 'x': '40', 'y': '0' },
         { 'id': 'a4', 'width': '20', 'height': '5', 'x': '60', 'y': '0' }
     ]);
}

window.addEventListener("load", testChangingGridDefinitions, false);
</script>

<div>This test checks that changing the min|max-content contributions of grid items properly recomputes both track sizes and grid positions in grids with auto repeat tracks.</div>
<div id="log"></div>

<div id="grid1" class="grid max-content">
    <div id="item" style="grid-column: 1 / -1; background: cyan;"></div>
    <div id="a1" class="abs" style="grid-column: 1 / 2; background: purple;"></div>
    <div id="a2" class="abs" style="grid-column: 2 / 3; background: orange;"></div>
    <div id="a3" class="abs" style="grid-column: 3 / 4; background: yellow;"></div>
    <div id="a4" class="abs" style="grid-column: 4 / 5; background: magenta;"></div>
</div>
