jdw5/surge-toast

A Vue 3 + Inertia plugin to render headless toast components.
4
Install
composer require jdw5/surge-toast
Latest Version:v0.1.0
PHP:^8.1
License:MIT
Last Updated:Feb 21, 2024
Links: GitHub  ·  Packagist
Maintainer: jdw5

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.

Related Packages

edvinaskrucas/notification

Package for Laravel for helping to manage flash / instant notifications / messag...

399,767 520
jorgejavierleon/laravelpnotify

Laravel 5 implementation for flash messages with Pnotify

17,676 11
caffeinated/flash

Laravel 5 Flash Messages

50,649 43
sun/laravel-flash

Sun Flash helps you to add flash messages to your Laravel application.

1,831 2