Skip to main content
← Back to Table of Contents

Summary

Read-only table column for displaying users with the same visual language as UserSelect. Automatically switches between a rich single-user layout and an overlapping avatar stack for multiple users.
ClassBjanczak\FilamentFlexFields\Filament\Tables\Columns\UserColumn
ContextFilament tables ($table->columns([...]))
State typeModel, Collection of models, or list<Model>
ParentFilament\Tables\Columns\TextColumn
Playgrounduser-column slug in Flex Fields playground

Basic usage

Single User (BelongsTo)

use Bjanczak\FilamentFlexFields\Filament\Tables\Columns\UserColumn;

UserColumn::make('author')
    ->label('Author')
    ->nameColumn('name')
    ->emailColumn('email')
    ->avatarColumn('avatar_url')
    ->verificationColumn('email_verified_at');

Multiple Users (BelongsToMany)

UserColumn::make('members')
    ->label('Team Members')
    ->maxVisibleAvatars(4)
    ->stackedOverlap(10);

State format

State must be an Eloquent Model or a collection/array of models. UserColumn automatically handles eager-loading for direct relationship columns.

Configuration API

All methods accept Closure unless noted.
MethodTypeDefaultDescription
nameColumn(string $column)Setup'name'Name attribute
emailColumn(string $column)SetupnullEmail / subtitle attribute
avatarColumn(string $column)SetupnullAvatar URL attribute
verificationColumn(string $col)SetupnullVerified badge attribute
maxVisibleAvatars(int $limit)Setup4Max avatars in stack before +N
stackedRing(int $px)Setup2Ring width around stacked avatars
stackedOverlap(int $px)Setup10Overlap between stacked avatars
stackTooltips(bool $cond)SetuptrueShow names in tooltips on stack
eagerLoad(string|array $rels)SetupExtra relationships to eager-load
sharedStackUsing(Closure $cb)SetupCache identical stacks per page

Real-world examples

Project Members Stack

UserColumn::make('members')
    ->maxVisibleAvatars(5)
    ->stackTooltips()
    ->getAvatarUrlUsing(fn ($user) => $user->getFilamentAvatarUrl());

Shared Preview Column

UserColumn::make('team_preview')
    ->sharedStackUsing(fn () => User::query()->limit(10)->get());

Performance

  • Auto Eager-Loading: Automatically calls with() for relationship columns.
  • Render Cache: Per-request caching of rendered HTML for identical stacks.
  • Lazy CSS: Stylesheets are loaded only when the column is rendered.

Playground

/admin/flex-fields-playground/user-column See Playground for setup.
ComponentWhen to use instead
UserSelectForm field for selecting users
IconColumnDisplaying icons in tables
RatingColumnDisplaying star ratings in tables

CSS classes (reference)

ClassRole
fff-user-columnCell wrapper
fff-user-column--richSingle-user layout
fff-user-column--stackedMulti-user stack layout
fff-user-column__avatar-stackOverlapping avatar row
fff-user-column__avatar-stack-itemIndividual stack avatar
fff-user-column__avatar-stack-overflow+N overflow badge