<?php
namespace nur\v\bs3;

use nur\md;
use nur\v\base\AbstractLayoutManager;
use nur\v\v;

class Bs3LayoutManager extends AbstractLayoutManager {
  const ROW_OPTIONS_SCHEMA = [
    "class" => "?string",
  ];

  protected function getRowTags($options): array {
    md::ensure_schema($options, self::ROW_OPTIONS_SCHEMA);
    return [
      v::sdiv(["class" => ["row", $options["class"]]]),
      v::ediv(),
    ];
  }

  const COL_OPTIONS_SCHEMA = [
    "class" => "?string",
  ];

  protected function getColTags($size, $options): array {
    md::ensure_schema($options, self::COL_OPTIONS_SCHEMA);
    $colClass = [];
    if (is_array($size)) {
      foreach ($size as $type => $amount) {
        $colClass[] = "col-$type-$amount";
      }
    } else {
      $colClass[] = "col-md-$size";
    }

    return [
      v::sdiv(["class" => [$colClass, $options["class"]]]),
      v::ediv(),
    ];
  }

  const PANEL_OPTIONS_SCHEMA = [
    "class" => "?string",
    "type" => "?string",
    "body" => ["bool", true, "faut-il ajouter la section panel-body?"],
  ];

  protected function getPanelTags($title, $options): array {
    md::ensure_schema($options, self::PANEL_OPTIONS_SCHEMA);

    $type = $options["type"];
    if ($type === null) $type = "default";
    $body = $options["body"];

    return [
      [
        v::sdiv(["class" => ["panel panel-$type", $options["class"]]]),
        v::div(["class" => "panel-heading", q($title)]),
        v::if($body, v::sdiv(["class" => "panel-body"])),
      ],
      [
        v::if($body, v::ediv()),
        v::ediv(),
      ],
    ];
  }
}