Web component wrapper. Drag to rearrange, resize from edges.
Drag items to rearrange. Resize from corners/edges. Arrow keys to navigate.
CSS positions items before JS loads — no flash of unstyled content. Persist layout changes via egg-drag-end events.
<script type="module" src="eg-grid-element.js"></script>
<style>
eg-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 8px;
}
[data-egg-item="a"] { grid-column: 1 / span 2; grid-row: 1; }
[data-egg-item="b"] { grid-column: 3; grid-row: 1; }
</style>
<eg-grid algorithm="push" resize-handles="all">
<div data-egg-item="a">A</div>
<div data-egg-item="b">B</div>
</eg-grid>
Attributes configure the grid. Items auto-flow — no CSS needed. Simpler setup for SPAs where JS is always available.
<script type="module" src="eg-grid-element.js"></script>
<eg-grid columns="4" gap="8"
algorithm="push" resize-handles="all">
<div data-egg-item="a">A</div>
<div data-egg-item="b">B</div>
</eg-grid>
Optional for both approaches. Add cell-size to auto-generate container query breakpoints
that reflow items as the grid resizes. Without it, column count stays fixed.
<eg-grid columns="4" cell-size="120" gap="8" ...>