Spark DSL extension for flyover (slideover) behavior.
Adds flyover-specific state and actions to a Lavash Component:
- Open/close state management (flyover owns its state)
- Escape key handling
- Backdrop click handling
- Slide direction (left, right, top, bottom)
- Auto-injected :close and :noop actions
Usage
defmodule MyApp.NavFlyover do
use Lavash.Component, extensions: [Lavash.Overlay.Flyover.Dsl]
flyover do
open_field :open
slide_from :left
close_on_escape true
close_on_backdrop true
end
render fn assigns ->
~H"..."
end
endParent opens the flyover by binding the open state:
state :nav_open, :any, from: :ephemeral, default: nil
action :open_nav do
set :nav_open, true
end
<.lavash_component module={MyApp.NavFlyover} id="nav-flyover"
open={@nav_open} bind={[open: :nav_open]} />
<button phx-click="open_nav">Open</button>The plugin will:
- Inject the open_field as ephemeral state (if not already defined)
- Inject :close action that sets open_field to nil
- Inject :noop action for backdrop click handling
- Generate render/1 with flyover chrome wrapping your content