setItems($items); } } public function loadHttpData() : void { $this->value = $this->getHttpData(\Packetery\Nette\Forms\Form::DATA_TEXT); if ($this->value !== null) { $this->value = \is_array($this->disabled) && isset($this->disabled[$this->value]) ? null : \key([$this->value => null]); } } /** * Sets selected item (by key). * @param string|int|null $value * @return static * @internal */ public function setValue($value) { if ($this->checkDefaultValue && $value !== null && !\array_key_exists((string) $value, $this->items)) { $set = \Packetery\Nette\Utils\Strings::truncate(\implode(', ', \array_map(function ($s) { return \var_export($s, \true); }, \array_keys($this->items))), 70, '...'); throw new \Packetery\Nette\InvalidArgumentException("Value '{$value}' is out of allowed set [{$set}] in field '{$this->name}'."); } $this->value = $value === null ? null : \key([(string) $value => null]); return $this; } /** * Returns selected key. * @return string|int|null */ public function getValue() { return \array_key_exists($this->value, $this->items) ? $this->value : null; } /** * Returns selected key (not checked). * @return string|int */ public function getRawValue() { return $this->value; } /** * Is any item selected? */ public function isFilled() : bool { return $this->getValue() !== null; } /** * Sets items from which to choose. * @return static */ public function setItems(array $items, bool $useKeys = \true) { $this->items = $useKeys ? $items : \array_combine($items, $items); return $this; } /** * Returns items from which to choose. */ public function getItems() : array { return $this->items; } /** * Returns selected value. * @return mixed */ public function getSelectedItem() { $value = $this->getValue(); return $value === null ? null : $this->items[$value]; } /** * Disables or enables control or items. * @param bool|array $value * @return static */ public function setDisabled($value = \true) { if (!\is_array($value)) { return parent::setDisabled($value); } parent::setDisabled(\false); $this->disabled = \array_fill_keys($value, \true); if (isset($this->disabled[$this->value])) { $this->value = null; } return $this; } /** @return static */ public function checkDefaultValue(bool $value = \true) { $this->checkDefaultValue = $value; return $this; } }