public function getDataCellValue($model, $key, $index)
{
$value = parent::getDataCellValue($model, $key, $index);
/** @noinspection PhpUnusedLocalVariableInspection */
$icon = '';
if ($value === GridView::ROW_EXPANDED) {
$type = 'collapsed';
$icon = $this->collapseIcon;
} elseif ($value === GridView::ROW_COLLAPSED) {
$type = 'expanded';
$icon = $this->expandIcon;
} else {
return $value;
}
$detail = static::parseData($this->detail, $model, $key, $index, $this);
$detailOptions = static::parseData($this->detailOptions, $model, $key, $index, $this);
$disabled = static::parseData($this->disabled, $model, $key, $index, $this) ? ' kv-state-disabled' : '';
if ($this->hiddenFromExport) {
Html::addCssClass($detailOptions, 'skip-export');
}
$detailOptions['data-index'] = $index;
$detailOptions['data-key'] = !is_string($key) && !is_numeric($key) ? is_array($key) ? Json::encode($key) : (string) $key : $key;
$id = $this->grid->options['id'];
Html::addCssClass($detailOptions, ['kv-expanded-row', $id]);
$content = Html::tag('div', $detail, $detailOptions);
return <<<HTML
<div class="kv-expand-row {$id}{$disabled}">
<div class="kv-expand-icon kv-state-{$type}{$disabled} {$id}">{$icon}</div>
<div class="kv-expand-detail skip-export {$id}" style="display:none;">
{$content}
</div>
</div>
HTML;
}