Archived
1
0
Fork 0

Adding AlertContainer Livewire component.

This commit is contained in:
Henrik Hautakoski 2021-12-31 16:41:11 +01:00
parent 7712a4aad2
commit fa002d5e08
2 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,58 @@
<?php
namespace App\Http\Livewire;
use Illuminate\Support\Facades\Session;
use Livewire\Component;
class AlertContainer extends Component
{
/**
* List of alert types.
*/
protected array $_types = [
'info',
'success',
'warning',
'danger'
];
/**
* Event listeners
*/
protected $listeners = [
// Add message when "alert" event is fired.
'alert' => 'addMessage'
];
/**
* Alert messages.
*/
public array $messages = [];
public function mount()
{
// Load messages from session
foreach($this->_types as $type) {
if (Session::has($type)) {
$this->addMessage($type, Session::get($type));
}
}
}
/**
* Add a message to the container.
*/
public function addMessage(string $type, string $message)
{
$this->messages[] = [ $type, $message ];
}
/**
* Render the messages
*/
public function render()
{
return view('livewire.alert-container');
}
}

View file

@ -0,0 +1,5 @@
<div class="absolute z-50 top-0 w-full px-4 sm:px-8 space-y-2 mt-2">
@foreach($messages as $message)
<x-notification variant="{{ $message[0] }}">{{ $message[1] }}</x-notification>
@endforeach
</div>