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

Advance Table Repeater Laravel Package

aureuserp/advance-table-repeater

A Laravel package for Aureus ERP that adds an advanced table repeater component, letting you build dynamic, repeatable table rows directly inside forms. Configure columns, manage complex multi-row data entry, and streamline repetitive records with a flexible, developer-friendly interface.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a pure presentation-layer extension for Filament (TALL stack): it subclasses Filament\Forms\Components\Repeater and Filament\Infolists\Components\RepeatableEntry and adds a parallel TableColumn value object, a Summarizer abstraction (Sum, Count, Average, Range), CanBeHidden/CanBeSummarized concerns, a panel plugin class, and a service provider.
  • Zero model coupling is the single most valuable property here. There is no migration, no trait, no persistence contract — adoption and rollback are both reversible UI changes. That materially lowers the cost of a failed evaluation.
  • The extension points are the right ones (form component, infolist component, column definition, summarizer, plugin), so custom summarizers and column behaviours can be added without forking. This is a good sign of intended extensibility.
  • Scope is narrow and coherent: "repeater as table" is a genuine gap in Filament's default stacked layout. This is not a framework-in-a-framework.

Integration feasibility

  • Integration is declarative: register AdvanceTableRepeaterPlugin on the panel, swap Repeater::make() for the table variant, declare columns fluently. A single form can be migrated without touching others, so this is sliceable.
  • No data migration, no schema change, no backfill. Existing JSON/relation-backed repeater data should hydrate unchanged, since array shape is inherited from the parent component — this must be verified against relationship-backed (HasMany) repeaters with an orderColumn, not just JSON columns.

Technical risk

  • Filament v5 pinning is the dominant risk. v5 is a young major line; a plugin that subclasses core components inherits every Blade view and method signature it overrides. Minor Filament releases can break it without a major bump on this package's side. Treat the Filament version as a hard constraint in the dependency policy.
  • Internal-API dependency. Subclassing without a documented public contract (custom Blade view overrides, parent method calls) means upgrade breakage is likely to surface at runtime in production forms, not at install time.
  • Summarizer correctness is the top functional question. If Sum/Average/Range compute client-side over rendered rows, totals will silently be wrong once row counts exceed anything not currently mounted, or when rows are filtered/hidden via the column manager. Wrong money totals presented confidently is a worse failure than a UI bug.
  • toEmbeddedTableHtml() is the highest-risk feature. It emits raw HTML intended for mail templates. Two concrete hazards: (1) HTML/CSS injection if cell values or labels are user-controlled and not escaped; (2) the package's styling ships as publishable CSS assets that will not apply in email clients, so embedded output likely renders unstyled or inconsistently across Outlook/Gmail. Budget for separate handling of mail output or treat it as unsupported internally.
  • Column visibility persisted in session is per-browser by design. Users will see different column sets on different devices, and there is no admin-visible or auditable state. Acceptable, but must be communicated; also confirm session keys are namespaced per component instance to avoid cross-form collisions.
  • Accessibility gap. Drag-and-drop reordering and column resizing are pointer-driven. Without keyboard-accessible alternatives, these regress WCAG 2.1.1 (Keyboard) for any form where order matters. This is a compliance question, not a nicety, if the app is subject to public-sector or enterprise a11y requirements.
  • JS test coverage is unstated. "Full Pest test coverage" covers PHP. Drag-drop, resize, and column-manager persistence are browser behaviours that Pest will not exercise.

Key questions

  1. Filament and Laravel/PHP support matrix, and the package's semver policy — will a Filament patch bump require a plugin patch?
  2. Are summarizers computed server-side over full form/infolist state, or client-side over rendered rows? How do they behave with hidden columns, paginated data, and null/non-numeric values?
  3. Is toEmbeddedTableHtml() escaping cell content, and does it inline styles or depend on the published stylesheet?
  4. Are session keys for column visibility scoped per component instance?
  5. How is row order persisted for relationship-backed repeaters — does it respect orderColumn, and is reordering disabled in read-only infolists?
  6. License, maintainer count, and issue-response expectations.
  7. Any JS/browser test coverage, and is there a keyboard path for reorder/resize?

