markwalet / nova-modal-response
A Laravel Nova asset for Modal responses on an action.
Requires
- php: ^8.2
- laravel/framework: ^12.0|^13.0
- laravel/nova: ^5.0
Requires (Dev)
- larastan/larastan: ^3.9
- laravel/nova-devtool: ^1.1
- laravel/pint: ^1.29
- orchestra/testbench: ^10.8|^11.0
- phpunit/phpunit: ^11.5
README
Enabling custom modals for action responses in Laravel Nova.
More info for this specific feature can be found in the Nova Documentation.
Installation
composer require markwalet/nova-modal-response
This package requires PHP 8.2+ and Laravel 12+.
Usage
use Markwalet\NovaModalResponse\ModalResponse; ModalResponse::text('This is way better than that small notification in the bottom right!') ->title('Result in a modal'); // Modals can also be manually created in Nova use Laravel\Nova\Actions\Action; return Action::modal('modal-response', [ 'title' => 'Result in a model', 'body' => 'This is way better than that small notification in the bottom right!', ]);
When you want to render raw html, you can use the html parameter instead:
ModalResponse::html('<ul><li>Show this package to your friends</li><li>Contribute</li><li>???</li><li>Profit!</li></ul>');
There is also a special mode for rendering code snippets. This will surround the body with a <pre> and <code> tag but still leave escaping enabled.
ModalResponse::code(file_get_contents(__FILE__))->title('Look at me!');
Syntax highlighting is enabled by default for code and json blocks. It is using highlight.js under the hood. You can disable this by calling ->withoutSyntaxHighlighting().
If you want to show some serializable data to the client, you can do that as well:
ModalResponse::json([ 'lorem' => 'ipsum', 'dolor' => [ 'sit', 'amet', ], ]);
You can also specify the size using the size option:
ModalResponse::text('Hello world')->size('7xl');
