A Star rating field to use in your Laravel Nova apps.
Uses vue-star-rating.
You can install the package in to a Laravel app that uses Nova via composer:
composer require nikaia/nova-rating-field
Next you can use the Nikaia\Rating\Rating
field in your Nova resource.
public function fields(Request $request)
{
return [
// ...
Rating::make('Rating')->min(0)->max(5)->increment(0.5)->hideFromIndex(),
// Defining a custom style for the index page.
Rating::make('Rating')->min(0)->max(5)->increment(0.5)->hideRating()
->withStyles([
'star-size' => 15,
'rounded-corners' => true,
])->onlyOnIndex()->sortable(),
// ...
];
}
public function fields(Request $request)
{
Rating::make('Rating')
// Miniumum rating (default: 0)
->min(0)
// Maximum rating (default: 5)
// This is how the component knows how many stars it should display.
->max(5)
// Incremet (default: 1)
// Can be float. The underlying eloquent colum must be defined as float in that case.
// ie. 0.5 for half stars or 0.01 for fluid stars.
->increment(0.5)
// Show rating value next to the stars
->hideRating()
}
You can style the component using withStyles
method. Options are passed to the the underlying vue component style props.
Default values are :
public function fields(Request $request)
{
Rating::make('Rating')
->withStyles([
'star-size' => 30,
'active-color' => 'var(--primary)', // Primary nova theme color.
'inactive-color' => '#d8d8d8',
'border-color' => 'var(--60)',
'border-width' => 0,
'padding' => 10,
'rounded-corners' => false,
'inline' => false,
'glow' => 0,
'glow-color' => '#fff',
'text-class' => 'inline-block text-80 h-9 pt-2',
]);
}