homeos/app/Livewire/Modals/Confirm.php

47 lines
1.2 KiB
PHP

<?php
namespace App\Livewire\Modals;
use LivewireUI\Modal\ModalComponent;
/**
* Generic confirm dialog (R5). Opens via:
* $this->dispatch('openModal', component: 'modals.confirm', arguments: [
* 'title' => ..., 'body' => ..., 'confirmLabel' => ..., 'event' => 'someEvent', 'danger' => true,
* ]);
* On confirm it dispatches `event` (caught by the opener via #[On('someEvent')]) and closes.
*/
class Confirm extends ModalComponent
{
public string $title = '';
public string $body = '';
public string $confirmLabel = '';
public string $event = '';
public bool $danger = false;
public static function modalMaxWidth(): string
{
return 'md';
}
public function mount(string $title, string $body, string $confirmLabel, string $event, bool $danger = false): void
{
$this->title = $title;
$this->body = $body;
$this->confirmLabel = $confirmLabel;
$this->event = $event;
$this->danger = $danger;
}
public function confirm(): void
{
$this->dispatch($this->event);
$this->closeModal();
}
public function render()
{
return view('livewire.modals.confirm');
}
}