Integration Approach

Stack fit

  • Fits cleanly if the application is already on Filament and the use case is data-dense repeaters (line items, schedules, rate tables, configuration matrices) where the stacked layout forces excessive scrolling. Poor fit if Filament is not already the admin surface, or if only one trivially small repeater exists.
  • The infolist variant plus toEmbeddedTableHtml() also makes this relevant to read-only summary and mail-notification paths — evaluate those separately from the forms use case, since the risk profiles differ.

Migration path

  • Phase 0: pin the exact package version alongside an exact Filament version; record both in the dependency policy.
  • Phase 1: prototype on one low-traffic, non-financial form in staging with production-like row counts (test at 5, 50, and 200+ rows).
  • Phase 2: migrate forms where reordering matters, verifying persisted order round-trips to the database before and after.
  • Phase 3: migrate read-only infolists.
  • Phase 4: evaluate mail embedding as a separate, opt-in decision with its own review.
  • Rollback is a one-line component swap per form — no data rollback needed. Keep the old and new component side by side behind a feature flag for one release cycle.

Compatibility

  • Verify against the app's actual Filament minor version, Tailwind build (the published CSS must not conflict with, or be purged by, the app's own pipeline), Livewire version, and any custom Filament theme. Custom themes that override repeater Blade views are the most likely conflict source.
  • Confirm behaviour inside nested repeaters, inside wizard steps, and inside modals — the three places Filament components most often behave differently.

Sequencing

  • Do not adopt the mail-embedding feature in the same release window as the forms rollout. Ship the forms/infolists swap first, gather feedback on summarizer accuracy, then reassess embedding with real data.

Operational Impact

Maintenance

  • Low ongoing effort for the host team (no schema, no data to manage) but a new upgrade coupling: every Filament minor bump becomes a regression test of this plugin's view overrides. Add Filament upgrades to a checklist item that explicitly includes re-testing table repeaters.
  • The package is at v1.0.0 with an unproven upgrade history. Expect the first Filament minor release after adoption to be the real test.

Support

  • Support burden shifts to internal teams for anything the package does not document. Because the extension points are clean, most customisation should be additive (custom Summarizer subclasses, column behaviours) rather than patches — insist on that so upgrades stay feasible.
  • If the plugin is abandoned, the exit is a revert to stacked repeaters plus removal of the plugin registration. No data is stranded. That is an unusually good abandonment profile and should be weighed favourably.

Scaling

  • Primary scaling concern is form state size, not the database. A repeater rendered as a table invites users to add more rows, and every row is Livewire state. Measure request payload size and render time at realistic upper bounds, and consider soft row caps per repeater.
  • Summarizers that recompute on every keystroke can cause noticeable lag on large repeaters — confirm debounce behaviour and whether computation is server-round-trip or client-side.
  • Column manager and resize state are session-scoped and small; no scaling concern there.

Failure modes

  • Silent Filament upgrade breakage in a single form after an unrelated dependency bump.
  • Incorrect totals from summarizers on partial or hidden data, discovered by finance rather than QA.
  • Unstyled or client-incompatible HTML in outbound mail from toEmbeddedTableHtml().
  • CSS asset not published or purged, producing a visually broken but functional table.
  • Row order lost or mismatched for relationship-backed repeaters with orderColumn.
  • Accessibility complaint or audit finding on drag/reorder.
  • Session key collision causing one repeater's column choices to leak into another.

Ramp-up

  • Low for developers already fluent in Filament: the fluent column API mirrors Filament's own, so the learning curve is a day, not a week. The Summarizer abstraction needs a short internal write-up with one worked custom example.
  • Non-trivial for QA: the test matrix must include row counts, reordering persistence, column visibility across reload and across browsers, summarizer accuracy with edge values, nested/wizard/modal contexts, and keyboard-only operation.
  • Recommend an internal one-page standard covering: which repeaters are eligible, the row cap, when summarizers are permitted on financial data, and the Filament upgrade checklist.
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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log