<?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();
  }
}