datatable.directory codebase https://datatable.directory/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
datatable.directory/app/View/WidgetFactory.php

69 lines
1.8 KiB

<?php
namespace App\View;
class WidgetFactory
{
private $labelCols = 3, $fieldCols = 8;
/** Configure layout used for future elements */
public function setLayout($labelCols, $fieldCols)
{
$this->labelCols = $labelCols;
$this->fieldCols = $fieldCols;
}
public function header($hx, $text)
{
return "<div class=\"row\">".
"<h$hx class=\"col-md-$this->fieldCols offset-md-$this->labelCols\">".e($text)."</h$hx>".
"</div>";
}
public function par($text, $extraClasses='', $escape=true)
{
return
"<div class=\"row\">".
"<p class=\"col-md-$this->fieldCols offset-md-$this->labelCols mb-2 ".e($extraClasses)."\">".
($escape ? e($text) : $text) .
"</p>".
"</div>";
}
private function baseWidget($view, $name, $label)
{
return (new Widget($view, $name, $label))->layout($this->labelCols, $this->fieldCols);
}
public function text($name, $label)
{
return $this->baseWidget('input', $name, $label);
}
public function password($name, $label)
{
return $this->baseWidget('input', $name, $label)->type('password');
}
public function number($name, $label)
{
return $this->baseWidget('input', $name, $label)->type('number');
}
public function email($name, $label)
{
return $this->baseWidget('input', $name, $label)->type('email');
}
public function checkbox($name, $label)
{
return (new CheckboxWidget('checkbox', $name, $label))
->layout($this->labelCols, $this->fieldCols);
}
public function textarea($name, $label)
{
return $this->baseWidget('textarea', $name, $label)->minHeight('4em');
}
}