Skip to content

Commit a34c697

Browse files
authored
Merge pull request #1 from nurmanhabib/feature/v5
Feature v5
2 parents d16c2e8 + 20d4aa6 commit a34c697

File tree

11 files changed

+134
-25
lines changed

11 files changed

+134
-25
lines changed

README.md

Lines changed: 56 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Welcome to Laravel Menu!
22

3-
Generate multi navigation menus with unique names, can be displayed anywhere. Custom templating. Support Laravel 5.
3+
Generate multi navigation menus with unique names, can be displayed anywhere. Custom templating. Support Laravel 5, 6, 7.
4+
5+
![Alt image](screenshoot.png)
46

57
------
68

@@ -52,21 +54,35 @@ You can create in the routes files, middleware, or service providers that you cu
5254
```php
5355
<?php
5456

55-
Menu::make('sidebar', function () {
56-
Menu::link('Dashboard', route('home'), 'view-dashboard');
57-
58-
Menu::dropdown('Users', function () {
59-
Menu::link('All', 'users');
60-
Menu::link('Add New User', 'users/create');
61-
}, 'accounts');
62-
63-
Menu::link('Posts', 'posts', 'paper');
64-
65-
Menu::dropdown('Settings', function () {
66-
Menu::link('Date and Time', 'settings/date-time');
67-
Menu::link('Other Setting', 'settings/other');
68-
}, 'wrench');
57+
Menu::make('sidebar', function ($menu) {
58+
Menu::link('Home', 'home')->setIcon('fas fa-home');
59+
Menu::link('Article', 'articles')->setIcon('fas fa-newspaper')
60+
->setData([
61+
'badge' => [
62+
'type' => 'warning',
63+
'text' => '16'
64+
]
65+
]);
66+
67+
Menu::link('Comment', 'comments')->setIcon('fas fa-comments')
68+
->setData([
69+
'badge' => [
70+
'type' => 'primary',
71+
'text' => 'New'
72+
]
73+
]);
74+
75+
Menu::dropdown('Services', function () {
76+
Menu::link('Service 1', 'services/one');
77+
Menu::link('Service 2', 'services/two');
78+
});
79+
80+
Menu::heading('Account');
81+
82+
Menu::link('Change Password')->setIcon('fas fa-key');
83+
Menu::logout()->setIcon('fas fa-sign-out-alt');
6984
});
85+
7086
```
7187

7288

