Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 19:00
897df31

0.3.0 (2026-10-20)

⚠ BREAKING CHANGES

  • reject configuring a table column or action twice (#77)

Features

  • compute table column values with map() (#75) (036c505)
  • let a table list the records of a query or relationship (#82) (90b33f9)
  • reject a mapped text column value that is not text (#78) (05010ef)
  • reject configuring a table column or action twice (#77) (b2775de)

Upgrade guide

Action configuration methods can only be called once

Calling to(), route(), confirm(), destructive(), disabled() or
icon() a second time on the same action used to silently replace the first
call. It now throws an InvalidTableAction exception with the code
larasell-admin.table.action.configured-twice, so a call that has no effect
can't hide in a table definition.

Who is affected

Tables that call one of these methods more than once on the same
Larasell\Admin\Tables\Actions\Action, including to() followed by route(),
since both set the link. If every method is called at most once per action,
you can skip this entry.

How to upgrade

Keep only the call you want to take effect, usually the last one:

use Larasell\Admin\Tables\Actions\Action;

// Before
Action::make('Delete', handle: fn (Book $book) => $book->delete())
    ->disabled()
    ->disabled(fn (Book $book) => $book->is_locked);

// After
Action::make('Delete', handle: fn (Book $book) => $book->delete())
    ->disabled(fn (Book $book) => $book->is_locked);

Table column names must be unique and not reserved

A table whose columns share a name, or that has a column named _actions or
_link, now throws an InvalidTableColumn exception when it renders. Each row
stores a column's value under its name, so such a column silently overwrote
another column's value or the row's actions or link.

Who is affected

Tables whose columns() return two columns with the same name, or a column
named _actions or _link. Tables with unique column names that don't start
with an underscore are not affected. An id column is still allowed.

How to upgrade

Give the second column its own name and read the attribute in map():

use Larasell\Admin\Tables\Columns\TextColumn;

// Before
TextColumn::make('created_at', 'Received')->map(fn ($value) => $value?->diffForHumans()),
TextColumn::make('created_at', 'Date'),

// After
TextColumn::make('received')->map(fn ($value, ContactRequest $request) => $request->created_at?->diffForHumans()),
TextColumn::make('created_at', 'Date'),