diff --git a/packages/forms/docs/03-fields.md b/packages/forms/docs/03-fields.md index 5ba8e28cf8..87c6c3e712 100644 --- a/packages/forms/docs/03-fields.md +++ b/packages/forms/docs/03-fields.md @@ -659,6 +659,15 @@ Radio::make('feedback') +You may wish to display the options `inline()` with the label: + +```php +Radio::make('feedback') + ->label('Do you like this post?') + ->boolean() + ->inline() +``` + ## Date-time picker The date-time picker provides an interactive interface for selecting a date and a time. diff --git a/packages/forms/resources/views/components/field-wrapper/index.blade.php b/packages/forms/resources/views/components/field-wrapper/index.blade.php index 73e3784cbd..af390d703c 100644 --- a/packages/forms/resources/views/components/field-wrapper/index.blade.php +++ b/packages/forms/resources/views/components/field-wrapper/index.blade.php @@ -3,6 +3,7 @@ 'label' => null, 'labelPrefix' => null, 'labelSrOnly' => false, + 'labelSuffix' => null, 'helperText' => null, 'hint' => null, 'required' => false, @@ -25,6 +26,7 @@ :error="$errors->has($statePath)" :prefix="$labelPrefix" :required="$required" + :suffix="$labelSuffix" > {{ $label }} diff --git a/packages/forms/resources/views/components/field-wrapper/label.blade.php b/packages/forms/resources/views/components/field-wrapper/label.blade.php index 1fd02aa88c..f52fc183f9 100644 --- a/packages/forms/resources/views/components/field-wrapper/label.blade.php +++ b/packages/forms/resources/views/components/field-wrapper/label.blade.php @@ -2,6 +2,7 @@ 'error' => false, 'prefix' => null, 'required' => false, + 'suffix' => null, ]) diff --git a/packages/forms/resources/views/components/radio.blade.php b/packages/forms/resources/views/components/radio.blade.php index d9112ff065..9e6ac3d65a 100644 --- a/packages/forms/resources/views/components/radio.blade.php +++ b/packages/forms/resources/views/components/radio.blade.php @@ -7,41 +7,54 @@ :required="$isRequired()" :state-path="$getStatePath()" > -
merge($getExtraAttributes())->class(['space-y-2']) }}> - @foreach ($getOptions() as $value => $label) -
-
- class([ - 'focus:ring-primary-500 h-4 w-4 text-primary-600', - 'border-gray-300' => ! $errors->has($getStatePath()), - 'border-danger-600 ring-danger-600' => $errors->has($getStatePath()), - ]) }} - {!! $isOptionDisabled($value, $label) ? 'disabled' : null !!} - /> -
- -
-
- @endforeach -
+ @if ($isInline()) + + @endif diff --git a/packages/forms/src/Components/Radio.php b/packages/forms/src/Components/Radio.php index b6f2c8c428..91de110901 100644 --- a/packages/forms/src/Components/Radio.php +++ b/packages/forms/src/Components/Radio.php @@ -11,6 +11,8 @@ class Radio extends Field protected string $view = 'forms::components.radio'; + protected bool | Closure $isInline = false; + protected array | Arrayable | Closure $options = []; protected array | Arrayable | Closure $descriptions = []; @@ -39,6 +41,13 @@ class Radio extends Field return $this; } + public function inline(bool | Closure $condition = true): static + { + $this->isInline = $condition; + + return $this; + } + public function options(array | Arrayable | Closure $options): static { $this->options = $options; @@ -85,6 +94,11 @@ class Radio extends Field return $options; } + public function isInline(): bool + { + return (bool) $this->evaluate($this->isInline); + } + public function isOptionDisabled($value, string $label): bool { if ($this->isOptionDisabled === null) {