diff --git a/src/Console/Commands/EventMakeCommand.php b/src/Console/Commands/EventMakeCommand.php index 28b1bd4..f567715 100644 --- a/src/Console/Commands/EventMakeCommand.php +++ b/src/Console/Commands/EventMakeCommand.php @@ -10,6 +10,7 @@ use Symfony\Component\Console\Input\InputOption; use function Laravel\Prompts\search; +use function Laravel\Prompts\select; class EventMakeCommand extends GeneratorCommand { @@ -45,18 +46,32 @@ protected function replaceClass($stub, $name) { $stub = parent::replaceClass($stub, $name); - $events = collect(Event::getEvents()); + $events = collect(Event::getEvents())->sortBy('name'); $parameters = collect( File::json(__DIR__.'/../../../resources/data/events.json') )->flatMap(fn ($event) => $event); - $event = $this->option('event') ?: search( - 'Select a Discord event to listen for', - fn (string $value) => strlen($value) > 0 - ? $events->pluck('name', 'key')->filter(fn ($name) => Str::contains(strtolower($name), strtolower($value)))->all() - : $events->pluck('name', 'key')->all() - ); + $event = $this->option('event'); + + if (! $event) { + $event = windows_os() + ? select( + 'Select a Discord event to listen for', + $events->pluck('name')->flip()->all(), + scroll: 15, + ) + : search( + label: 'Select a Discord event to listen for', + placeholder: 'Search for an event...', + options: fn (string $value) => strlen($value) > 0 + ? $events->pluck('name', 'key')->filter(fn ($name) => Str::contains(strtolower($name), strtolower($value)))->all() + : $events->pluck('name', 'key')->all(), + scroll: 15, + ); + + $event = $events->filter(fn ($e) => $e['name'] === $event)->keys()->first() ?? $event; + } if (! $events->has($event)) { $this->components->error("The {$event} event does not exist.");