Packages
moon
2.78.0
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon_web/examples/design/drawer_example/positions.ex
defmodule MoonWeb.Examples.Design.DrawerExample.Positions do
@moduledoc false
use Moon.StatefulComponent
use MoonWeb, :example
alias Moon.Design.Drawer
alias Moon.Design.Button
def render(assigns) do
~F"""
<div class="flex flex-wrap items-center justify-around gap-2 w-full">
<Button variant="outline" on_click="open_start_drawer" id="start">
Show Drawer at start of screen
</Button>
<Drawer id="start_drawer">
<Drawer.Panel position="start">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen start aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
<Button variant="outline" on_click="open_top_drawer" id="top">
Show Drawer at top of screen
</Button>
<Drawer id="top_drawer">
<Drawer.Panel position="top">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen top aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
<Button variant="outline" on_click="open_end_drawer" id="end">
Show Drawer at end of screen
</Button>
<Drawer id="end_drawer">
<Drawer.Panel position="end">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen end aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
<Button variant="outline" on_click="open_bottom_drawer" id="bottom">
Show Drawer at bottom of screen
</Button>
<Drawer id="bottom_drawer">
<Drawer.Panel position="bottom">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen bottom aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
</div>
"""
end
def handle_event("open_start_drawer", _, socket) do
Drawer.open("start_drawer")
{:noreply, socket}
end
def handle_event("open_top_drawer", _, socket) do
Drawer.open("top_drawer")
{:noreply, socket}
end
def handle_event("open_bottom_drawer", _, socket) do
Drawer.open("bottom_drawer")
{:noreply, socket}
end
def handle_event("open_end_drawer", _, socket) do
Drawer.open("end_drawer")
{:noreply, socket}
end
def code() do
"""
alias Moon.Design.Drawer
alias Moon.Design.Button
def render(assigns) do
~F\"""
<div class="flex flex-wrap items-center justify-around gap-2 w-full">
<Button variant="outline" on_click="open_start_drawer">
Show Drawer at start of screen
</Button>
<Drawer id="start_drawer">
<Drawer.Panel position="start">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen start aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
<Button variant="outline" on_click="open_top_drawer">
Show Drawer at top of screen
</Button>
<Drawer id="top_drawer">
<Drawer.Panel position="top">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen top aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
<Button variant="outline" on_click="open_end_drawer">
Show Drawer at end of screen
</Button>
<Drawer id="end_drawer">
<Drawer.Panel position="end">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen end aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
<Button variant="outline" on_click="open_bottom_drawer">
Show Drawer at bottom of screen
</Button>
<Drawer id="bottom_drawer">
<Drawer.Panel position="bottom">
<div class="flex justify-between items-center p-3 border-b border-trunks">
<p>Screen bottom aligned Drawer</p>
</div>
<div class="p-3">Drawer content</div>
</Drawer.Panel>
</Drawer>
</div>
\"""
end
def handle_event("open_start_drawer", _, socket) do
Drawer.open("start_drawer")
{:noreply, socket}
end
def handle_event("open_top_drawer", _, socket) do
Drawer.open("top_drawer")
{:noreply, socket}
end
def handle_event("open_bottom_drawer", _, socket) do
Drawer.open("bottom_drawer")
{:noreply, socket}
end
def handle_event("open_end_drawer", _, socket) do
Drawer.open("end_drawer")
{:noreply, socket}
end
"""
end
end