Files
starter-kit/src/View/Components/Form/Checkbox.php
T
2025-06-13 10:48:20 -10:00

71 lines
2.1 KiB
PHP

<?php
namespace Eops\StarterKit\View\Components\Form;
use Illuminate\View\Component;
use Eops\StarterKit\View\Components\Form\Concerns\InteractsWithFormField;
class Checkbox extends Component
{
use InteractsWithFormField;
public bool $checked;
/**
* @param string $name
* @param string|null $label
* @param string|null $placeholder
* @param string|null $help
* @param bool $required
* @param bool $disabled
* @param bool $readonly Will act as disabled, but keep an HTML-sendable value
* @param mixed|null $value
* @param string $gridLayout
* @param mixed|null $model
* @param string|null $prefix
* @param string|null $toggleLook Whether the checkbox is going to look like a toggle button
*/
public function __construct(
public string $name,
public ?string $label = null,
public ?string $placeholder = null,
public ?string $help = null,
public bool $required = false,
public bool $disabled = false,
public bool $readonly = false,
public mixed $value = null,
public string $gridLayout = '',
public mixed $model = null,
public ?string $prefix = null,
public ?string $toggleLook = 'false',
) {
$toggleLook = filter_var($toggleLook, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
$baseClass = $toggleLook ?
'toggle toggle-primary' : 'checkbox';
$this->initFormField(
name: $name,
label: $label,
placeholder: $placeholder,
help: $help,
required: $required,
disabled: $disabled,
readonly: $readonly,
gridLayout: $gridLayout,
value: $value,
model: $model,
prefix: $prefix,
baseClass: $baseClass,
);
$this->checked = $this->isChecked();
$this->view = 'sk::components.form.checkbox';
}
public function isChecked(): bool
{
return filter_var($this->resolvedValue, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ?? false;
}
}