Skip to content

Commit 98fb5a7

Browse files
committed
Add examples/demo_endpoint.exs
1 parent ca0e420 commit 98fb5a7

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ See more examples below:
6666
* [`examples/demo_plug.exs`]
6767
* [`examples/demo_router.exs`]
6868
* [`examples/demo_hooks.exs`]
69+
* [`examples/demo_endpoint.exs`]
6970

7071
## License
7172

@@ -88,3 +89,4 @@ limitations under the License.
8889
[`examples/demo_plug.exs`]: examples/demo_plug.exs
8990
[`examples/demo_router.exs`]: examples/demo_router.exs
9091
[`examples/demo_hooks.exs`]: examples/demo_hooks.exs
92+
[`examples/demo_endpoint.exs`]: examples/demo_endpoint.exs

examples/demo_endpoint.exs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env elixir
2+
Mix.install([
3+
{:phoenix_playground, "~> 0.1.6"}
4+
])
5+
6+
defmodule DemoLive do
7+
use Phoenix.LiveView
8+
9+
def mount(_params, _session, socket) do
10+
{:ok, assign(socket, count: 0)}
11+
end
12+
13+
def render(assigns) do
14+
~H"""
15+
<script>
16+
let liveSocket = new window.LiveView.LiveSocket("/live", window.Phoenix.Socket, {})
17+
liveSocket.connect()
18+
</script>
19+
20+
<span>Count: <%= @count %></span>
21+
<button phx-click="inc">+</button>
22+
<button phx-click="dec">-</button>
23+
"""
24+
end
25+
26+
def handle_event("inc", _params, socket) do
27+
{:noreply, update(socket, :count, &(&1 + 1))}
28+
end
29+
30+
def handle_event("dec", _params, socket) do
31+
{:noreply, update(socket, :count, &(&1 - 1))}
32+
end
33+
end
34+
35+
defmodule Demo.Router do
36+
use Phoenix.Router
37+
import Phoenix.LiveView.Router
38+
39+
pipeline :browser do
40+
plug :put_root_layout, html: {PhoenixPlayground.Layout, :root}
41+
end
42+
43+
scope "/" do
44+
pipe_through :browser
45+
live "/", DemoLive
46+
end
47+
end
48+
49+
defmodule Demo.Endpoint do
50+
use Phoenix.Endpoint, otp_app: :phoenix_playground
51+
plug Plug.Logger
52+
socket "/live", Phoenix.LiveView.Socket
53+
plug Plug.Static, from: {:phoenix, "priv/static"}, at: "/assets/phoenix"
54+
plug Plug.Static, from: {:phoenix_live_view, "priv/static"}, at: "/assets/phoenix_live_view"
55+
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
56+
plug Phoenix.LiveReloader
57+
plug Phoenix.CodeReloader, reloader: &PhoenixPlayground.CodeReloader.reload/2
58+
plug Demo.Router
59+
end
60+
61+
PhoenixPlayground.start(endpoint: Demo.Endpoint)

0 commit comments

Comments
 (0)