Skip to content

Commit

Permalink
Merge branch 'master' of github.com:koffinate/laravel-menu
Browse files Browse the repository at this point in the history
  • Loading branch information
yusronarif committed Mar 28, 2023
2 parents 0a64973 + 26c00d1 commit 85ae849
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 57 deletions.
17 changes: 8 additions & 9 deletions helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

use Koffin\Menu\Enum\MenuType;

if (!function_exists('menus')) {
if (! function_exists('menus')) {
/**
* Menu instance
*
* @param ?string $name
* @param ?string $group
* Menu instance.
*
* @param ?string $name
* @param ?string $group
* @return \Koffin\Menu\Contracts\Menu
*/
function menus(?string $name = null, ?string $group = null): \Koffin\Menu\Contracts\Menu
Expand All @@ -17,19 +16,19 @@ function menus(?string $name = null, ?string $group = null): \Koffin\Menu\Contra
}
}

if (!function_exists('menuType')) {
if (! function_exists('menuType')) {
/**
* Menu Type Enum
*
* @param string|null $type
* Menu Type Enum.
*
* @param string|null $type
* @return MenuType|string|null
*/
function menuType(?string $type = null): MenuType|string|null
{
if ($type) {
return MenuType::tryFrom($type);
}

return MenuType::class;
}
}
80 changes: 38 additions & 42 deletions src/Factory.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,23 @@ class Factory implements \Koffin\Menu\Contracts\Menu
private static string $childName;

/**
* @param string|null $name
* @param string|null $group
* @param array $groupAttribute
* @param string|null $name
* @param string|null $group
* @param array $groupAttribute
*/
public function __construct(?string $name = null, ?string $group = null, array $groupAttribute = [])
{
static::$name = $name ?? 'main';
static::$group = $group ?? 'Default';
static::$groupAttribute = new MenuItemAttribute($groupAttribute);
if (!static::$factory instanceof Fluent) {
if (! static::$factory instanceof Fluent) {
static::$factory = new Fluent();
}
}

/**
* @param bool $grouped
* @param bool $resolvedOnly
*
* @param bool $grouped
* @param bool $resolvedOnly
* @return \Koffin\Menu\MenuCollection
*/
public function get(bool $grouped = true, bool $resolvedOnly = true): MenuCollection
Expand All @@ -54,30 +53,29 @@ public function get(bool $grouped = true, bool $resolvedOnly = true): MenuCollec

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

return new MenuCollection();
}

/**
* @param string $name
* @param string $title
* @param array $attribute
* @param array $param
* @param string|null $activeRoute
* @param array|null $activeRouteParam
* @param \Closure|bool $resolver
* @param bool $hasChild
*
* @param string $name
* @param string $title
* @param array $attribute
* @param array $param
* @param string|null $activeRoute
* @param array|null $activeRouteParam
* @param \Closure|bool $resolver
* @param bool $hasChild
* @return static
*/
public static function route(
string $name, string $title,
array $attribute = [], array $param = [],
?string $activeRoute = null, ?array $activeRouteParam = null,
Closure|bool $resolver = true, bool $hasChild = false
): static
{
): static {
return static::add(
type: MenuType::ROUTE,
name: $name,
Expand All @@ -91,24 +89,22 @@ public static function route(
}

/**
* @param string $name
* @param string $title
* @param array $attribute
* @param array $param
* @param string|null $activeRoute
* @param array|null $activeRouteParam
* @param \Closure|bool $resolver
* @param bool $hasChild
*
* @param string $name
* @param string $title
* @param array $attribute
* @param array $param
* @param string|null $activeRoute
* @param array|null $activeRouteParam
* @param \Closure|bool $resolver
* @param bool $hasChild
* @return static
*/
public static function url(
string $name, string $title,
array $attribute = [], array $param = [],
?string $activeRoute = null, ?array $activeRouteParam = null,
Closure|bool $resolver = true, bool $hasChild = false
): static
{
): static {
return static::add(
type: MenuType::URL,
name: $name,
Expand All @@ -122,24 +118,22 @@ public static function url(
}

/**
* @param \Koffin\Menu\Enum\MenuType $type
* @param string $name
* @param string $title
* @param array $attribute
* @param array $param
* @param string|null $activeRoute
* @param array|null $activeRouteParam
* @param \Closure|bool $resolver
*
* @param \Koffin\Menu\Enum\MenuType $type
* @param string $name
* @param string $title
* @param array $attribute
* @param array $param
* @param string|null $activeRoute
* @param array|null $activeRouteParam
* @param \Closure|bool $resolver
* @return static
*/
public static function add(
MenuType $type, string $name, string $title,
array $attribute = [], array $param = [],
?string $activeRoute = null, ?array $activeRouteParam = null,
Closure|bool $resolver = true
): static
{
): static {
$factory = static::getFactory();
$factory->add(
new MenuItem(
Expand All @@ -155,6 +149,7 @@ public static function add(
resolver: $resolver,
)
);

return new static(name: static::$name, group: static::$group);
}

Expand All @@ -163,9 +158,10 @@ public static function add(
*/
private static function getFactory(): MenuCollection
{
if (!static::$factory[static::$name] instanceof MenuCollection) {
if (! static::$factory[static::$name] instanceof MenuCollection) {
static::$factory[static::$name] = new MenuCollection();
}

return static::$factory[static::$name];
}
}
1 change: 0 additions & 1 deletion src/MenuCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,4 @@

class MenuCollection extends Collection
{

}
9 changes: 5 additions & 4 deletions src/MenuItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ public function __construct(
public MenuItemAttribute|array $groupAttribute = [],
public \Closure|bool $resolver = true,
public bool $hasChild = false,
)
{
) {
if (is_array($this->attribute)) {
$this->attribute = new MenuItemAttribute($this->attribute);
}
Expand All @@ -33,9 +32,10 @@ public function __construct(

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

return $this->resolver;
}

Expand Down Expand Up @@ -96,7 +96,8 @@ private function isActiveRoute(string $route = '', array $params = []): bool

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

return false;
}
Expand Down
2 changes: 1 addition & 1 deletion src/MenuServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function register(): void
*/
public function boot(): void
{
$this->app->singleton('menus', fn($app, $p) => new Factory(name: $p['name'] ?? null, group: $p['group'] ?? null));
$this->app->singleton('menus', fn ($app, $p) => new Factory(name: $p['name'] ?? null, group: $p['group'] ?? null));
$this->app->alias('menus', Factory::class);
}
}

0 comments on commit 85ae849

Please sign in to comment.