@@ -78,7 +94,7 @@ Menu::make('account', function () {
7894

7995
Menu::separate();
8096

81-
Menu::link('Change Password', url('change-password'), 'view-dashboard');
97+
Menu::link('Change Password', url('change-password'), 'view-dashboard');
8298
Menu::logout();
8399

84100
// Alternative to
@@ -88,6 +104,12 @@ Menu::make('account', function () {
88104

89105

90106

107+
#### Set View
108+
109+
```php
110+
Menu::get('sidebar')->setView('admin-lte');
111+
```
112+
91113

92114
#### Render to View
93115

@@ -119,6 +141,18 @@ To be able to customize the navigation with view
119141
Menu::get('sidebar')->setView('view.name');
120142
```
121143

144+
Available default views:
145+
146+
```php
147+
'views' => [
148+
'simple' => 'menus::simple.menu',
149+
'bs-nav-stacked' => 'menus::bs-nav-stacked.menu',
150+
'sbadmin2' => 'menus::sbadmin2.menu',
151+
'adminto' => 'adminto::menus.sidebar.menu',
152+
'admin-lte' => 'menus::admin-lte.menus',
153+
]
154+
```
155+
122156
Then you can customize `view.name` and receive `$menu` variable `Nurmanhabib\Navigator\NavCollection`
123157

124158
```html
@@ -159,12 +193,12 @@ Then you can customize `view.name` and receive `$menu` variable `Nurmanhabib\Nav
159193
```
160194

161195

162-
## Custom Render
196+
## Custom Renderer
163197

164198
```php
165199
use Nurmanhabib\LaravelMenu\Renders\NavViewRender;
166200

167-
Menu::get('sidebar')->setRender(new NavViewRender('view.name'));
201+
Menu::get('sidebar')->setRenderer(new NavViewRender('view.name'));
168202
```
169203

170204
------
@@ -196,3 +230,7 @@ $collection->addParent('Text Parent', callback($child), 'icon', '#');
196230
$collection->add($nav);
197231
$collection->getItems();
198232
```
233+
234+
## Contributing
235+
236+
I apologize if the documentation is still not perfect, if you are willing to contribute to the documentation please do a Pull Request. We also feel happy if we want to contribute to open source.

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"description": "Make it easy to create navigation menus on Laravel",
44
"type": "library",
55
"require": {
6-
"illuminate/support": "^5.0",
7-
"nurmanhabib/navigator": "^4.1"
6+
"laravel/framework": ">5.0",
7+
"nurmanhabib/navigator": "^5.0"
88
},
99
"license": "MIT",
1010
"keywords": [

config/laravel-menu.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
'bs-nav-stacked' => 'menus::bs-nav-stacked.menu',
1111
'sbadmin2' => 'menus::sbadmin2.menu',
1212
'adminto' => 'adminto::menus.sidebar.menu',
13+
'admin-lte' => 'menus::admin-lte.menus',
1314
],
1415

1516
// 'menus' => [
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
@if ($item->getType() == 'heading')
2+
<li class="nav-header">{{ strtoupper($item->getText()) }}</li>
3+
@else
4+
@if ($item->hasChild())
5+
<li class="nav-item has-treeview {{ $item->isActive() ? 'menu-open' : '' }}">
6+
<a href="{{ $item->getUrl() }}" class="nav-link {{ $item->isActive() ? 'active' : '' }}">
7+
<i class="nav-icon {{ $item->getIcon() ?: 'fas fa-th' }}"></i>
8+
<p>
9+
{{ $item->getText() }}
10+
<i class="right fas fa-angle-left"></i>
11+
@if ($badge = $item->getData('badge'))
12+
<span class="right badge badge-{{ Arr::get($badge, 'type', 'info') }}">{{ Arr::get($badge, 'text') }}</span>
13+
@endif
14+
</p>
15+
</a>
16+
@include('menus.admin-lte.menus-dropdown', ['items' => $item->getChild()->getItems()])
17+
</li>
18+
@else
19+
<li class="nav-item">
20+
@if ($item->getData('method') == 'POST')
21+
@php($formId = uniqid('form-'))
22+
<a href="{{ $item->getUrl() }}"
23+
class="nav-link {{ $item->isActive() ? 'active' : '' }}"
24+
onclick="event.preventDefault();
25+
document.getElementById('{{ $formId }}').submit();"
26+
>
27+
<i class="nav-icon {{ $item->getIcon() ?: 'fas fa-th' }}"></i>
28+
<p>
29+
{{ $item->getText() }}
30+
@if ($badge = $item->getData('badge'))
31+
<span class="right badge badge-{{ Arr::get($badge, 'type', 'info') }}">{{ Arr::get($badge, 'text') }}</span>
32+
@endif
33+
</p>
34+
</a>
35+
<form id="{{ $formId }}" action="{{ route('logout') }}" method="POST" style="display: none;">
36+
@csrf
37+
</form>
38+
39+
@else
40+
<a href="{{ $item->getUrl() }}" class="nav-link {{ $item->isActive() ? 'active' : '' }}">
41+
<i class="nav-icon {{ $item->getIcon() ?: 'fas fa-th' }}"></i>
42+
<p>
43+
{{ $item->getText() }}
44+
@if ($badge = $item->getData('badge'))
45+
<span class="right badge badge-{{ Arr::get($badge, 'type', 'info') }}">{{ Arr::get($badge, 'text') }}</span>
46+
@endif
47+
</p>
48+
</a>
49+
@endif
50+
</li>
51+
@endif
52+
@endif
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<li class="nav-item">
2+
<a href="{{ $item->getUrl() }}" class="nav-link {{ $item->isActive() ? 'active' : '' }}">
3+
<i class="far fa-circle nav-icon"></i>
4+
<p>{{ $item->getText() }}</p>
5+
</a>
6+
</li>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<ul class="nav nav-treeview">
2+
@foreach ($items as $item)
3+
@include('menus.admin-lte.menus-dropdown-item')
4+
@endforeach
5+
</ul>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<nav class="mt-2">
2+
<ul class="nav nav-pills nav-sidebar nav-child-indent flex-column" data-widget="treeview" role="menu" data-accordion="false">
3+
@foreach ($menu->getItems() as $item)
4+
@include('menus.admin-lte.item')
5+
@endforeach
6+
</ul>
7+
</nav>

screenshoot.png

135 KB
Loading

src/Concerns/NavCollectionManage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public function clearCurrent()
3131
*/
3232
public function getCurrent()
3333
{
34-
return array_last($this->navStack);
34+
return end($this->navStack);
3535
}
3636

3737
public function logout($text = 'Logout', $url = 'logout', $icon = null)

src/LaravelNavigator.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ public function setView($view)
2121
{
2222
$view = app('menu')->getView($view);
2323

24-
return $this->setRender(new NavViewRender($view));
24+
$this->menu->setRenderer(new NavViewRender($view));
25+
26+
return $this;
2527
}
2628

2729
public function renderView($view)

0 commit comments

Comments
 (0)