https://github.com/simplesquid/nova-enum-field
An enum field and filters for Laravel Nova.
https://github.com/simplesquid/nova-enum-field
enum enum-field laravel laravel-enum laravel-nova laravel-nova-field nova
Last synced: 5 days ago
JSON representation
An enum field and filters for Laravel Nova.
- Host: GitHub
- URL: https://github.com/simplesquid/nova-enum-field
- Owner: simplesquid
- License: mit
- Created: 2019-09-07T20:19:24.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2025-03-27T17:43:21.000Z (10 months ago)
- Last Synced: 2026-01-14T20:27:52.273Z (12 days ago)
- Topics: enum, enum-field, laravel, laravel-enum, laravel-nova, laravel-nova-field, nova
- Language: PHP
- Homepage:
- Size: 287 KB
- Stars: 52
- Watchers: 3
- Forks: 28
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# An enum field for Laravel Nova
[](https://packagist.org/packages/simplesquid/nova-enum-field)
[](https://github.com/simplesquid/nova-enum-field/actions/workflows/run-tests.yml)
[](https://github.com/simplesquid/nova-enum-field/actions/workflows/code-style.yml)
[](LICENSE.md)
[](https://packagist.org/packages/simplesquid/nova-enum-field)
Laravel Nova field to add enums to resources. This field uses the [BenSampo/laravel-enum](https://github.com/BenSampo/laravel-enum) package, so make sure to check out the installation instructions there first.

## Installation
You can install this package in a Laravel app that uses [Nova](https://nova.laravel.com) via composer:
```bash
composer require simplesquid/nova-enum-field
```
## Setup
It is strongly recommended that you use Attribute Casting in your models. From the docs at [BenSampo/laravel-enum](https://github.com/BenSampo/laravel-enum#attribute-casting), this can be done like this:
```php
use App\Enums\UserType;
use Illuminate\Database\Eloquent\Model;
class Example extends Model
{
protected $casts = [
'user_type' => UserType::class,
];
}
```
## Usage
You can use the `Enum` field in your Nova resource like this:
```php
namespace App\Nova;
use App\Enums\UserType;
use SimpleSquid\Nova\Fields\Enum\Enum;
class Example extends Resource
{
// ...
public function fields(Request $request)
{
return [
// ...
Enum::make('User Type')->attach(UserType::class),
// ...
];
}
}
```
### Flagged Enums
You can use the `FlaggedEnum` field in your Nova resource like this (see [Flagged/Bitwise Enum](https://github.com/BenSampo/laravel-enum#flaggedbitwise-enum) setup):
```php
namespace App\Nova;
use App\Enums\UserPermissions;
use SimpleSquid\Nova\Fields\Enum\FlaggedEnum;
class Example extends Resource
{
// ...
public function fields(Request $request)
{
return [
// ...
FlaggedEnum::make('User Permissions')->attach(UserPermissions::class),
// ...
];
}
}
```
### Filters
If you would like to use the provided Nova Select filter (which is compatible with both the `Enum` and `FlaggedEnum` fields), you can include it like this:
```php
namespace App\Nova;
use App\Enums\UserPermissions;
use App\Enums\UserType;
use SimpleSquid\Nova\Fields\Enum\EnumFilter;
class Example extends Resource
{
// ...
public function filters(Request $request)
{
return [
new EnumFilter('user_type', UserType::class),
new EnumFilter('user_permissions', UserPermissions::class),
// With optional filter name:
(new EnumFilter('user_type', UserType::class))
->name('Type of user'),
// With optional default value:
(new EnumFilter('user_type', UserType::class))
->default(UserType::Administrator),
];
}
}
```
Alternatively, you may wish to use the provided Nova Boolean filter (which is also compatible with both the `Enum` and `FlaggedEnum` fields):
```php
namespace App\Nova;
use App\Enums\UserPermissions;
use App\Enums\UserType;
use SimpleSquid\Nova\Fields\Enum\EnumBooleanFilter;
class Example extends Resource
{
// ...
public function filters(Request $request)
{
return [
new EnumBooleanFilter('user_type', UserType::class),
new EnumBooleanFilter('user_permissions', UserPermissions::class),
// With optional filter name:
(new EnumBooleanFilter('user_type', UserType::class))
->name('Type of user'),
// With optional default values:
(new EnumBooleanFilter('user_type', UserType::class))
->default([
UserType::Administrator,
UserType::Moderator,
]),
// When filtering a FlaggedEnum, it will default to filtering
// by ANY flags, however you may wish to filter by ALL flags:
(new EnumBooleanFilter('user_permissions', UserPermissions::class))
->filterAllFlags(),
];
}
}
```
## Testing
``` bash
composer test
```
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [Matthew Poulter](https://github.com/mdpoulter)
- [Ben Sampson](https://github.com/BenSampo)
- [atymic](https://github.com/atymic)
- [Robin D'Arcy](https://github.com/rdarcy1)
- [Antoni Siek](https://github.com/ImJustToNy)
- [All Contributors](../../contributors)
Package skeleton based on [spatie/skeleton-php](https://github.com/spatie/skeleton-php).
## About us
SimpleSquid is a small web development and design company based in Valkenburg, Netherlands.
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.