diff --git a/packages/forms/docs/12-repeater.md b/packages/forms/docs/12-repeater.md index f3e980de2d..934e6debcd 100644 --- a/packages/forms/docs/12-repeater.md +++ b/packages/forms/docs/12-repeater.md @@ -508,6 +508,20 @@ Repeater::make('members') +## Numbering repeater items + +Unlike Builders, items in the repeater don't have a number next to their label by default. You may enable this using the `itemNumbers(true)` method: + +```php +use Filament\Forms\Components\Repeater; + +Repeater::make('members') + ->schema([ + // ... + ]) + ->itemNumbers(true) +``` + ## Simple repeaters with one field You can use the `simple()` method to create a repeater with a single field, using a minimal design diff --git a/packages/forms/resources/views/components/repeater/index.blade.php b/packages/forms/resources/views/components/repeater/index.blade.php index 8f6456abce..e0f27b28e9 100644 --- a/packages/forms/resources/views/components/repeater/index.blade.php +++ b/packages/forms/resources/views/components/repeater/index.blade.php @@ -19,6 +19,7 @@ $reorderAction = $getAction($getReorderActionName()); $extraItemActions = $getExtraItemActions(); + $hasItemNumbers = $hasItemNumbers(); $isAddable = $isAddable(); $isCloneable = $isCloneable(); $isCollapsible = $isCollapsible(); @@ -154,6 +155,10 @@ ]) > {{ $itemLabel }} + + @if ($hasItemNumbers) + {{ $loop->iteration }} + @endif @endif diff --git a/packages/forms/src/Components/Repeater.php b/packages/forms/src/Components/Repeater.php index 26c182ec01..aa3adffbce 100644 --- a/packages/forms/src/Components/Repeater.php +++ b/packages/forms/src/Components/Repeater.php @@ -61,6 +61,8 @@ class Repeater extends Field implements CanConcealComponents, HasExtraItemAction protected string | Closure | null $itemLabel = null; + protected bool | Closure $hasItemNumbers = false; + protected Field | Closure | null $simpleField = null; protected Alignment | string | Closure | null $addActionAlignment = null; @@ -1036,6 +1038,13 @@ class Repeater extends Field implements CanConcealComponents, HasExtraItemAction return $this; } + public function itemNumbers(bool | Closure $condition = true): static + { + $this->hasItemNumbers = $condition; + + return $this; + } + public function fillFromRelationship(): void { $this->state( @@ -1173,6 +1182,11 @@ class Repeater extends Field implements CanConcealComponents, HasExtraItemAction return $this->itemLabel !== null; } + public function hasItemNumbers(): bool + { + return (bool) $this->evaluate($this->hasItemNumbers); + } + public function simple(Field | Closure | null $field): static { $this->simpleField = $field;