Provides a capability of auto-completed searching for results inside a select input field.
You can install the package in to a Laravel app that uses Nova via composer:
composer require techouse/select-auto-completeThe API is extends Nova's default Select Field by adding these additional options:
- required - OPTIONAL - Make the field required. Default is
false. - default - OPTIONAL - Set the default value in case of an empty field. Default is
null. - maxResults - OPTIONAL - Number of results to show at a time. Has to be a positive integer. Default is
30. - maxHeight - OPTIONAL - Height of select dropdown list. Default is
220px.
Simply use SelectAutoComplete class instead of Select directly or alias it like the example below so you won't have to refactor too much existing code.
<?php
namespace App\Nova\Actions;
use App\AccountData;
use Illuminate\Bus\Queueable;
use Laravel\Nova\Actions\Action;
use Illuminate\Support\Collection;
use Laravel\Nova\Fields\ActionFields;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Techouse\SelectAutoComplete\SelectAutoComplete as Select;
class EmailAccountProfile extends Action
{
use InteractsWithQueue, Queueable, SerializesModels;
/**
* Perform the action on the given models.
*
* @param \Laravel\Nova\Fields\ActionFields $fields
* @param \Illuminate\Support\Collection $models
* @return mixed
*/
public function handle(ActionFields $fields, Collection $models)
{
foreach ($models as $model) {
(new AccountData($model))->send();
}
}
/**
* Get the fields available on the action.
*
* @return array
*/
public function fields()
{
return [
Select::make(__('Person'), 'person')
->options(\App\Person::all()->mapWithKeys(function ($person) {
return [$person->id => $person->name];
}))
->displayUsingLabels(),
Select::make(__('Partner'), 'partner')
->options(\App\User::all()->pluck('name', 'id'))
->displayUsingLabels()
->default(7) // set the default to the User with the ID 7
->maxResults(5) // limit the dropdown select to a max of 5 hits
->maxHeight('100px') // limit the dropdown to a max height of 100px
->required() // make the field required
];
}
}