chg: [helper:bootstrap] Added more documentation and typing
parent
b7a446cd56
commit
abd9e04a0f
|
@ -3,6 +3,7 @@
|
|||
namespace App\View\Helper\BootstrapElements;
|
||||
|
||||
use App\View\Helper\BootstrapGeneric;
|
||||
use App\View\Helper\BootstrapHelper;
|
||||
|
||||
/**
|
||||
* Creates an collapsible accordion component
|
||||
|
@ -53,7 +54,7 @@ class BootstrapAccordion extends BootstrapGeneric
|
|||
'class' => [],
|
||||
];
|
||||
|
||||
function __construct($options, $content, $btHelper)
|
||||
function __construct(array $options, array $content, BootstrapHelper $btHelper)
|
||||
{
|
||||
$this->allowedOptionValues = [];
|
||||
$this->content = $content;
|
||||
|
@ -61,7 +62,7 @@ class BootstrapAccordion extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
|
@ -78,12 +79,12 @@ class BootstrapAccordion extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
public function accordion()
|
||||
public function accordion(): string
|
||||
{
|
||||
return $this->genAccordion();
|
||||
}
|
||||
|
||||
private function genHeader($accordionItem, $i)
|
||||
private function genHeader(array $accordionItem, int $i): string
|
||||
{
|
||||
$html = $this->nodeOpen('h2', [
|
||||
'class' => ['accordion-header'],
|
||||
|
@ -110,7 +111,7 @@ class BootstrapAccordion extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genBody($accordionItem, $i)
|
||||
private function genBody(array $accordionItem, int $i): string
|
||||
{
|
||||
$content = $this->node('div', [
|
||||
'class' => ['accordion-body']
|
||||
|
@ -134,7 +135,7 @@ class BootstrapAccordion extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genAccordion()
|
||||
private function genAccordion(): string
|
||||
{
|
||||
$html = $this->nodeOpen('div', [
|
||||
'class' => array_merge(['accordion'], $this->options['class']),
|
||||
|
|
|
@ -34,7 +34,7 @@ class BootstrapAlert extends BootstrapGeneric
|
|||
'class' => [],
|
||||
];
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => BootstrapGeneric::$variants,
|
||||
|
@ -42,19 +42,19 @@ class BootstrapAlert extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['class'] = $this->convertToArrayIfNeeded($this->options['class']);
|
||||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function alert()
|
||||
public function alert(): string
|
||||
{
|
||||
return $this->genAlert();
|
||||
}
|
||||
|
||||
private function genAlert()
|
||||
private function genAlert(): string
|
||||
{
|
||||
$html = $this->nodeOpen('div', [
|
||||
'class' => array_merge([
|
||||
|
@ -72,7 +72,7 @@ class BootstrapAlert extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genCloseButton()
|
||||
private function genCloseButton(): string
|
||||
{
|
||||
$html = '';
|
||||
if ($this->options['dismissible']) {
|
||||
|
|
|
@ -34,7 +34,7 @@ class BootstrapBadge extends BootstrapGeneric
|
|||
'class' => [],
|
||||
];
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => BootstrapGeneric::$variants,
|
||||
|
@ -42,19 +42,19 @@ class BootstrapBadge extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['class'] = $this->convertToArrayIfNeeded($this->options['class']);
|
||||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function badge()
|
||||
public function badge(): string
|
||||
{
|
||||
return $this->genBadge();
|
||||
}
|
||||
|
||||
private function genBadge()
|
||||
private function genBadge(): string
|
||||
{
|
||||
$html = $this->node('span', [
|
||||
'class' => array_merge($this->options['class'], [
|
||||
|
|
|
@ -53,7 +53,7 @@ class BootstrapButton extends BootstrapGeneric
|
|||
|
||||
private $bsClasses = [];
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => array_merge(BootstrapGeneric::$variants, ['link', 'text']),
|
||||
|
@ -63,7 +63,7 @@ class BootstrapButton extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['class'] = $this->convertToArrayIfNeeded($this->options['class']);
|
||||
|
@ -91,12 +91,12 @@ class BootstrapButton extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
public function button()
|
||||
public function button(): string
|
||||
{
|
||||
return $this->genButton();
|
||||
}
|
||||
|
||||
private function genButton()
|
||||
private function genButton(): string
|
||||
{
|
||||
$html = $this->nodeOpen($this->options['nodeType'], array_merge($this->options['attrs'], [
|
||||
'class' => array_merge($this->options['class'], $this->bsClasses),
|
||||
|
@ -116,7 +116,7 @@ class BootstrapButton extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genIcon()
|
||||
private function genIcon(): string
|
||||
{
|
||||
if (!empty($this->options['icon'])) {
|
||||
$bsIcon = new BootstrapIcon($this->options['icon'], [
|
||||
|
@ -127,7 +127,7 @@ class BootstrapButton extends BootstrapGeneric
|
|||
return '';
|
||||
}
|
||||
|
||||
private function genImage()
|
||||
private function genImage(): string
|
||||
{
|
||||
if (!empty($this->options['image'])) {
|
||||
return $this->node('img', [
|
||||
|
|
|
@ -41,7 +41,7 @@ class BootstrapCard extends BootstrapGeneric
|
|||
'footerClass' => '',
|
||||
];
|
||||
|
||||
public function __construct($options)
|
||||
public function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'headerVariant' => array_merge(BootstrapGeneric::$variants, ['']),
|
||||
|
@ -51,7 +51,7 @@ class BootstrapCard extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['headerClass'] = $this->convertToArrayIfNeeded($this->options['headerClass']);
|
||||
|
@ -61,12 +61,12 @@ class BootstrapCard extends BootstrapGeneric
|
|||
$this->options['borderVariant'] = !empty($this->options['headerVariant']) ? "border-{$this->options['headerVariant']}" : '';
|
||||
}
|
||||
|
||||
public function card()
|
||||
public function card(): string
|
||||
{
|
||||
return $this->genCard();
|
||||
}
|
||||
|
||||
private function genCard()
|
||||
private function genCard(): string
|
||||
{
|
||||
$card = $this->node('div', [
|
||||
'class' => array_merge(
|
||||
|
@ -80,7 +80,7 @@ class BootstrapCard extends BootstrapGeneric
|
|||
return $card;
|
||||
}
|
||||
|
||||
private function genHeader()
|
||||
private function genHeader(): string
|
||||
{
|
||||
if (empty($this->options['headerHTML']) && empty($this->options['headerText'])) {
|
||||
return '';
|
||||
|
@ -98,7 +98,7 @@ class BootstrapCard extends BootstrapGeneric
|
|||
return $header;
|
||||
}
|
||||
|
||||
private function genBody()
|
||||
private function genBody(): string
|
||||
{
|
||||
if (empty($this->options['bodyHTML']) && empty($this->options['bodyText'])) {
|
||||
return '';
|
||||
|
@ -116,7 +116,7 @@ class BootstrapCard extends BootstrapGeneric
|
|||
return $body;
|
||||
}
|
||||
|
||||
private function genFooter()
|
||||
private function genFooter(): string
|
||||
{
|
||||
if (empty($this->options['footerHTML']) && empty($this->options['footerText'])) {
|
||||
return '';
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace App\View\Helper\BootstrapElements;
|
|||
use Cake\Utility\Security;
|
||||
|
||||
use App\View\Helper\BootstrapGeneric;
|
||||
use App\View\Helper\BootstrapHelper;
|
||||
|
||||
/**
|
||||
* Creates a Bootstrap collapsible component
|
||||
|
@ -45,7 +46,7 @@ class BootstrapCollapse extends BootstrapGeneric
|
|||
'attrs' => [],
|
||||
];
|
||||
|
||||
function __construct($options, $content, $btHelper)
|
||||
function __construct(array $options, string $content, BootstrapHelper $btHelper)
|
||||
{
|
||||
$this->allowedOptionValues = [];
|
||||
$this->processOptions($options);
|
||||
|
@ -53,7 +54,7 @@ class BootstrapCollapse extends BootstrapGeneric
|
|||
$this->btHelper = $btHelper;
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['class'] = $this->convertToArrayIfNeeded($this->options['class']);
|
||||
|
@ -73,12 +74,12 @@ class BootstrapCollapse extends BootstrapGeneric
|
|||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function collapse()
|
||||
public function collapse(): string
|
||||
{
|
||||
return $this->genCollapse();
|
||||
}
|
||||
|
||||
private function genControl()
|
||||
private function genControl(): string
|
||||
{
|
||||
$attrsConfig = [
|
||||
'data-bs-toggle' => 'collapse',
|
||||
|
@ -101,7 +102,7 @@ class BootstrapCollapse extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genContent()
|
||||
private function genContent(): string
|
||||
{
|
||||
$cardConfig = $this->options['card'];
|
||||
$cardConfig['bodyHTML'] = $this->content;
|
||||
|
@ -113,7 +114,7 @@ class BootstrapCollapse extends BootstrapGeneric
|
|||
return $container;
|
||||
}
|
||||
|
||||
private function genCollapse()
|
||||
private function genCollapse(): string
|
||||
{
|
||||
return $this->genControl() . $this->genContent();
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\View\Helper\BootstrapElements;
|
||||
|
||||
use App\View\Helper\BootstrapGeneric;
|
||||
use App\View\Helper\BootstrapHelper;
|
||||
|
||||
/**
|
||||
* # Options
|
||||
|
@ -65,7 +66,7 @@ class BootstrapDropdownMenu extends BootstrapGeneric
|
|||
'attrs' => [],
|
||||
];
|
||||
|
||||
function __construct($options, $btHelper)
|
||||
function __construct(array $options, BootstrapHelper $btHelper)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'direction' => ['start', 'end', 'up', 'down'],
|
||||
|
@ -77,24 +78,24 @@ class BootstrapDropdownMenu extends BootstrapGeneric
|
|||
$this->btHelper = $btHelper;
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['dropdown-class'] = $this->convertToArrayIfNeeded($this->options['dropdown-class']);
|
||||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function dropdownMenu()
|
||||
public function dropdownMenu(): string
|
||||
{
|
||||
return $this->fullDropdown();
|
||||
}
|
||||
|
||||
public function fullDropdown()
|
||||
public function fullDropdown(): string
|
||||
{
|
||||
return $this->genDropdownWrapper($this->genDropdownToggleButton(), $this->genDropdownMenu($this->menu));
|
||||
}
|
||||
|
||||
public function genDropdownWrapper($toggle = '', $menu = '', $direction = null, $classes = null)
|
||||
public function genDropdownWrapper(string $toggle = '', string $menu = '', $direction = null, $classes = null): string
|
||||
{
|
||||
$classes = !is_null($classes) ? $classes : $this->options['dropdown-class'];
|
||||
$direction = !is_null($direction) ? $direction : $this->options['direction'];
|
||||
|
@ -114,7 +115,7 @@ class BootstrapDropdownMenu extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
public function genDropdownToggleButton()
|
||||
public function genDropdownToggleButton(): string
|
||||
{
|
||||
$defaultOptions = [
|
||||
'class' => ['dropdown-toggle'],
|
||||
|
@ -127,7 +128,7 @@ class BootstrapDropdownMenu extends BootstrapGeneric
|
|||
return $this->btHelper->button($options);
|
||||
}
|
||||
|
||||
private function genDropdownMenu($entries, $alignment = null)
|
||||
private function genDropdownMenu(array $entries, $alignment = null): string
|
||||
{
|
||||
$alignment = !is_null($alignment) ? $alignment : $this->options['alignment'];
|
||||
$html = $this->node('div', [
|
||||
|
@ -136,7 +137,7 @@ class BootstrapDropdownMenu extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genEntries($entries)
|
||||
private function genEntries(array $entries): string
|
||||
{
|
||||
$html = '';
|
||||
foreach ($entries as $entry) {
|
||||
|
@ -150,7 +151,7 @@ class BootstrapDropdownMenu extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genEntry($entry)
|
||||
private function genEntry(array $entry): string
|
||||
{
|
||||
if (!empty($entry['html'])) {
|
||||
return $entry['html'];
|
||||
|
|
|
@ -26,25 +26,25 @@ class BootstrapIcon extends BootstrapGeneric
|
|||
'attrs' => [],
|
||||
];
|
||||
|
||||
function __construct($icon, $options = [])
|
||||
function __construct(string $icon, array $options = [])
|
||||
{
|
||||
$this->icon = $icon;
|
||||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
$this->options['class'] = $this->convertToArrayIfNeeded($this->options['class']);
|
||||
}
|
||||
|
||||
public function icon()
|
||||
public function icon(): string
|
||||
{
|
||||
return $this->genIcon();
|
||||
}
|
||||
|
||||
private function genIcon()
|
||||
private function genIcon(): string
|
||||
{
|
||||
$html = $this->node('span', array_merge(
|
||||
[
|
||||
|
|
|
@ -60,14 +60,14 @@ class BootstrapListGroup extends BootstrapGeneric
|
|||
private static $defaultClasses = ['list-group',];
|
||||
private static $defaultItemClasses = ['list-group-item', 'list-group-item-action', 'd-flex', 'align-items-start', 'justify-content-between'];
|
||||
|
||||
function __construct($items, $options, $btHelper)
|
||||
function __construct(array $items, array $options, \App\View\BootstrapHelper $btHelper)
|
||||
{
|
||||
$this->items = $items;
|
||||
$this->processOptions($options);
|
||||
$this->btHelper = $btHelper;
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['class'] = $this->convertToArrayIfNeeded($this->options['class']);
|
||||
|
@ -90,7 +90,7 @@ class BootstrapListGroup extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genItem($item)
|
||||
private function genItem(array $item): string
|
||||
{
|
||||
$item['class'] = !is_array($item['class']) ? [$item['class']] : $item['class'];
|
||||
$itemOptions = array_merge($this->defaultItemOptions, $item);
|
||||
|
@ -109,7 +109,7 @@ class BootstrapListGroup extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genBadge($badge)
|
||||
private function genBadge(array $badge): string
|
||||
{
|
||||
if (empty($badge)) {
|
||||
return '';
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace App\View\Helper\BootstrapElements;
|
|||
use Cake\Utility\Hash;
|
||||
|
||||
use App\View\Helper\BootstrapGeneric;
|
||||
use App\View\Helper\BootstrapHelper;
|
||||
|
||||
/**
|
||||
* Creates a list looking like a table from 1-dimensional data $item.
|
||||
|
@ -93,7 +94,7 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
'elementsRootPath' => '/genericElements/SingleViews/Fields/',
|
||||
];
|
||||
|
||||
function __construct($options, $data, $btHelper)
|
||||
function __construct(array $options, array $data, BootstrapHelper $btHelper)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => array_merge(BootstrapGeneric::$variants, [''])
|
||||
|
@ -105,7 +106,7 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
$this->btHelper = $btHelper;
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->options['tableClass'] = $this->convertToArrayIfNeeded($this->options['tableClass']);
|
||||
|
@ -113,12 +114,12 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function table()
|
||||
public function table(): string
|
||||
{
|
||||
return $this->genTable();
|
||||
}
|
||||
|
||||
private function genTable()
|
||||
private function genTable(): string
|
||||
{
|
||||
$html = $this->nodeOpen('table', [
|
||||
'class' => [
|
||||
|
@ -142,7 +143,7 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genBody()
|
||||
private function genBody(): string
|
||||
{
|
||||
$body = $this->nodeOpen('tbody', [
|
||||
'class' => $this->options['bodyClass'],
|
||||
|
@ -154,7 +155,7 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
return $body;
|
||||
}
|
||||
|
||||
private function genRow($field)
|
||||
private function genRow(array $field): string
|
||||
{
|
||||
$rowValue = $this->genCell($field);
|
||||
$rowKey = $this->node('th', [
|
||||
|
@ -172,7 +173,7 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
return $row;
|
||||
}
|
||||
|
||||
private function genCell($field = [])
|
||||
private function genCell(array $field = []): string
|
||||
{
|
||||
if (isset($field['raw'])) {
|
||||
$cellContent = !empty($field['rawNoEscaping']) ? $field['raw'] : h($field['raw']);
|
||||
|
@ -199,14 +200,14 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
], $cellContent);
|
||||
}
|
||||
|
||||
private function getValueFromObject($field)
|
||||
private function getValueFromObject(array $field): string
|
||||
{
|
||||
$key = is_array($field) ? $field['path'] : $field;
|
||||
$cellValue = Hash::get($this->item, $key);
|
||||
return $cellValue;
|
||||
return !is_null($cellValue) ? $cellValue : '';
|
||||
}
|
||||
|
||||
private function getElementPath($type)
|
||||
private function getElementPath($type): string
|
||||
{
|
||||
return sprintf(
|
||||
'%s%sField',
|
||||
|
@ -215,7 +216,7 @@ class BootstrapListTable extends BootstrapGeneric
|
|||
);
|
||||
}
|
||||
|
||||
private function genCaption()
|
||||
private function genCaption(): string
|
||||
{
|
||||
return !empty($this->caption) ? $this->node('caption', [], h($this->caption)) : '';
|
||||
}
|
||||
|
|
|
@ -155,7 +155,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
'cancelOnclick' => ''
|
||||
];
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'size' => ['sm', 'lg', 'xl', ''],
|
||||
|
@ -167,7 +167,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
|
@ -188,7 +188,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
public function modal()
|
||||
public function modal(): string
|
||||
{
|
||||
$modal = $this->genModal();
|
||||
if ($this->options['show']) {
|
||||
|
@ -211,7 +211,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
));
|
||||
}
|
||||
|
||||
private function genModal()
|
||||
private function genModal(): string
|
||||
{
|
||||
$dialog = $this->nodeOpen('div', [
|
||||
'class' => array_merge(
|
||||
|
@ -231,7 +231,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genHeader()
|
||||
private function genHeader(): string
|
||||
{
|
||||
$header = $this->nodeOpen('div', ['class' => array_merge(['modal-header'], $this->options['headerClass'])]);
|
||||
$header .= $this->options['titleHtml'] ?? $this->node('h5', ['class' => ['modal-title']], h($this->options['title']));
|
||||
|
@ -242,7 +242,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
return $header;
|
||||
}
|
||||
|
||||
private function genBody()
|
||||
private function genBody(): string
|
||||
{
|
||||
$body = $this->nodeOpen('div', ['class' => array_merge(['modal-body'], $this->options['bodyClass'])]);
|
||||
$body .= $this->options['bodyHtml'] ?? h($this->options['body']);
|
||||
|
@ -250,7 +250,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
return $body;
|
||||
}
|
||||
|
||||
private function genFooter()
|
||||
private function genFooter(): string
|
||||
{
|
||||
$footer = $this->nodeOpen('div', [
|
||||
'class' => array_merge(['modal-footer'], $this->options['footerClass']),
|
||||
|
@ -261,7 +261,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
return $footer;
|
||||
}
|
||||
|
||||
private function getFooterBasedOnType()
|
||||
private function getFooterBasedOnType(): string
|
||||
{
|
||||
if ($this->options['type'] == 'ok-only') {
|
||||
return $this->getFooterOkOnly();
|
||||
|
@ -274,7 +274,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
private function getFooterOkOnly()
|
||||
private function getFooterOkOnly(): string
|
||||
{
|
||||
return (new BootstrapButton([
|
||||
'variant' => 'primary',
|
||||
|
@ -286,7 +286,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
]))->button();
|
||||
}
|
||||
|
||||
private function getFooterConfirm()
|
||||
private function getFooterConfirm(): string
|
||||
{
|
||||
$buttonCancelConfig = array_merge(
|
||||
[
|
||||
|
@ -318,7 +318,7 @@ class BootstrapModal extends BootstrapGeneric
|
|||
return $buttonCancel . $buttonConfirm;
|
||||
}
|
||||
|
||||
private function getFooterCustom()
|
||||
private function getFooterCustom(): string
|
||||
{
|
||||
$buttons = [];
|
||||
foreach ($this->options['footerButtons'] as $buttonConfig) {
|
||||
|
|
|
@ -33,7 +33,7 @@ class BootstrapNotificationBubble extends BootstrapGeneric
|
|||
'attrs' => [],
|
||||
];
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => BootstrapGeneric::$variants,
|
||||
|
@ -43,7 +43,7 @@ class BootstrapNotificationBubble extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
|
@ -57,12 +57,12 @@ class BootstrapNotificationBubble extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
public function notificationBubble()
|
||||
public function notificationBubble(): string
|
||||
{
|
||||
return $this->genNotificationBubble();
|
||||
}
|
||||
|
||||
private function genNotificationBubble()
|
||||
private function genNotificationBubble(): string
|
||||
{
|
||||
$tmpId = 'tmp-' . mt_rand();
|
||||
$defaultClasses = [
|
||||
|
|
|
@ -47,18 +47,18 @@ class BootstrapProgress extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions($options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function progress()
|
||||
public function progress(): string
|
||||
{
|
||||
return $this->genProgress();
|
||||
}
|
||||
|
||||
private function genProgress()
|
||||
private function genProgress(): string
|
||||
{
|
||||
$percentage = round(100 * $this->options['value'] / $this->options['total']);
|
||||
$heightStyle = !empty($this->options['height']) ? sprintf('height: %s;', h($this->options['height'])) : '';
|
||||
|
|
|
@ -51,18 +51,18 @@ class BootstrapProgressTimeline extends BootstrapGeneric
|
|||
$this->btHelper = $btHelper;
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions($options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function progressTimeline()
|
||||
public function progressTimeline(): string
|
||||
{
|
||||
return $this->genProgressTimeline();
|
||||
}
|
||||
|
||||
private function getStepIcon($step, $i, $nodeActive, $lineActive)
|
||||
private function getStepIcon(array $step, int $i, bool $nodeActive, bool $lineActive): string
|
||||
{
|
||||
$icon = $this->node('b', [
|
||||
'class' => [
|
||||
|
@ -92,7 +92,7 @@ class BootstrapProgressTimeline extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function getHorizontalLine($i, $nodeActive, $lineActive)
|
||||
private function getHorizontalLine(int $i, bool $nodeActive, bool $lineActive): string
|
||||
{
|
||||
$stepCount = count($this->options['steps']);
|
||||
if ($i == $stepCount - 1) {
|
||||
|
@ -114,7 +114,7 @@ class BootstrapProgressTimeline extends BootstrapGeneric
|
|||
return $line;
|
||||
}
|
||||
|
||||
private function getStepText($step, $isActive)
|
||||
private function getStepText(array $step, bool $isActive): string
|
||||
{
|
||||
return $this->node('li', [
|
||||
'class' => [
|
||||
|
@ -125,7 +125,7 @@ class BootstrapProgressTimeline extends BootstrapGeneric
|
|||
], h($step['text'] ?? ''));
|
||||
}
|
||||
|
||||
private function genProgressTimeline()
|
||||
private function genProgressTimeline(): string
|
||||
{
|
||||
$iconLis = '';
|
||||
$textLis = '';
|
||||
|
|
|
@ -34,7 +34,7 @@ class BootstrapSwitch extends BootstrapGeneric
|
|||
'attrs' => [],
|
||||
];
|
||||
|
||||
public function __construct($options)
|
||||
public function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => BootstrapGeneric::$variants,
|
||||
|
@ -42,18 +42,18 @@ class BootstrapSwitch extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function switch()
|
||||
public function switch(): string
|
||||
{
|
||||
return $this->genSwitch();
|
||||
}
|
||||
|
||||
public function genSwitch()
|
||||
public function genSwitch(): string
|
||||
{
|
||||
$tmpId = 'tmp-' . mt_rand();
|
||||
$input = self::node('input', array_merge(
|
||||
|
|
|
@ -6,6 +6,7 @@ use Cake\Utility\Hash;
|
|||
use Cake\Utility\Inflector;
|
||||
|
||||
use App\View\Helper\BootstrapGeneric;
|
||||
use App\View\Helper\BootstrapHelper;
|
||||
|
||||
/**
|
||||
* Creates a table from 2-dimensional data $items.
|
||||
|
@ -23,6 +24,7 @@ use App\View\Helper\BootstrapGeneric;
|
|||
* # Options for fields
|
||||
* - label: The name of the field to be displayed as a label
|
||||
* - labelHtml: The HTML of the field to be displayed as a label
|
||||
* - class: Additional classes to add for that row
|
||||
* - path: The path to be fed to Hash::get() in order to get the value from the $item
|
||||
* - element: The type of element to use combined with $elementsRootPath from the table's option
|
||||
* - formatter: A callback function to format the value
|
||||
|
@ -87,7 +89,7 @@ class BootstrapTable extends BootstrapGeneric
|
|||
'elementsRootPath' => '/genericElements/SingleViews/Fields/',
|
||||
];
|
||||
|
||||
function __construct($options, $data, $btHelper)
|
||||
function __construct(array $options, array $data, BootstrapHelper $btHelper)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => array_merge(BootstrapGeneric::$variants, [''])
|
||||
|
@ -99,7 +101,7 @@ class BootstrapTable extends BootstrapGeneric
|
|||
$this->btHelper = $btHelper;
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->checkOptionValidity();
|
||||
|
@ -108,12 +110,12 @@ class BootstrapTable extends BootstrapGeneric
|
|||
$this->options['headerClass'] = $this->convertToArrayIfNeeded($this->options['headerClass']);
|
||||
}
|
||||
|
||||
public function table()
|
||||
public function table(): string
|
||||
{
|
||||
return $this->genTable();
|
||||
}
|
||||
|
||||
private function genTable()
|
||||
private function genTable(): string
|
||||
{
|
||||
$html = $this->nodeOpen('table', [
|
||||
'class' => [
|
||||
|
@ -138,7 +140,7 @@ class BootstrapTable extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genHeader()
|
||||
private function genHeader(): string
|
||||
{
|
||||
$head = $this->nodeOpen('thead', [
|
||||
'class' => $this->options['headerClass'],
|
||||
|
@ -163,7 +165,7 @@ class BootstrapTable extends BootstrapGeneric
|
|||
return $head;
|
||||
}
|
||||
|
||||
private function genBody()
|
||||
private function genBody(): string
|
||||
{
|
||||
$body = $this->nodeOpen('tbody', [
|
||||
'class' => $this->options['bodyClass'],
|
||||
|
@ -175,7 +177,7 @@ class BootstrapTable extends BootstrapGeneric
|
|||
return $body;
|
||||
}
|
||||
|
||||
private function genRow($row, $rowIndex)
|
||||
private function genRow(array $row, int $rowIndex): string
|
||||
{
|
||||
$html = $this->nodeOpen('tr', [
|
||||
'class' => [
|
||||
|
@ -189,14 +191,14 @@ class BootstrapTable extends BootstrapGeneric
|
|||
}
|
||||
} else { // indexed array
|
||||
foreach ($row as $i => $cellValue) {
|
||||
$html .= $this->genCell($cellValue, 'index', $row, $rowIndex);
|
||||
$html .= $this->genCell($cellValue, [], $row, $rowIndex);
|
||||
}
|
||||
}
|
||||
$html .= $this->nodeClose('tr');
|
||||
return $html;
|
||||
}
|
||||
|
||||
private function genCell($value, $field = [], $row = [], $rowIndex = 0)
|
||||
private function genCell(string $value, array $field = [], array $row = [], int $rowIndex = 0): string
|
||||
{
|
||||
if (isset($field['formatter'])) {
|
||||
$cellContent = $field['formatter']($value, $row, $rowIndex);
|
||||
|
@ -209,20 +211,23 @@ class BootstrapTable extends BootstrapGeneric
|
|||
$cellContent = h($value);
|
||||
}
|
||||
return $this->node('td', [
|
||||
'class' => [
|
||||
!empty($field['columnVariant']) ? "table-{$field['columnVariant']}" : ''
|
||||
]
|
||||
'class' => array_merge(
|
||||
[
|
||||
!empty($field['columnVariant']) ? "table-{$field['columnVariant']}" : ''
|
||||
],
|
||||
$field['class'] ?? []
|
||||
),
|
||||
], $cellContent);
|
||||
}
|
||||
|
||||
private function getValueFromObject($row, $field)
|
||||
private function getValueFromObject(array $row, $field): string
|
||||
{
|
||||
$path = is_array($field) ? $field['path'] : $field;
|
||||
$cellValue = Hash::get($row, $path);
|
||||
return $cellValue;
|
||||
return !is_null($cellValue) ? $cellValue : '';
|
||||
}
|
||||
|
||||
private function getElementPath($type)
|
||||
private function getElementPath(string $type): string
|
||||
{
|
||||
return sprintf(
|
||||
'%s%sField',
|
||||
|
@ -231,7 +236,7 @@ class BootstrapTable extends BootstrapGeneric
|
|||
);
|
||||
}
|
||||
|
||||
private function genCaption()
|
||||
private function genCaption(): string
|
||||
{
|
||||
return !empty($this->caption) ? $this->node('caption', [], h($this->caption)) : '';
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
];
|
||||
private $bsClasses = null;
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'justify-header' => [false, 'center', 'end', 'start'],
|
||||
|
@ -104,12 +104,12 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
public function tabs()
|
||||
public function tabs(): string
|
||||
{
|
||||
return $this->genTabs();
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$this->options = array_merge($this->defaultOptions, $options);
|
||||
$this->data = $this->options['data'];
|
||||
|
@ -179,12 +179,12 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
private function genTabs()
|
||||
private function genTabs(): string
|
||||
{
|
||||
return $this->options['vertical'] ? $this->genVerticalTabs() : $this->genHorizontalTabs();
|
||||
}
|
||||
|
||||
private function genHorizontalTabs()
|
||||
private function genHorizontalTabs(): string
|
||||
{
|
||||
if ($this->options['card']) {
|
||||
$cardOptions = [
|
||||
|
@ -206,7 +206,7 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
}
|
||||
}
|
||||
|
||||
private function genVerticalTabs()
|
||||
private function genVerticalTabs(): string
|
||||
{
|
||||
$header = $this->node('div', ['class' => array_merge(
|
||||
[
|
||||
|
@ -244,7 +244,7 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
return $container;
|
||||
}
|
||||
|
||||
private function genNav()
|
||||
private function genNav(): string
|
||||
{
|
||||
$html = $this->nodeOpen('ul', [
|
||||
'class' => array_merge(['nav'], $this->bsClasses['nav'], $this->options['nav-class']),
|
||||
|
@ -257,7 +257,7 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genNavItem($navItem)
|
||||
private function genNavItem(array $navItem): string
|
||||
{
|
||||
$html = $this->nodeOpen('li', [
|
||||
'class' => array_merge(['nav-item'], $this->bsClasses['nav-item'], $this->options['nav-item-class']),
|
||||
|
@ -282,7 +282,7 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genContent()
|
||||
private function genContent(): string
|
||||
{
|
||||
$html = $this->nodeOpen('div', [
|
||||
'class' => array_merge(['tab-content'], $this->options['content-class']),
|
||||
|
@ -295,7 +295,7 @@ class BootstrapTabs extends BootstrapGeneric
|
|||
return $html;
|
||||
}
|
||||
|
||||
private function genContentItem($navItem, $content)
|
||||
private function genContentItem(array $navItem, string $content): string
|
||||
{
|
||||
return $this->node('div', [
|
||||
'class' => array_merge(['tab-pane', 'fade'], [!empty($navItem['active']) ? 'show active' : '']),
|
||||
|
|
|
@ -40,7 +40,7 @@ class BootstrapToast extends BootstrapGeneric
|
|||
'closeButton' => true,
|
||||
];
|
||||
|
||||
function __construct($options)
|
||||
function __construct(array $options)
|
||||
{
|
||||
$this->allowedOptionValues = [
|
||||
'variant' => array_merge(BootstrapGeneric::$variants, ['default']),
|
||||
|
@ -48,7 +48,7 @@ class BootstrapToast extends BootstrapGeneric
|
|||
$this->processOptions($options);
|
||||
}
|
||||
|
||||
private function processOptions($options)
|
||||
private function processOptions(array $options): void
|
||||
{
|
||||
$validOptions = array_filter($options, function($optionName) {
|
||||
return isset($this->defaultOptions[$optionName]);
|
||||
|
@ -57,12 +57,12 @@ class BootstrapToast extends BootstrapGeneric
|
|||
$this->checkOptionValidity();
|
||||
}
|
||||
|
||||
public function toast()
|
||||
public function toast(): string
|
||||
{
|
||||
return $this->genToast();
|
||||
}
|
||||
|
||||
private function genToast()
|
||||
private function genToast(): string
|
||||
{
|
||||
return $this->node('script', [], sprintf(
|
||||
"$(document).ready(function() {
|
||||
|
|
|
@ -191,10 +191,10 @@ class BootstrapHelper extends Helper
|
|||
* Creates a Bootstrap tabs from the given options
|
||||
*
|
||||
* @param array $options See BootstrapElements\BootstrapTabs
|
||||
* @param string $content See BootstrapElements\BootstrapTabs
|
||||
* @param array $content See BootstrapElements\BootstrapTabs
|
||||
* @return string
|
||||
*/
|
||||
public function accordion(array $options, string $content): string
|
||||
public function accordion(array $options, array $content): string
|
||||
{
|
||||
$bsAccordion = new BootstrapAccordion($options, $content, $this);
|
||||
return $bsAccordion->accordion();
|
||||
|
|
Loading…
Reference in New Issue