ClassesFilter::makeClasses()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 17
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
eloc 6
c 2
b 0
f 0
nc 4
nop 1
dl 0
loc 17
ccs 7
cts 7
cp 1
crap 3
rs 10
1
<?php
2
3
namespace JeroenNoten\LaravelAdminLte\Menu\Filters;
4
5
use JeroenNoten\LaravelAdminLte\Helpers\MenuItemHelper;
6
use JeroenNoten\LaravelAdminLte\Helpers\SidebarItemHelper;
7
8
class ClassesFilter implements FilterInterface
9
{
10
    /**
11
     * Transforms a menu item. Add some particular HTML classes when suitable.
12
     *
13
     * @param  array  $item  A menu item
14
     * @return array
15
     */
16 54
    public function transform($item)
17
    {
18 54
        $item['class'] = $this->makeClasses($item);
19
20 54
        if (MenuItemHelper::isSubmenu($item)) {
21 17
            $item['submenu_class'] = $this->makeSubmenuClasses($item);
22
        }
23
24 54
        return $item;
25
    }
26
27
    /**
28
     * Make the HTML classes string attribute for a menu item.
29
     *
30
     * @param  array  $item  A menu item
31
     * @return string
32
     */
33 54
    protected function makeClasses($item)
34
    {
35 54
        $classes = [];
36
37
        // Add custom classes (from menu item configuration).
38
39 54
        if (! empty($item['classes'])) {
40 2
            $classes[] = $item['classes'];
41
        }
42
43
        // When the item is active, add the "active" class too.
44
45 54
        if (! empty($item['active'])) {
46 31
            $classes[] = 'active';
47
        }
48
49 54
        return implode(' ', $classes);
50
    }
51
52
    /**
53
     * Make the HTML classes string for the submenu of an item.
54
     *
55
     * @param  array  $item  A menu item
56
     * @return string
57
     */
58 17
    protected function makeSubmenuClasses($item)
59
    {
60 17
        $classes = [];
61
62
        // Add the "menu-open" class when a sidebar submenu is active. Note we
63
        // need to add the class to sidebar submenu items only.
64
65 17
        if (SidebarItemHelper::isValidItem($item) && $item['active']) {
66 13
            $classes[] = 'menu-open';
67
        }
68
69 17
        return implode(' ', $classes);
70
    }
71
}
72