-
Notifications
You must be signed in to change notification settings - Fork 0
/
NavBar.php
executable file
·111 lines (89 loc) · 3.35 KB
/
NavBar.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
namespace makroxyz\materializecss;
use Yii;
/**
* Class NavBar
* @package makroxyz\materializecss
*/
class NavBar extends Widget
{
/**
* @var array the HTML attributes for the widget container tag. The following special options are recognized:
*
* - tag: string, defaults to "nav", the name of the container tag.
*
* @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
*/
public $options = [];
/**
* @var string|boolean the text of the brand or false if it's not used. Note that this is not HTML-encoded.
* @see http://getbootstrap.com/components/#navbar
*/
public $brandLabel = false;
/**
* @var boolean the text of the brand or false if it's not used. Note that this is not HTML-encoded.
* @see http://getbootstrap.com/components/#navbar
*/
public $fixed = false;
/**
* @var array|string|boolean $url the URL for the brand's hyperlink tag. This parameter will be processed by [[\yii\helpers\Url::to()]]
* and will be used for the "href" attribute of the brand link. Default value is false that means
* [[\yii\web\Application::homeUrl]] will be used.
* You may set it to `null` if you want to have no link at all.
*/
public $brandUrl = false;
/**
* @var array the HTML attributes of the brand link.
* @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
*/
public $brandOptions = [];
/**
* @var string text to show for screen readers for the button to toggle the navbar.
*/
// public $screenReaderToggleText = 'Toggle navigation';
/**
* @var boolean whether the navbar content should be included in an inner div container which by default
* adds left and right padding. Set this to false for a 100% width navbar.
*/
public $fixedContainerOptions = [];
/**
* @var array the HTML attributes of the inner container.
* @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
*/
public $wrapperOptions = [];
/**
* Initializes the widget.
*/
public function init()
{
parent::init();
$this->clientOptions = false;
if (empty($this->options['role'])) {
$this->options['role'] = 'navigation';
}
if ($this->fixed) {
Html::addCssClass($this->fixedContainerOptions, 'navbar-fixed');
echo Html::beginTag('div', $this->fixedContainerOptions);
}
echo Html::beginTag('nav', $this->options);
Html::addCssClass($this->wrapperOptions, 'nav-wrapper');
echo Html::beginTag('div', $this->wrapperOptions);
if ($this->brandLabel !== false) {
Html::addCssClass($this->brandOptions, ['widget' => 'brand-logo']);
echo Html::a($this->brandLabel, $this->brandUrl === false ? Yii::$app->homeUrl : $this->brandUrl, $this->brandOptions);
}
}
/**
* Renders the widget.
*/
public function run()
{
// echo Html::endTag('div'); // container
echo Html::endTag('div'); // nav-wrapper
echo Html::endTag('nav');
if ($this->fixed) {
echo Html::endTag('div');
}
MaterializePluginAsset::register($this->getView());
}
}