Button::render()   A
last analyzed

Complexity

Conditions 4
Paths 6

Size

Total Lines 25
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 4
eloc 18
c 1
b 0
f 1
nc 6
nop 2
dl 0
loc 25
rs 9.6666
1
<?php declare(strict_types=1);
2
3
namespace Formularium\Frontend\Materialize\Element;
4
5
use Formularium\Element;
6
use Formularium\HTMLNode;
7
use Formularium\Frontend\HTML\Element\Button as HTMLButton;
8
use Formularium\Metadata;
9
10
class Button extends Element
11
{
12
    public function render(array $parameters, HTMLNode $previous): HTMLNode
13
    {
14
        $btnClass = 'btn';
15
        $size = $parameters[self::SIZE] ?? '';
16
        switch ($size) {
17
            case self::SIZE_LARGE:
18
                $btnClass = 'btn-large';
19
                break;
20
            case self::SIZE_SMALL:
21
                $btnClass = 'btn-small';
22
                break;
23
        }
24
        $previous->addAttribute('class', "$btnClass waves-effect waves-light");
25
26
        $icon = $parameters[self::ICON] ?? '';
27
        if ($icon) {
28
            $iconElement = HTMLNode::factory(
29
                'i',
30
                [ 'class' => "material-icons left" ],
31
                $icon
32
            );
33
            $previous->prependContent($iconElement);
34
        }
35
36
        return $previous;
37
    }
38
39
    public static function getMetadata(): Metadata
40
    {
41
        $metadata = HTMLButton::getMetadata();
42
        return $metadata;
43
    }
44
}
45