101 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\v\bs3\vc;
 | 
						|
 | 
						|
use Iterator;
 | 
						|
use nur\A;
 | 
						|
use nur\b\coll\BaseArray;
 | 
						|
use nur\b\params\IParametrable;
 | 
						|
use nur\b\params\Tparametrable;
 | 
						|
use nur\b\params\Tparametrable1;
 | 
						|
use nur\b\ValueException;
 | 
						|
use nur\data\types\md_utils;
 | 
						|
use nur\data\types\Metadata;
 | 
						|
use nur\func;
 | 
						|
use nur\iter;
 | 
						|
use nur\v\base\ComponentPrintable;
 | 
						|
use nur\v\vo;
 | 
						|
use Traversable;
 | 
						|
 | 
						|
/**
 | 
						|
 * Class CListGroup: afficher une liste d'éléments
 | 
						|
 */
 | 
						|
class CListGroup extends _CItemList {
 | 
						|
  use Tparametrable;
 | 
						|
 | 
						|
  const CONTAINER = null;
 | 
						|
 | 
						|
  const PARAMETRABLE_PARAMS_SCHEMA = [
 | 
						|
    "container" => ["string", "ul", "container de la liste: ul ou div"],
 | 
						|
  ];
 | 
						|
 | 
						|
  function __construct(?iterable $items=null, ?array $params=null) {
 | 
						|
    self::set_parametrable_params_defaults($params, [
 | 
						|
      "container" => static::CONTAINER,
 | 
						|
    ]);
 | 
						|
    parent::__construct($items, $params);
 | 
						|
  }
 | 
						|
 | 
						|
  private $ctag, $itag;
 | 
						|
 | 
						|
  function pp_setContainer(string $container): self {
 | 
						|
    switch ($container) {
 | 
						|
    case "ul":
 | 
						|
      $this->ctag = "ul";
 | 
						|
      $this->itag = "li";
 | 
						|
      break;
 | 
						|
    case "div":
 | 
						|
      $this->ctag = "div";
 | 
						|
      $this->itag = "a";
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      throw ValueException::invalid_value($container, "container");
 | 
						|
    }
 | 
						|
    return $this;
 | 
						|
  }
 | 
						|
 | 
						|
  /** retourner le contenu associé au conteneur */
 | 
						|
  function container(): ?array {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  protected function _printStartContainer($container): void {
 | 
						|
    vo::start($this->ctag, [
 | 
						|
      "class" => "list-group",
 | 
						|
      $this->container(),
 | 
						|
    ]);
 | 
						|
  }
 | 
						|
 | 
						|
  function printStartContainer(): void {
 | 
						|
    $this->_printStartContainer($this->container());
 | 
						|
  }
 | 
						|
 | 
						|
  function printEndContainer(): void {
 | 
						|
    vo::end($this->ctag);
 | 
						|
  }
 | 
						|
 | 
						|
  /** retourner le contenu associé à l'élément spécifié. */
 | 
						|
  function item($item): ?iterable {
 | 
						|
    return [$item];
 | 
						|
  }
 | 
						|
 | 
						|
  protected function _printStartItem(): void {
 | 
						|
    vo::start($this->itag, [
 | 
						|
      "class" => "list-group-item",
 | 
						|
    ]);
 | 
						|
  }
 | 
						|
  protected function _printEndItem(): void {
 | 
						|
    vo::end($this->itag);
 | 
						|
  }
 | 
						|
 | 
						|
  protected function _printItem($item): void {
 | 
						|
    vo::tag($this->itag, [
 | 
						|
      "class" => "list-group-item",
 | 
						|
      $item,
 | 
						|
    ], true);
 | 
						|
  }
 | 
						|
 | 
						|
  function printItem($item): void {
 | 
						|
    $this->_printItem($this->item($item));
 | 
						|
  }
 | 
						|
}
 |