mhdrefdi-ptr/filament-freeze-action-table

A Filament package that keeps table action columns fixed (frozen) during horizontal scrolling, ensuring actions remain visible and easily accessible.

Maintainers

Package info

github.com/mhdrefdi-ptr/filament-freeze-action-table

pkg:composer/mhdrefdi-ptr/filament-freeze-action-table

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-03-18 19:11 UTC

This package is auto-updated.

Last update: 2026-03-18 19:25:31 UTC


README

Keep Filament table action columns sticky on the right during horizontal scrolling.

Supports Filament ^4.0.

Installation

composer require mhdrefdi-ptr/filament-freeze-action-table
php artisan filament:assets

Quick Start (Recommended)

Register the plugin in your panel provider:

use Filament\Panel;
use Mhdrefdi\FilamentFreezeActionTable\FilamentFreezeActionTablePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugin(
            FilamentFreezeActionTablePlugin::make()
                ->enabledByDefault(true)
        );
}

Plugin Configuration

Available fluent methods:

  • enabledByDefault(bool $condition = true)
  • zIndexBody(int $value)
  • zIndexHeader(int $value)
  • shadowEnabled(bool $condition = true)
  • shadowLight(string $value)
  • shadowDark(string $value)
  • darkHoverMixPercent(int $value)

Example:

->plugin(
    FilamentFreezeActionTablePlugin::make()
        ->enabledByDefault(true)
        ->zIndexBody(15)
        ->zIndexHeader(16)
        ->shadowEnabled(true)
        ->darkHoverMixPercent(5)
)

Multi-panel behavior

  • Table::configureUsing() is guarded per panel ID (no duplicate registrations).
  • Defaults are applied only when the current panel matches that plugin's panel.

Per-table Override

use Filament\Tables\Table;

public static function table(Table $table): Table
{
    return $table
        ->freezeActionColumn(false); // disable for this table
}

Enable explicitly:

return $table->freezeActionColumn(true);

Optional Config File

If you prefer config-file driven setup:

php artisan vendor:publish --tag=filament-freeze-action-table-config

Available keys in config/filament-freeze-action-table.php:

  • enabled_by_default
  • z_index_body
  • z_index_header
  • shadow_enabled
  • shadow_light
  • shadow_dark
  • dark_hover_mix_percent

How It Works

  • Frontend behavior is loaded via Filament assets (FilamentAsset::register), not inline render hooks.
  • Action column is detected from action triggers in the row.
  • Shadow appears only when horizontal overflow exists.

Testing

Browser spec:

  • tests/browser/freeze-action-column.spec.ts

Run:

npx playwright install chromium
npx playwright test packages/mhdrefdi-ptr/filament-freeze-action-table/tests/browser/freeze-action-column.spec.ts

Optional env URLs:

  • FFT_TEST_URL (default: http://127.0.0.1:8000/admin/users)
  • FFT_TEST_URL_WIDE (default: http://127.0.0.1:8000/admin/users-wide)

Changelog

See CHANGELOG.md.