Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Filament Modal Repeater

Filament Modal Repeater Laravel Package

yousefaman/filament-modal-repeater

Filament Modal Repeater displays repeater items in a compact table with modal-based editing, ideal for forms with many fields. Supports boolean, badge, money, and custom-formatted columns. Requires PHP 8.2+ and Filament v4 or v5.

View on GitHub
Deep Wiki
Context7

Filament Modal Repeater replaces cluttered inline repeater forms with a compact summary table and modal-based editing. Each row renders selected fields as formatted columns, and clicking a row (or its edit button) opens a modal containing the full form schema — the same modal handles both new and existing items, keeping complex forms tidy.

  • Table columns support boolean icons, badges, money formatting, and custom formatters
  • Add and edit share one modal-driven schema
  • Custom labels and fixed column widths
  • Requires PHP 8.2+ and Filament v4/v5
Frequently asked questions about Filament Modal Repeater
How do I install filament-modal-repeater in a Laravel app?
Install the package with composer require yousefaman/filament-modal-repeater, then run php artisan modal-repeater:install. Optionally register ModalRepeaterPlugin::make() in your panel provider's plugin() call, which is recommended but not strictly required. There is no configuration file to publish and no migration step to run.
Which Filament and PHP versions does filament-modal-repeater support?
The package requires PHP 8.2 or newer and Filament v4 or v5. Filament v3 is explicitly out of scope, so any panel still on v3 cannot use it without a framework upgrade first. The PHP 8.2 floor is trivial on modern Laravel but blocks legacy services.
How do I define the summary table columns for a ModalRepeater?
Use ModalRepeater::make('items')->tableColumns([...]) with Column::make() entries, then pass the full editing form through ->schema([...]). Columns support ->label(), ->boolean() for check or cross icons, ->badge('success') for coloured status badges, ->money('USD') for currency, ->width('200px') for fixed widths, and ->formatUsing(fn ($value) => ...) for custom output. Clicking a row or the edit button opens that item in a modal using the same schema.
Can I use ModalRepeater with a hasMany relationship like Filament's native Repeater?
Yes. Relationship-backed repeaters such as ->relationship('addresses') are the well-trodden path, inheriting Filament's load, save and delete behaviour. JSON-column or ->state()-backed arrays are undocumented territory and should be treated as unvalidated until you prove them in a spike. No schema convention beyond Filament's own hasMany support is imposed.
Does the package require a JS build step, published assets, or migrations?
No. The component is pure PHP and Blade with no Vite bundle to compile or version, so your frontend toolchain and CSP posture stay unchanged. There are no published assets described in the install flow and no migration surface. That keeps the blast radius of adoption and removal small.
How does form validation work inside the modal?
Validation is delegated entirely to Filament's form engine, so standard rules like ->required() and ->numeric() on your schema fields apply exactly as they would in a native Repeater. The package does not introduce a parallel state model or custom persistence layer. Edge cases such as validation failure inside an open modal are not covered by a published test suite, so verify them in your own environment.
How do I test a form that uses ModalRepeater?
No PHPUnit suite is referenced in the package material, so budget for your own coverage. Use Filament's Livewire testing helpers on the resource or page class that hosts the form, for example mountAction, fillForm, callAction and assertHasNoFormErrors, to exercise the modal create and edit flow end to end. Assert the underlying relationship records after save rather than relying on internal component state.
Is filament-modal-repeater safe to use in production?
Runtime risk is low because the package is roughly 500 lines of presentation code that delegates to Filament, and the MIT license removes legal friction. The real risk is supply chain and API surface: it is a single-maintainer package with around 18 stars, zero dependents and a single v1.0.0 release, with no test coverage referenced. Treat it as a time-boxed pilot and confirm tag history and issue responsiveness before relying on it.
How do I switch back to Filament's native Repeater if I change my mind?
The component is a drop-in replacement, so reverting is a mechanical edit of ModalRepeater::make() back to Repeater::make() plus removing the tableColumns() call in each affected form class. No migrations or data shapes are tied to the package. That cheap escape hatch, combined with cheap adoption, is the strongest argument for evaluating it in a limited pilot.
Does ModalRepeater support nested repeaters, bulk operations, or cross-item conditional logic?
Not according to the available material. The package's value proposition is a UX substitution that reduces visual clutter in 10 to 30 field repeaters, not a capability expansion over Filament's Repeater. If you need nested repeaters, bulk actions or rich diffing, you would be layering custom code on top of a small third-party surface, which is the worst of both worlds. Keep the use case narrow and verify any advanced requirement in a spike first.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource