Skip to content

Flash message wrapper for Vue + Inertia + Laravel powered apps.

License

Notifications You must be signed in to change notification settings

jdw5/surge-toast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Surge Toast

Server-side counterpart to surge-toast-client for Vue/Inertia. It provides a global macro to flash data to the session, with the client library automatically hooked up to receive router events from InertiaJs.

Installation

Install the package via composer:

composer require jdw5/surge-toast

To provide the link to the frontend, ensure you have a middleware for sharing props on all requests via Inertia. The starter kits will have this installed as HandleInertiaRequests middleware. Copy the following to the share function in this middleware, or equivalent:

public function share (Requesr $request): array
{
    return [
        ...parent::share($request),
        'toast' => $request->session()->get('toast')
    ]
}

This will share all toast messages to your frontend under the property toast. To use the client library, use the plugin in the app.js file after installing. See the documentation for the Javascript library here

Usage

The package provides a global way to flash data to the session, via the structure of ToastData. ToastData accepts the following parameters:

public function __construct(
    public string $message,
    public ?string $type = ToastType::DEFAULT->value,
    public ?int $duration = self::DEFAULT_DURATION,
    public ?string $title,
    public ?mixed $custom,
) {}

You can call the method from a controller through the following ways

toast(new ToastData('A message', 'info'));

toast(ToastData::from([
    'message' => 'A message',
    'duration' => 5000,
    'title' => 'A title',
    'custom' => ['key' => 'value']
    'type' => 'info',
]));

toast([
    'message' => 'Error message',
    'type' => 'error',
    'duration' => 5000,
]);

Or any combination of this. This will flash a message to the session with the type provided, or will use the default type if not specified

You can also shortcut the types using the following methods:

toast()->info('A message');
toast()->success('A message');
toast()->error('A message');
toast()->warning('A message');

Which will set the type for you. You can also chain with the duration and title methods:

toast()->info('A message')->duration(5000)->title('A title');

License

The MIT License (MIT). Please see License File for more information.

About

Flash message wrapper for Vue + Inertia + Laravel powered apps.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages