68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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(),
 | 
						|
      ],
 | 
						|
    ];
 | 
						|
  }
 | 
						|
}
 |