mirror of
https://github.com/ryannhg/elm-spa.git
synced 2024-11-22 09:44:55 +03:00
works, but maybe too clunky
This commit is contained in:
parent
d72b74d20e
commit
105d3bcc43
@ -58,7 +58,7 @@ notFound =
|
||||
}
|
||||
|
||||
|
||||
users_slug : Application.Recipe Users_Slug.Model Users_Slug.Msg Model Msg
|
||||
users_slug : Application.RecipeWithParams Users_Slug.Model Users_Slug.Msg Model Msg String
|
||||
users_slug =
|
||||
Users_Slug.page
|
||||
{ toModel = Users_SlugModel
|
||||
@ -81,8 +81,8 @@ init route =
|
||||
Route.NotFound ->
|
||||
notFound.init
|
||||
|
||||
Route.Users_Slug _ ->
|
||||
users_slug.init
|
||||
Route.Users_Slug slug ->
|
||||
users_slug.init slug
|
||||
|
||||
|
||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
||||
|
@ -4,17 +4,18 @@ import Application
|
||||
import Html exposing (..)
|
||||
|
||||
|
||||
type Model
|
||||
= Model
|
||||
type alias Model =
|
||||
{ slug : String
|
||||
}
|
||||
|
||||
|
||||
type Msg
|
||||
= Msg
|
||||
|
||||
|
||||
page : Application.Page Model Msg a b
|
||||
page : Application.PageWithParams Model Msg a b String
|
||||
page =
|
||||
Application.element
|
||||
Application.elementWithParams
|
||||
{ init = init
|
||||
, update = update
|
||||
, view = view
|
||||
@ -22,9 +23,9 @@ page =
|
||||
}
|
||||
|
||||
|
||||
init : ( Model, Cmd Msg )
|
||||
init =
|
||||
( Model, Cmd.none )
|
||||
init : String -> ( Model, Cmd Msg )
|
||||
init slug =
|
||||
( Model slug, Cmd.none )
|
||||
|
||||
|
||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
||||
@ -41,4 +42,4 @@ subscriptions model =
|
||||
|
||||
view : Model -> Html Msg
|
||||
view model =
|
||||
h1 [] [ text "New Element" ]
|
||||
h1 [] [ text ("New Element for: " ++ model.slug) ]
|
||||
|
@ -1,16 +1,21 @@
|
||||
module Application exposing
|
||||
( Application, create
|
||||
, Page, Recipe, Bundle, keep
|
||||
, Page, Recipe
|
||||
, PageWithParams, RecipeWithParams
|
||||
, Bundle, keep
|
||||
, Static, static
|
||||
, Sandbox, sandbox
|
||||
, Element, element
|
||||
, ElementWithParams, elementWithParams
|
||||
)
|
||||
|
||||
{-|
|
||||
|
||||
@docs Application, create
|
||||
|
||||
@docs Page, Recipe, Bundle, keep
|
||||
@docs Page, Recipe
|
||||
@docs PageWithParams, RecipeWithParams
|
||||
@docs Bundle, keep
|
||||
|
||||
@docs Static, static
|
||||
|
||||
@ -18,6 +23,8 @@ module Application exposing
|
||||
|
||||
@docs Element, element
|
||||
|
||||
@docs ElementWithParams, elementWithParams
|
||||
|
||||
-}
|
||||
|
||||
import Browser
|
||||
@ -196,6 +203,14 @@ type alias Recipe pageModel pageMsg model msg =
|
||||
Page.Recipe pageModel pageMsg model msg
|
||||
|
||||
|
||||
type alias PageWithParams pageModel pageMsg model msg arg =
|
||||
Page.PageWithParams pageModel pageMsg model msg arg
|
||||
|
||||
|
||||
type alias RecipeWithParams pageModel pageMsg model msg arg =
|
||||
Page.RecipeWithParams pageModel pageMsg model msg arg
|
||||
|
||||
|
||||
type alias Bundle msg =
|
||||
Page.Bundle msg
|
||||
|
||||
@ -236,3 +251,14 @@ element :
|
||||
-> Page pageModel pageMsg model msg
|
||||
element =
|
||||
Page.element
|
||||
|
||||
|
||||
type alias ElementWithParams pageModel pageMsg arg =
|
||||
Page.ElementWithParams pageModel pageMsg arg
|
||||
|
||||
|
||||
elementWithParams :
|
||||
ElementWithParams pageModel pageMsg arg
|
||||
-> PageWithParams pageModel pageMsg model msg arg
|
||||
elementWithParams =
|
||||
Page.elementWithParams
|
||||
|
@ -1,13 +1,20 @@
|
||||
module Internals.Page exposing
|
||||
( Page, Recipe, Bundle
|
||||
( Page, Recipe
|
||||
, PageWithParams, RecipeWithParams
|
||||
, Bundle
|
||||
, Static, static
|
||||
, Sandbox, sandbox
|
||||
, Element, element
|
||||
, ElementWithParams, elementWithParams
|
||||
)
|
||||
|
||||
{-|
|
||||
|
||||
@docs Page, Recipe, Bundle
|
||||
@docs Page, Recipe
|
||||
|
||||
@docs PageWithParams, RecipeWithParams
|
||||
|
||||
@docs Bundle
|
||||
|
||||
@docs Static, static
|
||||
|
||||
@ -15,6 +22,8 @@ module Internals.Page exposing
|
||||
|
||||
@docs Element, element
|
||||
|
||||
@docs ElementWithParams, elementWithParams
|
||||
|
||||
-}
|
||||
|
||||
import Html exposing (Html)
|
||||
@ -93,7 +102,7 @@ sandbox page { toModel, toMsg } =
|
||||
|
||||
|
||||
|
||||
-- SANDBOX
|
||||
-- ELEMENT
|
||||
|
||||
|
||||
type alias Element pageModel pageMsg =
|
||||
@ -108,7 +117,52 @@ element :
|
||||
Element pageModel pageMsg
|
||||
-> Page pageModel pageMsg model msg
|
||||
element page { toModel, toMsg } =
|
||||
{ init = page.init |> Tuple.mapBoth toModel (Cmd.map toMsg)
|
||||
{ init =
|
||||
page.init |> Tuple.mapBoth toModel (Cmd.map toMsg)
|
||||
, update =
|
||||
\msg model ->
|
||||
page.update msg model
|
||||
|> Tuple.mapBoth toModel (Cmd.map toMsg)
|
||||
, bundle =
|
||||
\model ->
|
||||
{ view = page.view model |> Html.map toMsg
|
||||
, subscriptions = Sub.none
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- ELEMENT WITH PARAMS
|
||||
|
||||
|
||||
type alias ElementWithParams pageModel pageMsg arg =
|
||||
{ init : arg -> ( pageModel, Cmd pageMsg )
|
||||
, update : pageMsg -> pageModel -> ( pageModel, Cmd pageMsg )
|
||||
, view : pageModel -> Html pageMsg
|
||||
, subscriptions : pageModel -> Sub pageMsg
|
||||
}
|
||||
|
||||
|
||||
type alias RecipeWithParams pageModel pageMsg model msg arg =
|
||||
{ init : arg -> ( model, Cmd msg )
|
||||
, update : pageMsg -> pageModel -> ( model, Cmd msg )
|
||||
, bundle : pageModel -> Bundle msg
|
||||
}
|
||||
|
||||
|
||||
type alias PageWithParams pageModel pageMsg model msg arg =
|
||||
{ toModel : pageModel -> model
|
||||
, toMsg : pageMsg -> msg
|
||||
}
|
||||
-> RecipeWithParams pageModel pageMsg model msg arg
|
||||
|
||||
|
||||
elementWithParams :
|
||||
ElementWithParams pageModel pageMsg arg
|
||||
-> PageWithParams pageModel pageMsg model msg arg
|
||||
elementWithParams page { toModel, toMsg } =
|
||||
{ init =
|
||||
page.init >> Tuple.mapBoth toModel (Cmd.map toMsg)
|
||||
, update =
|
||||
\msg model ->
|
||||
page.update msg model
|
||||
|
Loading…
Reference in New Issue
Block a user