Skip to content

Commit

Permalink
fix menu is-active as method
Browse files Browse the repository at this point in the history
  • Loading branch information
yusronarif committed Oct 9, 2022
1 parent 51a0619 commit 8b08955
Showing 1 changed file with 34 additions and 23 deletions.
57 changes: 34 additions & 23 deletions src/MenuItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Koffin\Menu;

use Exception;
use Koffin\Menu\Enum\MenuType;

class MenuItem
Expand All @@ -14,50 +15,60 @@ public function __construct(
public array $param = [],
public string $group = 'Default',
public \Closure|bool $resolver = true,
public bool $isActive = false,
)
{ }

public function resolve(): bool
{
if ($this->type == MenuType::Route) {
$this->isActive = $this->activeRoute($this->name, $this->param);
}

if($this->resolver instanceof \Closure) {
return (bool) $this->resolver->call($this);
}
return $this->resolver;
}

public function isActive(): bool
{
if ($this->type == MenuType::Route) {
return $this->activeRoute($this->name, $this->param);
}

return false;
}

private function activeRoute(string $route = '', array $params = []): bool
{
if (empty($route = trim($route))) {
return false;
}

if (request()->routeIs("{$route}*")) {
if (empty($params)) {
return true;
}
try {
if (request()->routeIs("{$route}*")) {
if (empty($params)) {
return true;
}

$requestRoute = request()->route();
$requestRoute = request()->route();
$paramNames = $requestRoute->parameterNames();

foreach ($params as $key => $value) {
if (
$requestRoute->parameter($key) instanceof \Illuminate\Database\Eloquent\Model
&& $value instanceof \Illuminate\Database\Eloquent\Model
&& $requestRoute->parameter($key)->id != $value->id
) {
return false;
}
if ($requestRoute->parameter($key) != $value) {
return false;
foreach ($params as $key => $value) {
if (is_int($key)) {
$key = $paramNames[$key];
}
if (
$requestRoute->parameter($key) instanceof \Illuminate\Database\Eloquent\Model
&& $value instanceof \Illuminate\Database\Eloquent\Model
&& $requestRoute->parameter($key)->id != $value->id
) {
return false;
}
if ($requestRoute->parameter($key) != $value) {
return false;
}
}
}

return true;
}
return true;
}
} catch (Exception $e) {}

return false;
}
Expand Down

0 comments on commit 8b08955

Please sign in to comment.