satoved / laravel-livewire-steps
Lightweight Livewire component that allow you to easily build a wizard or multi-step forms.
Fund package maintenance!
satoved
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- livewire/livewire: ^3.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
This package is auto-updated.
Last update: 2024-10-31 11:58:20 UTC
README
Lightweight Livewire component that allow you to easily build a wizard (multi-step form).
This package utilizes Livewire 3 forms objects as steps and needs only one Livewire component as a Wizard.
Here's what a wizard could look like.
In this repo on GitHub, you'll find a demo Laravel application that uses the laravel-livewire-steps package to create a simple email subscription flow.
Installation
You can install the package via composer:
composer require satoved/laravel-livewire-steps
Usage
Create a Livewire component that extends WizardComponent. List all steps in the correct order as public properties.
use Satoved\LivewireSteps\Livewire\WizardComponent; class EmailSubscriptionWizard extends WizardComponent { public NameStep $nameStep; public EmailStep $emailStep; public function render() { return <<<'BLADE' <form wire:submit="nextStep"> {{ $this->renderStep() }} <button>Next</button> </form> BLADE; } }
Each step is a Livewire form object that must extend StepForm.
use Satoved\LivewireSteps\Livewire\Forms\StepForm; class EmailStep extends StepForm { #[Validate(['required', 'email'])] public $email; public function render() { return '<input type="email" wire:model="emailStep.email">'; } }
Testing
composer test
Alternatives
This package was heavily inspired by spatie/laravel-livewire-wizard. It's a great package, but each step has to be a Livewire component, and you get two requests for a parent component and the step component each time. Which is in overkill for my use cases.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.