Passed
Pull Request — master (#856)
by Florian
03:57
created

InputGroupComponent   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 139
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 32
dl 0
loc 139
ccs 30
cts 30
cp 1
rs 10
c 1
b 0
f 0
wmc 13

5 Methods

Rating   Name   Duplication   Size   Complexity  
A makeItemClass() 0 9 3
A __construct() 0 11 1
A makeInputGroupClass() 0 17 6
A render() 0 3 1
A makeFormGroupClass() 0 9 2
1
<?php
2
3
namespace JeroenNoten\LaravelAdminLte\Components;
4
5
use Illuminate\View\Component;
6
7
class InputGroupComponent extends Component
8
{
9
    /**
10
     * The name and id attribute for the input group item. The input group item
11
     * may be an "input", a "select", a "textarea", etc.
12
     *
13
     * @var string
14
     */
15
    public $name;
16
17
    /**
18
     * The label of the input group.
19
     *
20
     * @var string
21
     */
22
    public $label;
23
24
    /**
25
     * The input group size (you can specify 'sm' or 'lg').
26
     *
27
     * @var string
28
     */
29
    public $size;
30
31
    /**
32
     * Extra classes for the label container. This provides a way to customize
33
     * the label style.
34
     *
35
     * @var string
36
     */
37
    public $labelClass;
38
39
    /**
40
     * Extra classes for the "form-group" element. This provides a way to
41
     * customize the main container style.
42
     *
43
     * @var string
44
     */
45
    public $topClass;
46
47
    /**
48
     * Indicates if the invalid feedback is disabled for the input group.
49
     *
50
     * @var bool
51
     */
52
    public $disableFeedback;
53
54
    /**
55
     * Additional classes for "input-group" element. This provides a way to
56
     * customize the input group container style.
57
     *
58
     * @var string
59
     */
60
    public $inputGroupClass;
61
62
    /**
63
     * Create a new component instance.
64
     *
65
     * @return void
66
     */
67 10
    public function __construct(
68
        $name, $label = null, $size = null, $labelClass = null,
69
        $topClass = null, $inputGroupClass = null, $disableFeedback = null
70
    ) {
71 10
        $this->name = $name;
72 10
        $this->label = $label;
73 10
        $this->size = $size;
74 10
        $this->topClass = $topClass;
75 10
        $this->labelClass = $labelClass;
76 10
        $this->inputGroupClass = $inputGroupClass;
77 10
        $this->disableFeedback = $disableFeedback;
78 10
    }
79
80
    /**
81
     * Make the class attribute for the "form-group" element.
82
     *
83
     * @return string
84
     */
85 1
    public function makeFormGroupClass()
86
    {
87 1
        $classes = ['form-group'];
88
89 1
        if (isset($this->topClass)) {
90 1
            $classes[] = $this->topClass;
91
        }
92
93 1
        return implode(' ', $classes);
94
    }
95
96
    /**
97
     * Make the class attribute for the "input-group" element.
98
     *
99
     * @param string $invalid
100
     * @return string
101
     */
102 1
    public function makeInputGroupClass($invalid = null)
103
    {
104 1
        $classes = ['input-group'];
105
106 1
        if (isset($this->size) && in_array($this->size, ['sm', 'lg'])) {
107 1
            $classes[] = "input-group-{$this->size}";
108
        }
109
110 1
        if (! empty($invalid) && ! isset($this->disableFeedback)) {
111 1
            $classes[] = 'adminlte-invalid-igroup';
112
        }
113
114 1
        if (isset($this->inputGroupClass)) {
115 1
            $classes[] = $this->inputGroupClass;
116
        }
117
118 1
        return implode(' ', $classes);
119
    }
120
121
    /**
122
     * Make the class attribute for the input group item.
123
     *
124
     * @param string $invalid
125
     * @return string
126
     */
127 2
    public function makeItemClass($invalid = null)
128
    {
129 2
        $classes = ['form-control'];
130
131 2
        if (! empty($invalid) && ! isset($this->disableFeedback)) {
132 2
            $classes[] = 'is-invalid';
133
        }
134
135 2
        return implode(' ', $classes);
136
    }
137
138
    /**
139
     * Get the view / contents that represent the component.
140
     *
141
     * @return \Illuminate\View\View|string
142
     */
143 1
    public function render()
144
    {
145 1
        return view('adminlte::components.input-group-component');
146
    }
147
}
148