64 lines
1.2 KiB
PHP
64 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace admin\components\UI\Widget;
|
|
|
|
use admin\components\UI\Tools;
|
|
|
|
/**
|
|
* 行布局组件
|
|
* Class Row
|
|
* @package backend\components\UI\Widget
|
|
*/
|
|
class Row extends Widget
|
|
{
|
|
|
|
private array $column = [];
|
|
|
|
/**
|
|
* @param callable|null $callback
|
|
*/
|
|
public function __construct(callable $callback = NULL)
|
|
{
|
|
$this->callback = $callback;
|
|
}
|
|
|
|
/**
|
|
* 设置列
|
|
* @param callable $callback
|
|
* @param int $width
|
|
* @return $this
|
|
*/
|
|
public function column(callable $callback, int $width = 0): self
|
|
{
|
|
$this->column[] = [
|
|
'width' => $width,
|
|
'callback' => $callback,
|
|
];
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function render(): array
|
|
{
|
|
|
|
$nodes = [];
|
|
foreach ($this->column as $vo) {
|
|
$nodes[] = [
|
|
'nodeName' => 'div',
|
|
'class' => $vo['width'] ? "row-span-{$vo['width']}" : '',
|
|
'child' => call_user_func($vo['callback'])
|
|
];
|
|
}
|
|
return [
|
|
'nodeName' => 'div',
|
|
'class' => 'grid grid-flow-col gap-x-4',
|
|
'child' => $nodes
|
|
];
|
|
|
|
|
|
}
|
|
|
|
}
|