Nova Menu Advanced
Visit this package on GitHub

Menu Filter

You can activate the filter by calling the MenuFilter::activate method.
In the activate attribute you can define where the filter should be displayed.
Valid options are top, bottom or both to display it on top and bottom.

use NormanHuth\NovaMenu\Services\MenuFilter;
 
class NovaServiceProvider extends NovaApplicationServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot(): void
{
parent::boot();
MenuFilter::activate('top');

You can add keywords to a menu element for the filter by invoking the addKeywords method when defining a menu element:

use NormanHuth\NovaMenu\MenuSection;
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
use NormanHuth\NovaMenu\MenuCard;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuSection::make(__('Customers'), [])
->addKeywords(['Nature', 'Ocean']),
MenuGroup::make(__('Licensing'), [])
->addKeywords(['Nature', 'Ocean']),
MenuItem::resource(User::class)
->addKeywords(['Nature', 'Ocean']),
MenuCard::make('info')
->addKeywords(['Nature', 'Ocean']),
// ..
];
});

You can change the default placeholder by invoking the placeholder when activate filter.
Default: __('Filter')

use NormanHuth\NovaMenu\Services\MenuFilter;
 
class NovaServiceProvider extends NovaApplicationServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot(): void
{
parent::boot();
MenuFilter::activate('top')
->placeholder(__('Search menu'));

You can change the default empty text by invoking the emptyText when activate filter.
Default: __('No :resource matched the given criteria.') - resource: __('menu entry')

use NormanHuth\NovaMenu\Services\MenuFilter;
 
class NovaServiceProvider extends NovaApplicationServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot(): void
{
parent::boot();
MenuFilter::activate('top')
->emptyText(__('No items found'));

This feature is available from version 1.6.5.

By default, the stylesheet classes hidden is used for filtering.
You can change this by invoking the setFilterClass when defining a menu element.

use NormanHuth\NovaMenu\MenuSection;
use NormanHuth\NovaMenu\MenuGroup;
use NormanHuth\NovaMenu\MenuItem;
use NormanHuth\NovaMenu\MenuCard;
 
Nova::mainMenu(function (Request $request) {
return [
//..
MenuSection::make(__('Customers'), [])
->setFilterClass('display-none'),
MenuGroup::make(__('Licensing'), [])
->setFilterClass('display-none'),
MenuItem::resource(User::class)
->setFilterClass('display-none'),
MenuCard::make('info')
->setFilterClass('display-none'),
// ..
];
});