Skip to main content
RatingField ← Back to Table of Contents

Summary

SaaS-style star (or custom icon) rating input with hover preview, semantic colors, sizes, disabled/required states, and fractional read-only display.
ClassBjanczak\FilamentFlexFields\Filament\Forms\Components\RatingField
State type`intnull(interactive) ·floatnull` (read-only display)
FieldTyperating
Shares rating display configuration with RatingColumn via matching fluent API. Fill calculations live in the shared CalculatesRatingFill concern.

Basic usage

use Bjanczak\FilamentFlexFields\Filament\Forms\Components\RatingField;
use Filament\Support\Icons\Heroicon;

RatingField::make('score')
    ->label('How would you rate this product?')
    ->required();

RatingField::make('score')
    ->icon(Heroicon::Heart)
    ->color('danger')
    ->stars(5);

RatingField::make('average_score')
    ->readOnly()
    ->default(3.7);

Validation

RuleWhen
nullableAlways (unless required())
numericAlways
min:0Always
max:{stars}Matches stars() / max()
integerInteractive mode only
requiredWhen ->required()

Configuration API

stars(int|Closure $count) / max(int|Closure $count)

Number of rating items. Default: 5. Minimum: 1.
RatingField::make('field_name')
    ->stars(5)
    ->max(10);

size(string|ControlSize|Closure $size)

See Control size. Default: md.
RatingField::make('field_name')
    ->size('md');

color(string|Closure|null $color)

Semantic fill color for active icons.
ValueUse case
warningDefault SaaS amber stars
primaryAccent / blue
dangerError / red hearts
successPositive / green
RatingField::make('field_name')
    ->color('primary');

icon(string|BackedEnum|Htmlable|Closure|null $icon)

Custom icon for every item. Default: Heroicon::Star. Use Heroicon::Heart or Heroicon::OutlinedHeart for heart variants.
RatingField::make('field_name')
    ->icon('heroicon-o-star');

readOnly(bool|Closure $condition = true)

Display-only mode. Supports fractional values (e.g. 3.7) with partial icon fill.
RatingField::make('field_name')
    ->readOnly(true);

showValue(bool|Closure $condition = true)

When read-only, show the numeric value (one decimal) beside the icons. Default: true.
RatingField::make('field_name')
    ->showValue(true);

extraAlpineAttributes(array|Closure $attributes)

Extra Alpine bindings on the root element. From Filament HasExtraAlpineAttributes (same trait as SwitchField).
RatingField::make('field_name')
    ->extraAlpineAttributes(['value1', 'value2']);

Inherited

disabled(), required(), label(), helperText(), default(), standard Filament field validation.
RatingField::make('field_name')
    ->required()
    ->disabled();

Public helper methods

MethodReturnsDescription
getFillPercentageForValue(float|int|null $value, int $index)floatFill ratio 0.0–1.0 for icon at 1-based $index. Used for read-only fractional display (e.g. 3.7 fills star 4 to 70%). Returns 0 when value is null.

FlexField schema config

Config keyMaps to
maxstars()
sizesize()
colorcolor()
iconicon()
show_valueshowValue()
read_onlyreadOnly()
For read-only rating display in tables, use RatingColumn instead.