/**
* Render action button by item value.
*
* @param integer|null $value Current value of this item.
* @param integer|null $row The row number of this item.
* @param array $options The options to override group options.
*
* @return string Rendered HTML.
*
* @since 4.0.0
*
* @throws \InvalidArgumentException
*/
public function render(?int $value = null, ?int $row = null, array $options = []) : string
{
$data = $this->getState($value) ?? $this->unknownState;
$data = ArrayHelper::mergeRecursive($this->unknownState, $data, ['options' => $this->options->toArray()], ['options' => $options]);
$data['row'] = $row;
$data['icon'] = $this->fetchIconClass($data['icon']);
return LayoutHelper::render($this->layout, $data);
}