Add the grid layout component
Plan step 35: <x-grid :columns gap min-item>. The column count per breakpoint is written as five inline custom properties, each filled from the nearest smaller breakpoint, so a nested grid never inherits its parent's; min-item fills a row by the room the grid has, and with columns the counts become a ceiling. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qwx5USif3wFFmxtHg5U1g9
This commit is contained in:
co-authored by
Claude Opus 5
parent
8de053f15c
commit
da7a05a619
@@ -95,3 +95,34 @@ it('mirrors a row in a right-to-left document', function () {
|
||||
layoutPage('<x-row id="row"><span id="first">First</span><span id="second">Second</span></x-row>', 800, 600, 'rtl')
|
||||
->assertScript(layoutRect('#first', 'left').' > '.layoutRect('#second', 'left'));
|
||||
});
|
||||
|
||||
it('gives a grid its columns per breakpoint, and a nested grid its own', function () {
|
||||
$body = <<<'BLADE'
|
||||
<x-grid id="outer" :columns="['medium' => 3, 'large' => 4]" gap="space200">
|
||||
<x-grid id="inner"><div>A</div><div>B</div></x-grid>
|
||||
<div>2</div><div>3</div><div>4</div>
|
||||
</x-grid>
|
||||
BLADE;
|
||||
|
||||
layoutPage($body, 599)
|
||||
->assertScript(layoutColumns('#outer').' === 1')
|
||||
->assertScript(layoutColumns('#inner').' === 1');
|
||||
|
||||
layoutPage($body, 600)
|
||||
->assertScript(layoutColumns('#outer').' === 3')
|
||||
->assertScript(layoutStyle('#outer', 'columnGap')." === '16px'")
|
||||
// The parent's three never reach the grid inside it.
|
||||
->assertScript(layoutColumns('#inner').' === 1');
|
||||
|
||||
layoutPage($body, 1199)->assertScript(layoutColumns('#outer').' === 3');
|
||||
layoutPage($body, 1200)->assertScript(layoutColumns('#outer').' === 4');
|
||||
});
|
||||
|
||||
it('fills a grid with columns of a minimum width, capped by the count', function () {
|
||||
$body = '<div style="width: 580px"><x-grid id="fill" min-item="180px"><div>1</div><div>2</div><div>3</div><div>4</div></x-grid></div>'
|
||||
.'<div style="width: 580px"><x-grid id="capped" min-item="100px" :columns="[\'compact\' => 2]" gap="space200"><div>1</div><div>2</div><div>3</div><div>4</div></x-grid></div>';
|
||||
|
||||
layoutPage($body, 800)
|
||||
->assertScript(layoutColumns('#fill').' === 3')
|
||||
->assertScript(layoutColumns('#capped').' === 2');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user