laravelcm/livewire-slide-overs
Livewire slide-over drawer panel for Laravel. Open slide-overs via events, stack multiple child components, and preserve state—modal-like behavior inspired by wire-elements/modal, but as a drawer. Supports PHP 8.3+, Laravel 11/12, Livewire 3.4/4.
instant open, dynamic resize, native dialog mode) align with modern UI expectations and reduce friction in complex workflows (e.g., real-time form validation, responsive layouts). The native dialog mode leverages browser-native <dialog> elements, improving accessibility and reducing custom CSS/JS overhead.Dynamic resize suggests better handling of nested content, addressing prior concerns about state synchronization in deeply nested components. Instant open may optimize performance for rapid interactions (e.g., tooltips, quick actions).native dialog mode introduces a new paradigm (modal-like behavior) alongside traditional slide-overs, expanding use cases without forcing a single pattern.dialog-mode, resize). No breaking changes to existing implementations.Native dialog mode inherently supports ARIA attributes and keyboard navigation (Escape, Tab), mitigating prior risks. However, traditional slide-overs may still require manual ARIA labels.Instant open could reduce perceived latency but may introduce edge cases (e.g., race conditions with dynamic content loading). Dynamic resize might require testing for layout shifts or reflow impacts.Native dialog mode relies on browser support for <dialog> (IE11 unsupported). Audit target browsers to ensure compatibility.Dynamic resize could introduce subtle bugs if child components assume fixed dimensions. Test with responsive grids or tables.instant open conflicts with Livewire’s reactivity).Native dialog mode may impose stricter styling constraints than traditional slide-overs, requiring CSS adjustments.instant open, dialog mode, resize) are critical for the team’s roadmap? Are there existing solutions (e.g., Alpine.js, custom JS) already addressing these?native dialog mode replace all slide-overs, or will both patterns coexist? How will keyboard navigation be tested across both modes?instant open introduce memory leaks or event listener bloat with rapid open/close cycles? Benchmark against traditional implementations.dialog-mode prop later), or are breaking changes likely?native dialog mode? Are polyfills needed for legacy support?Native dialog mode aligns with modern web standards (e.g., CSS dialog element), reducing reliance on custom JS/CSS.instant open can be adopted incrementally without rewriting existing components.instant open on a high-interaction component (e.g., search dropdown) to validate performance and UX.native dialog mode to assess accessibility and styling compatibility.instant open to slide-overs with rapid interactions (e.g., tooltips, filters).native dialog mode for accessibility gains.dynamic resize for components with variable content (e.g., text editors, tables).native dialog mode causes styling issues, revert to custom CSS or use slide-over mode with explicit ARIA attributes.instant open performance issues, fall back to traditional open/close handlers.dynamic resize (e.g., $this->dispatchBrowserEvent).Native dialog mode may override default slide-over styles. Use ::backdrop and ::modal pseudo-elements for scoped styling.<dialog> support (e.g., via @supports) and provide a fallback for unsupported browsers.native dialog mode (may require PHP 8.3+).<dialog> support.instant-open prop to existing slide-overs: <x-slide-over-panel instant-open>.native dialog mode: <x-slide-over-panel dialog-mode>.dynamic resize for components with variable height (e.g., add resize prop and test with wire:model).native dialog styling via dialog-class prop or CSS variables.wire:key to force remounting if dynamic resize causes layout shifts.instant open with debounced events (e.g., wire:debounce.500ms) to avoid overloading.$dispatchBrowserEvent or component lifecycle hooks that may affect dynamic resize or instant open.native dialog focus trapping). Plan for internal patches if upstream support is slow.instant-open, dialog-mode, resize).native dialog mode.dynamic resize with nested forms/tables.wire:log to inspect dynamic resize events and state changes.native dialog issues, check browser dev tools for ARIA attribute errors.native dialog mode as the preferred choice for modal-like behavior due to accessibility benefits.instant open limitations (e.g., avoid with heavy computations).native dialog supports:
Escape to close.Tab focus trapping.slide-over mode for missing ARIA labels (e.g., role="region").dynamic resize with 10+ concurrent slide-overs to check for memory leaks or rendering stutters.wire:ignore for static content within resizable drawers to reduce reactivity overhead.Instant open may reduce latency but increase event listener count. Profile with Chrome DevTools’ Performance tab.Native dialog avoids custom JS/CSS, but may add overhead for unsupported browsers (polyfills).dynamic resize, cache computed dimensions (e.g., max-height) if content is static.| Scenario | Impact | Mitigation |
|---|---|---|
Native dialog unsupported |
Fallback to custom modal | Feature detection + polyfill or graceful degradation. |
Dynamic resize conflicts |
Layout shifts or broken child components | Use wire:key or CSS min-height fallbacks. |
Instant open race conditions |
State corruption or UI glitches | Debounce events or use updated() hooks. |
CSS conflicts in dialog mode |
Styling breaks | Scope styles with ::backdrop or shadow DOM. |
High latency with instant open |
Poor UX for slow networks | Add loading skeletons or lazy-load content. |
instant-open, dialog-mode, resize) and their use cases.native dialog vs. slide-overs.dynamic resize.native dialog mode.dynamic resize with forms/tables, including wire:model integration.How can I help you explore Laravel packages today?