Files
xk-api-yii/admin/components/UI/Tabs.php
2024-09-19 11:32:39 +08:00

74 lines
2.0 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: chatfeed
* Date: 2022/5/19
* Time: 6:40 PM
*/
namespace admin\components\UI;
use admin\components\UI\Components\VueComponent;
use phpDocumentor\Reflection\Types\Boolean;
class Tabs extends VueComponent
{
public $dialog =false;
public bool $lazyLoad = false;
public $nodes = [];
public function setup(string $script)
{
return <<<JS
JS;
// TODO: Implement setup() method.
}
public function addTab($title,$key,$desc,$child=null){
$this->nodes[] = ['title'=>$title,'name'=>$title,'key'=>$key,'order'=>0,'desc'=>$desc,'child'=>$child?[$child]:[]];
}
public function render(): array
{
$panelNodes = [];
$nodes = collect($this->nodes)->sortBy('order')->toArray();
foreach ($nodes as $key => $node) {
$child = [];
if ($node['title']) {
$child[] = [
'nodeName' => 'div',
'class' => 'pt-2',
'child' => $node['child']
];
}
//$child[] = [
// 'nodeName' => 'div',
// 'class' => 'pt-2',
// 'child' => $node['object']->render()
//];
$panelNodes[] = [
'nodeName' => 'a-tab-pane',
'title' => $node['name'],
'key' => $key,
'class' => !$this->dialog ? ' border-t border-gray-200 dark:border-blackgray-1 px-3 pt-4 pb-0' : '',
'child' => [
'nodeName' => 'div',
'class' => '',
'child' => $child
]
];
}
return [
'nodeName' => 'a-tabs',
'lazy-load'=>$this->lazyLoad,
'class' => !$this->dialog ? 'mb-4 bg-white dark:bg-blackgray-4 rounded shadow p-4 pb-1' : '',
'type' => 'rounded',
'child' => $panelNodes
];
}
}