protected function renderNodeAction($node, $actionName, $actionValue)
    {
        $lines = [];

        $nodeActionOptions = $this->nodeActionOptions;
        $tag = ArrayHelper::remove($nodeActionOptions, 'tag', 'a');

        $title = Module::t('message', ucwords(implode(' ', explode('-', $actionName))));
        $options = array_merge([
            'title' => $title,
            'aria-label' => $title,
            'data-node-id' => $node['id'],
            'data-action-name' => "{$actionName}",
        ], $nodeActionOptions, $actionValue['actionOptions']);

        foreach ($options as $key => $option) {
            $options[$key] = strtr($option, [
                '{action-url}' => Url::to(ArrayHelper::getValue($node, $actionName . '-url', $this->createUrl($actionName, $node))),
            ]);
        }

        $lines[] = Html::tag($tag, $actionValue['actionText'], $options);

        return implode("\n", $lines);
    }