Add Elm boilerplate to project
Create a top-level client directory to store my Elm boilerplate.
This commit is contained in:
parent
cf6c8799ab
commit
289cae2528
11 changed files with 180 additions and 0 deletions
13
client/src/Landing.elm
Normal file
13
client/src/Landing.elm
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
module Landing exposing (render)
|
||||
|
||||
import Html exposing (..)
|
||||
import Html.Attributes exposing (..)
|
||||
import Html.Events exposing (..)
|
||||
import State
|
||||
|
||||
|
||||
render : State.Model -> Html State.Msg
|
||||
render model =
|
||||
div [ class "pt-10 pb-20 px-10" ]
|
||||
[ p [] [ text "Welcome to the landing page!" ]
|
||||
]
|
||||
13
client/src/Login.elm
Normal file
13
client/src/Login.elm
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
module Login exposing (render)
|
||||
|
||||
import Html exposing (..)
|
||||
import Html.Attributes exposing (..)
|
||||
import Html.Events exposing (..)
|
||||
import State
|
||||
|
||||
|
||||
render : State.Model -> Html State.Msg
|
||||
render model =
|
||||
div [ class "pt-10 pb-20 px-10" ]
|
||||
[ p [] [ text "Please authenticate" ]
|
||||
]
|
||||
31
client/src/Main.elm
Normal file
31
client/src/Main.elm
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
module Main exposing (main)
|
||||
|
||||
import Browser
|
||||
import Html exposing (..)
|
||||
import Landing
|
||||
import Login
|
||||
import State
|
||||
|
||||
|
||||
subscriptions : State.Model -> Sub State.Msg
|
||||
subscriptions model =
|
||||
Sub.none
|
||||
|
||||
|
||||
view : State.Model -> Html State.Msg
|
||||
view model =
|
||||
case model.view of
|
||||
State.Landing ->
|
||||
Landing.render model
|
||||
|
||||
State.Login ->
|
||||
Login.render model
|
||||
|
||||
|
||||
main =
|
||||
Browser.element
|
||||
{ init = \() -> ( State.init, Cmd.none )
|
||||
, subscriptions = subscriptions
|
||||
, update = State.update
|
||||
, view = view
|
||||
}
|
||||
43
client/src/State.elm
Normal file
43
client/src/State.elm
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
module State exposing (..)
|
||||
|
||||
|
||||
type Msg
|
||||
= DoNothing
|
||||
| SetView View
|
||||
|
||||
|
||||
type View
|
||||
= Landing
|
||||
| Login
|
||||
|
||||
|
||||
type alias Model =
|
||||
{ isLoading : Bool
|
||||
, view : View
|
||||
}
|
||||
|
||||
|
||||
{-| The initial state for the application.
|
||||
-}
|
||||
init : Model
|
||||
init =
|
||||
{ isLoading = False
|
||||
, view = Landing
|
||||
}
|
||||
|
||||
|
||||
{-| Now that we have state, we need a function to change the state.
|
||||
-}
|
||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
||||
update msg model =
|
||||
case msg of
|
||||
DoNothing ->
|
||||
( model, Cmd.none )
|
||||
|
||||
SetView x ->
|
||||
( { model
|
||||
| view = x
|
||||
, isLoading = True
|
||||
}
|
||||
, Cmd.none
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue