nur-sery/nur_src/v/bs3/vc/CNavTabs.php

71 lines
1.6 KiB
PHP

<?php
namespace nur\v\bs3\vc;
use nur\A;
use nur\b\params\Tparametrable;
use nur\v\base\MenuManager;
use nur\v\page;
use nur\v\v;
use nur\v\vo;
class CNavTabs extends _CItemList {
use Tparametrable;
/** @var array tabs à afficher par défaut */
const TABS = null;
const PARAMETRABLE_PARAMS_SCHEMA = [
"select" => ["?string", null, "identifiant de l'élément sélectionné"],
"params" => ["?array", null, "paramètres par défaut à rajouter à tous les urls"]
];
const AUTOPRINT = true;
function __construct(?iterable $items=null, ?string $select=null, ?array $params=null) {
A::set_nn($params, "select", $select);
parent::__construct($items, $params);
}
protected function ITEMS(): ?iterable {
return static::TABS;
}
/** @var ?string */
protected $ppSelect;
/** @var ?array */
protected $ppParams;
protected function buildItems(): void {
if ($this->ppItems !== null) {
$menu = new MenuManager(["items" => $this->ppItems], $this->ppSelect);
$items = $menu->get()["navbar_items"];
} else {
$items = null;
}
$this->items = $items;
}
function printStartContainer(): void {
vo::sul([
"class" => "nav nav-tabs",
]);
}
function printItem($item): void {
vo::li([
"class" => ["active" => $item["active"]],
"role" => "presentation",
v::a([
"href" => page::bu($item["url"], $this->ppParams, $item["params"]),
"accesskey" => $item["accesskey"],
$item["text"],
]),
]);
}
function printEndContainer(): void {
vo::eul();
}
}