|
| 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