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

Actionable Column Laravel Package

shreejan/actionable-column

Add interactive action buttons to Filament table columns: badges or plain text with connected action buttons, custom icons and colors, clickable columns, and empty-state "+ Add" support. Works with any Filament Action and Filament v4/v5.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Roadmap: admin/internal-tool polish as a cheap win. This package converts an existing read-only table column (status, assignee, approval state) into the place where the workflow action happens. That removes a click, a row-action menu open, or a navigation to a detail page — a measurable reduction in task time for the highest-frequency admin operations (approve, assign, change status). Good candidate for a "table UX" line item rather than a standalone initiative.
  • Feature scoping: inline state transitions vs. full record editing. The package supports only one interaction pattern: a column that renders a value and attaches any Filament Action. This is enough to ship approve/reject/assign/resend-invite flows in a single sprint without building an inline-edit system. It is not an inline editor, a bulk-action engine, or a workflow builder — decide that boundary before committing, because stakeholders will ask for more once they see it.
  • Build vs. buy: buy, but with a small write-off. The genuine functionality is a TextColumn subclass plus a Blade template and CSS (roughly a few hundred lines). Buying costs one composer require and near-zero infrastructure impact — no migrations, no service provider, no config publish required. Building costs a day or two of engineering plus permanent ownership. Buying wins only if you accept the dependency risk below; if your team would need more than the eight documented methods, build.
  • Risk decision: dependency posture for a single-maintainer package. 16 stars, 0 dependents, one author, releases driven by one external contributor. This is a low-consequence dependency — it touches presentation only, writes no data, registers no hooks into your domain. Categorize it as "vendored convenience," not "platform dependency," and set the expectation that forking it is an acceptable outcome rather than a failure.
  • Compatibility decision: Filament v4 vs. v5 roadmap alignment. Dual support is declared via the composer constraint ^4.0|^5.0, and v1.1.0 explicitly states "No code changes needed." That is a green light for a v5 upgrade path, but it is an unverified claim — make "confirm the column renders and the action fires on our exact Filament version" an acceptance criterion, not an assumption.
  • UX consistency decision: standardize the interaction, not just the widget. Because it composes Filament's native Action system, authorization policies, confirmation modals, notifications, and audit logging carry over from existing row actions untouched. That lets you mandate one interaction language across resources (badge = state, pencil = change it) without each team reimplementing it.
  • Use cases worth triaging first: moderation/approval queues (highest value), assignment columns where null is the common state (uses the empty-state "+ Add" affordance), "resend invite" / "clone" / "archive" side-actions on an identity column, and priority/severity columns on dense operational tables.

When to Consider This Package

Adopt when most of the following hold:

  • You are already on Filament v4 or v5. This package is worthless outside Filament; it is a table column, not a standalone UI component.
  • You have one or more state-machine columns where the displayed value is also the natural place to act on it — approval status, assignment, priority, verification state.
  • You want the action to reuse an existing policy and modal, and you are unwilling to duplicate authorization logic in a bespoke Blade partial.
  • The table is internal-facing (admin panel, back office, ops console) where users are trained and forgiving of a slightly unfamiliar affordance.
  • You are comfortable pinning the version (^1.1) and accepting that upstream fixes may never arrive. Practically: budget an hour to read ActionableColumn.php and the Blade view so someone on the team can maintain it.
  • You need CSS-level theming without forking. The resources/css/actionable-column-custom.css auto-detection and ACTIONABLE_COLUMN_CUSTOM_CSS_PATH env override exist specifically so composer update doesn't clobber your styling — that is the single most maintenance-aware thing in the package and a genuine adoption signal.

Look elsewhere, or build in-house, when:

  • Accessibility is a hard requirement. A fully clickable cell (clickableColumn()) with a hidden icon (showActionIcon(false)) is a keyboard and screen-reader hazard; the package does not document focus management, ARIA roles, or a visible focus ring for the cell-as-button mode. If you have WCAG obligations, restrict yourself to showActionIcon(true) or build a proper button-based column.
  • You need the empty state to be suppressible. There is no ->hideEmptyButton(). The "+ Add" affordance always renders when the column is empty, even with showActionIcon(false). For a null-heavy column where creation shouldn't be offered per-row, this is a blocker — verify against your data distribution before committing.
  • You need breadth beyond one action per column. No multiple buttons, no dropdown of actions in-cell, no bulk behavior on the column. Standard row actions or a dedicated relation manager is the better answer.
  • You require vendor support, SLAs, or an active maintainer. One author, 16 stars, no dependents. Nothing here implies abandonment, but nothing implies durability either.
  • Your Filament version drifts. The ^4.0|^5.0 constraint is generous; a future Filament major will not be covered, and you should expect the upgrade to be your problem, not the maintainer's.
  • You are outside Laravel/Filament entirely — obviously — or you have a strict third-party-dependency policy for the admin surface.

One specific caution to put in the adoption ticket: the package's tapAction() accepts Action|Closure, and the documented closure pattern returns different actions per record. Confirm the closure's return type against the class signature and verify behavior when it returns null for some rows. Undocumented edge-case behavior in a UI affordance shows up as a broken row, not a soft degradation.

How to Pitch It (Stakeholders)

One line for executives: A small, MIT-licensed UI component that turns our existing admin table columns into the place where work actually gets done — cutting a click or a page navigation out of every approval, assignment, and status change, for the cost of one dependency and no database or infrastructure change.

What it buys us: Faster completion of the highest-volume back-office tasks, without a bespoke build. It plugs into Filament's existing action system, so permissions, confirmation dialogs, notifications, and audit trails we already have continue to apply — no new security surface, no new logging to instrument, no parallel code path to keep in sync.

What it costs: One composer require, no migrations, no service provider, no config to publish. Roughly one row of table markup per column we convert. Reversible in an afternoon: delete the column definition and the dependency, and behavior reverts to the previous TextColumn.

What we are accepting, honestly stated: The package is maintained by a single author with low public adoption. We treat it as a convenience, not a platform bet — presented as a reversible, presentation-layer choice. Mitigations are cheap and already planned: pin the minor version, keep an in-house wrapper so the class name appears in one place, and read the two source files so we can fork if upstream goes quiet. Filament v5 support is declared and plausible but unverified against our install; we validate it on one table before rolling it out.

One-line ask to engineering: Confirm on a single status column that the modal opens pre-filled, the record updates, and the table refreshes — and flag any accessibility or empty-state behavior that conflicts with our requirements before we standardize it across resources.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource