Installation:
composer require aristridely/slideover
Add the Livewire directive to your layout (typically app.blade.php):
@livewire('livewire-ui-slideover')
AlpineJS: Include AlpineJS via CDN (or npm) in your layout:
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
First Slideover: Generate a Livewire component:
php artisan make:livewire EditUserSlideover
Update the component to extend SlideoverComponent:
use LivewireUI\Slideover\SlideoverComponent;
class EditUserSlideover extends SlideoverComponent { ... }
Trigger the Slideover: Use Alpine to toggle visibility (e.g., via a button):
<button @click="$wire.toggleSlideover('edit-user')">Edit User</button>
Render the Slideover: In your Blade template:
@livewire('edit-user-slideover', key('edit-user'))
Component Structure:
SlideoverComponent for all slideovers.render() to define slideover content (e.g., forms, modals).$this->show = true/false to control visibility programmatically.Dynamic Keys:
key() values to each slideover instance for independent state management:
@livewire('edit-user-slideover', key('edit-user'))
@livewire('delete-user-slideover', key('delete-user'))
Alpine Integration:
<button @click="$wire.toggleSlideover('edit-user')">Open</button>
Configuration:
php artisan vendor:publish --tag=livewire-ui-slideover-views
config/livewire-ui-slideover.php.Nested Slideovers:
Conditional Rendering:
mount() to initialize data or hydrate() for dynamic updates:
public function mount() {
$this->user = User::find($this->userId);
}
Form Handling:
<form wire:submit="save">
<input wire:model="name">
<button type="submit">Save</button>
</form>
Event Listeners:
slideover-opened) via Alpine:
<div x-data @slideover-opened.window="console.log('Opened')">
@livewire('edit-user-slideover', key('edit-user'))
</div>
Custom Animations:
Server-Side Logic:
updatedProperty() or updated() hooks:
protected $listeners = ['refreshData' => 'loadData'];
Key Conflicts:
key('edit-user-123')).Alpine Scope:
$wire methods may fail if not in a valid scope.x-data or use global Alpine events.Tailwind Dependencies:
Z-Index Management:
z-index in the published Blade template or CSS.Livewire State Persistence:
Log Visibility State:
protected $listeners = ['slideover-toggled' => 'logState'];
public function logState() {
\Log::info('Slideover state:', ['show' => $this->show]);
}
Inspect Alpine Events:
slideover-opened).Check for JavaScript Errors:
Validate Key Uniqueness:
dd($this->key) in mount() to verify keys are unique.Custom Slideover Templates:
resources/views/vendor/livewire-ui-slideover/slideover.blade.php) to modify markup, animations, or accessibility attributes.Dynamic Widths:
public $width = 'md'; // Options: 'sm', 'md', 'lg', 'xl', or custom px/%
Accessibility:
aria-modal, aria-hidden).Server-Side Theming:
public $theme = 'light';
Integration with Other Packages:
livewire-ui/modal for hybrid dialogs or filament/support for Filament projects by extending the component class.How can I help you explore Laravel packages today?