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