Commit e03bb9ef authored by Sylvain's avatar Sylvain

Boostrap 5

parent a17067b9
This diff is collapsed.
<?php
namespace Goldenscarab\Modulus\Service\Template\Compose;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Goldenscarab\Modulus\Helpers\Dynamik;
use Goldenscarab\Modulus\Helpers\Bootstrap5;
class TemplateBt5 extends Template
{
public function __construct($attrs = [])
{
$this->setAttrs($attrs);
}
/**
* Rendu des boutons d'action
*
* @param array $data
* @param Collection $source
* @return string
*/
public function renderAction($data, $source): string
{
$render = '';
$data = $this->replaceDefaultsAction($data);
$dynamik = new Dynamik($source);
$action_data = $dynamik->dynamikize($data);
if (Arr::has($action_data, 'dropdown')) {
$render = Bootstrap5::renderAButtonDropDown($action_data);
} else if (Arr::has($action_data, 'button')) {
$render = Bootstrap5::renderAButton(data_get($action_data, 'button', []));
}
return $render;
}
/**
* Retourne le rendu d'un tableau liste
* @return string le rendu du tableau liste
*/
public function renderList(): string
{
$template = '<div class="table-responsive-lg" style="min-height: 250px;">' . PHP_EOL;
$template .= ' <table id="%s" class="%s">' . PHP_EOL;
$template .= ' <thead>' . PHP_EOL;
$template .= ' <tr>' . PHP_EOL;
$template .= '%s';
$template .= ' </tr>' . PHP_EOL;
$template .= ' </thead>' . PHP_EOL;
$template .= ' <tbody>' . PHP_EOL;
$template .= '%s';
$template .= ' </tbody>' . PHP_EOL;
$template .= ' </table>';
$template .= '</div>';
$render = vsprintf($template, [
empty($this->table_id) ? 'table-' . Str::slug($this->route_prefix) : $this->table_id,
trim('table table-sm table-hover table-striped ' . $this->table_class),
$this->renderIndent($this->renderListHead(), 3),
$this->renderIndent($this->renderListBody(), 2),
]);
return $render;
}
/**
* Retourne le rendu des entêtes de colonnes d'un tableau liste
* @return string Le rendu des entêtes de colonnes
*/
public function renderListHead(): string
{
$template = '<th scope="col" class="text-nowrap%s">%s%s</th>' . PHP_EOL;
$render = '';
$columns = $this->_columns;
// Colonne titre
if (is_iterable($columns)) {
foreach ($columns as $column) {
$sortable = data_get($column, 'sortable');
$class = data_get($column, 'class');
// Pas de classe dynamique pour le header
if (is_array($class)) {
$class = '';
}
$render .= vsprintf($template, [
is_null($class) ? '' : ' ' . $class,
data_get($column, 'label'),
is_null($sortable) ? '' : col_sort($sortable)
]);
}
}
// Colonne menu
$render .= vsprintf($template, ['','', '']);
return $render;
}
/**
* Retourne le rendu des lignes d'un tableau liste
* @return string Le rendu des lignes du tableau
*/
public function renderListBody(): string
{
$template_row = '<tr scope="row"%s>' . PHP_EOL;
$template_row .= '%s';
$template_row .= '</tr>' . PHP_EOL;
$template_cel = '<td%s>%s</td>' . PHP_EOL;
$render = '';
$collection = $this->source;
$columns = $this->_columns;
$rows = $this->_rows;
if (is_iterable($collection)) {
if (count($collection) == 0) {
$render_cels_row = vsprintf($template_cel, [
' colspan="' . (count($columns) + 1) .'"',
__('Aucun élément disponible')
]);
$render .= vsprintf($template_row, [
null,
$this->renderIndent($render_cels_row, 1)
]);
} else {
foreach ($collection as $item) {
$render_cels_row = '';
if (is_iterable($columns)) {
foreach ($columns as $column) {
$attrs = collect($column)->except(['label', 'row', 'value', 'sortable', 'id']);
$attributes = $this->renderAttributes($attrs, $item);
$value = $this->getValue(data_get($column, 'value'), $item);
// Création de la cellule
$render_cels_row .= vsprintf($template_cel, [
$attributes,
$value
]);
}
// Ajout du menu en fin de ligne
$render_cels_row .= vsprintf($template_cel, [
' class="text-right"',
$this->renderAction($this->_menu, $item)
]);
}
$render .= vsprintf($template_row, [
$this->renderAttributes($rows, $item),
$this->renderIndent($render_cels_row, 1)
]);
}
}
}
return $render;
}
}
......@@ -2,6 +2,7 @@
namespace Goldenscarab\Modulus\Service\Template;
use Goldenscarab\Modulus\Service\Template\Compose\TemplateBt5;
use Goldenscarab\Modulus\Service\Template\Compose\Template1Bt4;
use Goldenscarab\Modulus\Service\Template\Compose\Template2Bt4;
use Goldenscarab\Modulus\Service\Template\Compose\Template3Bt4;
......@@ -45,6 +46,14 @@ class Template
$template = new Template4Bt4($attrs);
$render = $template->renderList();
return $template->renderHTML($render);
}
public function list5($attrs = []): string
{
$template = new TemplateBt5($attrs);
$render = $template->renderList();
return $template->renderHTML($render);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment