Skip to main content

Sticky Header

v4.2.0
82
146,497

A Filament Panels plugin to make headers sticky when scrolling.

  • filament
  • filament-plugin
Sticky Header thumbnail

Package health

Automated checks of this package

86 / 100
Security 74
Maintenance 100
Ecosystem 100
Powered by Plumb Last scanned 14 hours ago

Installation

Install packages via composer

composer require awcodes/filament-sticky-header

Important

If you have not set up a custom theme and are using Filament Panels follow the instructions in the Filament Docs first.

After setting up a custom theme add the plugin's views to your theme css file or your app's css file if using the standalone packages.

@import '../../../../vendor/awcodes/filament-sticky-header/resources/css/plugin.css';

Usage

Just add the plugin to your panel provider, and you're good to go.

use Awcodes\StickyHeader\StickyHeaderPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            StickyHeaderPlugin::make(),
        ])
    ])
}

Floating Theme

To use the 'Floating Theme' use the floating() method when instantiating the plugin.

When using the floating theme you can also use the colored() method to add your primary background color to the header.

use Awcodes\StickyHeader\StickyHeaderPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            StickyHeaderPlugin::make()
                ->floating()
                ->colored()
        ])
    ]);
}

Both the floating() and colored() methods can receive closure that will be evaluated to determine if the theme should be applied. This allows you to apply the theme conditionally, for instance, based off of user preferences.

use Awcodes\StickyHeader\StickyHeaderPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            StickyHeaderPlugin::make()
                ->floating(fn():bool => auth()->user()->use_floating_header)
                ->colored(fn():bool => auth()->user()->use_floating_header)
        ])
    ]);
}

Disabling on List Pages

To disable the sticky header on list pages, you can use the stickOnListPages() method.

use Awcodes\StickyHeader\StickyHeaderPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            StickyHeaderPlugin::make()
                ->stickOnListPages(false)
        ])
    ]);
}