Laravel Cloud is here! Zero-config managed infrastructure for Laravel apps. Deploy now.

Filament Gaze

discoverydesign/filament-gaze image

Filament Gaze stats

Downloads
31
Stars
24
Open Issues
0
Forks
1

View on GitHub →

See who's viewing a resource in Filament PHP.

Filament Gaze

πŸ‘€ See who's viewing a resource in Filament PHP πŸ”­

This package allows you to display when other users are viewing the same resource in Filament PHP.

https://packagist.org/packages/discoverydesign/filament-gaze

How to use

  1. Install the package using composer require discoverydesign/filament-gaze
  2. Add \DiscoveryDesign\FilamentGaze\FilamentGazePlugin::make() to your Filament Panel provider.
$panel->plugins([
\DiscoveryDesign\FilamentGaze\FilamentGazePlugin::make()
])
  1. Publish the assets with php artisan filament:assets.
  2. Import the package inside your Filament Resource with use DiscoveryDesign\FilamentGaze\Forms\Components\GazeBanner.
  3. Add the GazeBanner form component to your form with GazeBanner::make().
  4. If required, publish the translation files with php artisan vendor:publish --tag=filament-gaze-translations.

Examples

Basic Example

<?php
 
namespace App\Filament\Resources;
 
use DiscoveryDesign\FilamentGaze\Forms\Components\GazeBanner;
// ...
 
class OrderResource extends Resource
{
// ...
 
public static function form(Form $form): Form
{
return $form
->schema([
GazeBanner::make(),
 
// ...
]);
}
 
// ...
}

Poll Timer Example

GazeBanner::make()
->pollTimer(10),

Identifier Example

GazeBanner::make()
->identifier('any-order'),

Lock Example

GazeBanner::make()
->lock()

Lock With Control Example

GazeBanner::make()
->lock()
->canTakeControl(fn() => auth()->user()->isAdmin())

Hiding Gaze Banner on Create Form Example

GazeBanner::make()
->hidden(fn (?Order $record) => $record === null),

Docs

->pollTimer($timeInSecs)

Description

polltimer can be used to set how often the browser should inform Filament that the use is still viewing the page, along with getting an updated list of other users also viewing. It is advised not to put this value too short, as it can cause rate limiting issues. But also not to have this value too long, as it will result in a delayed update of new users viewing the page.

Arguments

timeInSeconds - (int) The amount of time in seconds between each poll. Default is 30 seconds.

->identifier($fnc)

Description

identifier is used as a unique identifier for this gaze banner. Any other gaze banners with the same identifier will share the same list of active users. This can be useful if you want 2 or more difference resources to share the same list of active viewing users.

Arguments

fnc - (optional, closure | string) The name of the identifier. Default is the resource's model class combines with model Id.

->lock($fnc)

Description

lock can be used to lock the resource for anyone but the current person editing the form. This can be useful if you want to prevent multiple people from editing the same resource at the same time. The controller is the first person to access the resource, or the person who has taken control of the resource. If you enable this after accessing a resource, you may need to run php artisan cache:clear as it is possible that the current cached viewers don't have a marked controller.

Arguments

fnc - (optional, closure | bool) If the resource is lockable or not.

->canTakeControl($fnc)

Description

canTakeControl can be used to allow the user to take control of the resource if it is locked by someone else. This can be useful if you want to allow the user to take control of the resource.

Arguments

fnc - (optional, closure | bool) If the user can take control of the resource. Default is true. If a closure is passed, it should return a bool.

Author

πŸš€ Discovery Design

discoverydesign photo

We’re a team of designers, developers and marketers that help businesses thrive online.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Discoverydesign Filament Gaze Related Articles

Filament Gaze: Show When Multiple Users View the Same Resource image

Filament Gaze: Show When Multiple Users View the Same Resource

Read article
Bacancy logo

Bacancy

Supercharge your project with a seasoned Laravel developer with 4-6 years of experience for just $3200/month. Get 160 hours of dedicated expertise & a risk-free 15-day trial. Schedule a call now!

Bacancy
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Get expert guidance in a few days with a Laravel code review logo

Get expert guidance in a few days with a Laravel code review

Expert code review! Get clear, practical feedback from two Laravel devs with 10+ years of experience helping teams build better apps.

Get expert guidance in a few days with a Laravel code review
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Lucky Media logo

Lucky Media

Get Lucky Now - the ideal choice for Laravel Development, with over a decade of experience!

Lucky Media