ComfyCoders TranquilTools
Docs /Laravel Vue FormBuilder
Repository
v1

Columns

Fields stack below each other by default. Two places lay them out in columns instead, and both collapse to a single column below the md breakpoint.

On the whole form

Set the columns of the whole form in PHP with FormConfig::columns(n), 1 to 4; the schema carries them as columns:

public function configure(FormConfig $form): void
{
    $form->columns(2);
}

Or use the columns prop of <Form> (and FormRenderer), which wins over the schema:

<template>
    <Form :schema="form" :columns="3" />
</template>

A schema without columns (the default) leaves the form at one column, as before. FormConfig::columns() requires tranquil-tools/laravel-form-builder 1.6 and laravel-vue-form-builder 1.9; an older renderer ignores it.

On a section

Section::make()->columns(n) lays out the fields of that section only, whatever the form does:

Section::make()
    ->title('Address')
    ->columns(3)
    ->fields([
        Text::make('street')->columnSpan(2),
        Text::make('number'),
        Text::make('postcode'),
        Text::make('city')->columnSpan(2),
    ]),

A nested section without ->columns() uses the columns of the section around it, or those of the form; ->columns(1) stacks its fields again. See Sections.

Spanning columns

Method Effect
->columnSpan(n) the field takes n columns; more than there are means the whole row
->columnSpanFull() the field takes the whole row

Textareas, WYSIWYG editors, repeaters, key-value fields, buttons, hidden fields and sections take the whole row unless they set a ->columnSpan(). From the Vue side, fullWidth and columnSpan in field-overrides do the same:

<Form :schema="form" :columns="2" :field-overrides="{ notes: { fullWidth: true } }" />

The grid uses md:grid-cols-2 to md:grid-cols-4 and md:col-span-2 to md:col-span-4. They live in the package's Vue components, so the @source line from Installation picks them up.

Requires tranquil-tools/laravel-form-builder 1.5 and laravel-vue-form-builder 1.8 or newer for sections and spans; form-level columns 3 and 4 only need the renderer.