Skip to content

Commit 6eee3fb

Browse files
authored
add array as active-name
1 parent 4910ebe commit 6eee3fb

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

src/GroupItem.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public function __construct(
7979
* @param array $param
8080
* @param array $attribute
8181
* @param int $sort
82-
* @param string|null $activeRoute
82+
* @param string|array|null $activeRoute
8383
* @param array|null $activeRouteParam
8484
* @param \Closure|bool $resolver
8585
*
@@ -91,7 +91,7 @@ public function route(
9191
array $param = [],
9292
array $attribute = [],
9393
int $sort = 0,
94-
string|null $activeRoute = null,
94+
string|array|null $activeRoute = null,
9595
array|null $activeRouteParam = null,
9696
Closure|bool $resolver = true
9797
): static {
@@ -114,7 +114,7 @@ public function route(
114114
* @param array $param
115115
* @param array $attribute
116116
* @param int $sort
117-
* @param string|null $activeUrl
117+
* @param string|array|null $activeUrl
118118
* @param array|null $activeUrlParam
119119
* @param \Closure|bool $resolver
120120
*
@@ -126,7 +126,7 @@ public function url(
126126
array $param = [],
127127
array $attribute = [],
128128
int $sort = 0,
129-
string|null $activeUrl = null,
129+
string|array|null $activeUrl = null,
130130
array|null $activeUrlParam = null,
131131
Closure|bool $resolver = true
132132
): static {
@@ -150,7 +150,7 @@ public function url(
150150
* @param array $param
151151
* @param array $attribute
152152
* @param int $sort
153-
* @param string|null $activeName
153+
* @param string|array|null $activeName
154154
* @param array|null $activeParam
155155
* @param \Closure|bool $resolver
156156
*
@@ -163,7 +163,7 @@ public function add(
163163
array $param = [],
164164
array $attribute = [],
165165
int $sort = 0,
166-
string|null $activeName = null,
166+
string|array|null $activeName = null,
167167
array|null $activeParam = null,
168168
Closure|bool $resolver = true
169169
): static {

src/MenuItem.php

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class MenuItem implements \Kfn\Menu\Contracts\MenuItem
3838
* @param array $param
3939
* @param array|object $attribute
4040
* @param int $sort
41-
* @param string|null $activeName
41+
* @param string|array|null $activeName
4242
* @param array|null $activeParam
4343
* @param \Closure|bool $resolver
4444
*/
@@ -49,7 +49,7 @@ public function __construct(
4949
readonly public array $param = [],
5050
array|object $attribute = [],
5151
readonly public int $sort = 0,
52-
readonly public string|null $activeName = null,
52+
readonly public string|array|null $activeName = null,
5353
readonly public array|null $activeParam = null,
5454
readonly public \Closure|bool $resolver = true
5555
) {
@@ -124,19 +124,22 @@ private function resolveHref(): void
124124
*
125125
* @return bool
126126
*/
127-
private function getActiveStatus(string|null $name = '', array $params = []): bool
127+
private function getActiveStatus(string|array|null $name = '', array $params = []): bool
128128
{
129-
$name = str($name)->trim();
129+
$name = collect((array) $name)->flatMap(function ($nm) {
130+
$nm = preg_replace('/\s+|\h+/', '', $nm);
131+
if (!empty($nm)) {
132+
return MenuType::ROUTE === $this->type ? [$nm, $nm.'.*'] : [$nm, $nm.'/*'];
133+
}
134+
});
130135
if ($name->isEmpty()) {
131136
return false;
132137
}
133138

134139
try {
135-
$name = $name->toString();
136-
137140
return match ($this->type) {
138-
MenuType::ROUTE => $this->getActiveByRoute($name, $params),
139-
MenuType::URL => $this->getActiveByUrl($name),
141+
MenuType::ROUTE => $this->getActiveByRoute($name->toArray(), $params),
142+
MenuType::URL => $this->getActiveByUrl($name->toArray()),
140143
default => false,
141144
};
142145
} catch (Exception $e) {
@@ -146,14 +149,14 @@ private function getActiveStatus(string|null $name = '', array $params = []): bo
146149
return false;
147150
}
148151

149-
private function getActiveByUrl(string $name): bool
152+
private function getActiveByUrl(array $names): bool
150153
{
151-
return request()->is($name, "{$name}.*");
154+
return request()->is($names);
152155
}
153156

154-
private function getActiveByRoute(string $name, array $params = []): bool
157+
private function getActiveByRoute(array $names, array $params = []): bool
155158
{
156-
if (request()->routeIs($name, "{$name}.*")) {
159+
if (request()->routeIs($names)) {
157160
if (empty($params)) {
158161
return true;
159162
}

0 commit comments

Comments
 (0)