Skip to content
Refaltor77 edited this page Mar 29, 2026 · 1 revision

Grid

Dynamic grid layout for repeated elements (inventories, lists, etc.).

Creation

use refaltor\ui\elements\Grid;

$grid = Grid::create("my_grid");

Properties

$grid->setGridDimensions([3, 3]);                   // [columns, rows]
$grid->setMaximumGridItems(9);                       // Max items to show
$grid->setGridItemTemplate("common.inventory_slot"); // Template for each cell
$grid->setGridFillDirection("horizontal");           // horizontal | vertical
$grid->setGridRescalingType("horizontal");           // horizontal | vertical | none
$grid->setGridDimensionBinding("#collection_length");// Dynamic dimension
$grid->setPrecachedGridItemCount(9);                 // Pre-cache count

Complete Example

Inventory Grid (3x3)

$grid = Grid::create("inventory_grid")
    ->setGridDimensions([3, 3])
    ->setMaximumGridItems(9)
    ->setGridItemTemplate("common.inventory_slot")
    ->setGridFillDirection("horizontal")
    ->setGridRescalingType("horizontal")
    ->setSize(180, 180)
    ->setAnchorFrom(Element::ANCHOR_CENTER)
    ->setAnchorTo(Element::ANCHOR_CENTER);

Vertical List

$list = Grid::create("item_list")
    ->setGridDimensions([1, 5])
    ->setMaximumGridItems(5)
    ->setGridFillDirection("vertical")
    ->setSize(200, 250);

Dynamic Grid with Binding

$dynamicGrid = Grid::create("dynamic_grid")
    ->setGridDimensions([4, 1])
    ->setGridDimensionBinding("#collection_length")
    ->setGridItemTemplate("my_namespace.grid_item_template")
    ->addBinding(Binding::global("#collection_length", "#collection_length"));

See Also

Clone this wiki locally