nova-modal-response maintained by markwalet
Nova Modal Response
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');