<?php declare(strict_types=1); namespace Arcanedev\Html\Elements; use Arcanedev\Html\Elements\Concerns\HasAutofocusAttribute; use Arcanedev\Html\Elements\Concerns\HasDisabledAttribute; use Arcanedev\Html\Elements\Concerns\HasMinMaxLengthAttributes; use Arcanedev\Html\Elements\Concerns\HasNameAttribute; use Arcanedev\Html\Elements\Concerns\HasPlaceholderAttribute; use Arcanedev\Html\Elements\Concerns\HasReadonlyAttribute; use Arcanedev\Html\Elements\Concerns\HasRequiredAttribute; use Arcanedev\Html\Elements\Concerns\HasTypeAttribute; use Arcanedev\Html\Elements\Concerns\HasValueAttribute; /** * Class Input * * @author ARCANEDEV <arcanedev.maroc@gmail.com> */ class Input extends HtmlElement { /* ----------------------------------------------------------------- | Traits | ----------------------------------------------------------------- */ use HasAutofocusAttribute, HasDisabledAttribute, HasMinMaxLengthAttributes, HasNameAttribute, HasPlaceholderAttribute, HasReadonlyAttribute, HasRequiredAttribute, HasTypeAttribute, HasValueAttribute; /* ----------------------------------------------------------------- | Properties | ----------------------------------------------------------------- */ /** @var string */ protected $tag = 'input'; /* ----------------------------------------------------------------- | Main Methods | ----------------------------------------------------------------- */ /** * Add the checked attribute. * * @param bool $checked * * @return $this */ public function checked($checked = true) { $type = $this->getAttributeValue('type'); return $this->if($type === 'checkbox', function (self $input) use ($checked) { return $checked ? $input->attribute('checked') : $input->forgetAttribute('checked'); }); } /** * Remove the checked attribute. * * @return $this */ public function unchecked() { return $this->checked(false); } }