mirror of
https://github.com/ryan-haskell/elm-spa.git
synced 2024-11-22 11:31:58 +03:00
provide page context with route
This commit is contained in:
parent
459eb7a75d
commit
68e87b0050
@ -1,7 +1,7 @@
|
||||
module Utils.Spa exposing
|
||||
( Bundle
|
||||
, LayoutContext
|
||||
, Init
|
||||
, LayoutContext
|
||||
, Page
|
||||
, PageContext
|
||||
, Recipe
|
||||
@ -26,11 +26,11 @@ type alias Recipe params model msg layoutModel layoutMsg appMsg =
|
||||
|
||||
|
||||
type alias Init model msg =
|
||||
App.Types.Init model msg Global.Model Global.Msg
|
||||
App.Types.Init Route model msg Global.Model Global.Msg
|
||||
|
||||
|
||||
type alias Update model msg =
|
||||
App.Types.Update model msg Global.Model Global.Msg
|
||||
App.Types.Update Route model msg Global.Model Global.Msg
|
||||
|
||||
|
||||
type alias Bundle msg appMsg =
|
||||
@ -50,7 +50,7 @@ type alias LayoutContext msg =
|
||||
|
||||
|
||||
type alias PageContext =
|
||||
App.Types.PageContext Global.Model
|
||||
App.Types.PageContext Route Global.Model
|
||||
|
||||
|
||||
layout :
|
||||
|
13
src/App.elm
13
src/App.elm
@ -241,7 +241,7 @@ init :
|
||||
{ navigate : route -> Cmd (Msg globalMsg layoutMsg) }
|
||||
-> flags
|
||||
-> ( globalModel, Cmd globalMsg, Cmd (Msg globalMsg layoutMsg) )
|
||||
, pages : route -> Page.Init layoutModel layoutMsg globalModel globalMsg
|
||||
, pages : route -> Page.Init route layoutModel layoutMsg globalModel globalMsg
|
||||
}
|
||||
}
|
||||
-> flags
|
||||
@ -263,6 +263,7 @@ init config flags url key =
|
||||
config.init.pages route
|
||||
{ global = globalModel
|
||||
, queryParameters = queryParameters url
|
||||
, route = route
|
||||
}
|
||||
in
|
||||
( { flags = flags
|
||||
@ -307,7 +308,7 @@ update :
|
||||
, routes : Routes route a
|
||||
, transitions : List ( Pattern, Transition ui_msg )
|
||||
}
|
||||
, init : route -> Page.Init layoutModel layoutMsg globalModel globalMsg
|
||||
, init : route -> Page.Init route layoutModel layoutMsg globalModel globalMsg
|
||||
, update :
|
||||
{ global :
|
||||
{ navigate : route -> Cmd (Msg globalMsg layoutMsg) }
|
||||
@ -317,7 +318,7 @@ update :
|
||||
, pages :
|
||||
layoutMsg
|
||||
-> layoutModel
|
||||
-> Page.Update layoutModel layoutMsg globalModel globalMsg
|
||||
-> Page.Update route layoutModel layoutMsg globalModel globalMsg
|
||||
}
|
||||
}
|
||||
-> Msg globalMsg layoutMsg
|
||||
@ -342,6 +343,7 @@ update config msg model =
|
||||
config.init route
|
||||
{ global = model.global
|
||||
, queryParameters = queryParameters model.url
|
||||
, route = route
|
||||
}
|
||||
)
|
||||
|> (\( pageModel, pageCmd, globalCmd ) ->
|
||||
@ -418,6 +420,7 @@ update config msg model =
|
||||
model.page
|
||||
{ global = model.global
|
||||
, queryParameters = queryParameters model.url
|
||||
, route = config.routing.fromUrl model.url
|
||||
}
|
||||
|> (\( page, pageCmd, globalCmd ) ->
|
||||
( { model | page = page }
|
||||
@ -459,9 +462,9 @@ subscriptions config model =
|
||||
, map = config.map
|
||||
, transitioningPattern = model.transitioningPattern
|
||||
, visibility = model.visibilities.page
|
||||
, route = config.fromUrl model.url
|
||||
}
|
||||
{ global = model.global
|
||||
, route = config.fromUrl model.url
|
||||
, queryParameters = queryParameters model.url
|
||||
}
|
||||
).subscriptions
|
||||
@ -494,9 +497,9 @@ view config model =
|
||||
, map = config.map
|
||||
, transitioningPattern = model.transitioningPattern
|
||||
, visibility = model.visibilities.page
|
||||
, route = config.fromUrl model.url
|
||||
}
|
||||
{ global = model.global
|
||||
, route = config.fromUrl model.url
|
||||
, queryParameters = queryParameters model.url
|
||||
}
|
||||
in
|
||||
|
@ -124,8 +124,8 @@ import Internals.Transition as Transition exposing (Transition)
|
||||
import Internals.Utils as Utils
|
||||
|
||||
|
||||
type alias PageContext globalModel =
|
||||
Internals.Page.PageContext globalModel
|
||||
type alias PageContext route globalModel =
|
||||
Internals.Page.PageContext route globalModel
|
||||
|
||||
|
||||
type alias Page route pageParams pageModel pageMsg ui_pageMsg layoutModel layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg =
|
||||
@ -193,7 +193,7 @@ match up with it's `model`, we use `keep` to leave the page as-is.
|
||||
-}
|
||||
keep :
|
||||
layoutModel
|
||||
-> Update layoutModel layoutMsg globalModel globalMsg
|
||||
-> Update route layoutModel layoutMsg globalModel globalMsg
|
||||
keep model =
|
||||
always ( model, Cmd.none, Cmd.none )
|
||||
|
||||
@ -220,7 +220,7 @@ keep model =
|
||||
-}
|
||||
static :
|
||||
{ title : { global : globalModel } -> String
|
||||
, view : PageContext globalModel -> ui_pageMsg
|
||||
, view : PageContext route globalModel -> ui_pageMsg
|
||||
}
|
||||
-> Page route pageParams () Never ui_pageMsg layoutModel layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg
|
||||
static page =
|
||||
@ -297,9 +297,9 @@ static page =
|
||||
-}
|
||||
sandbox :
|
||||
{ title : { global : globalModel, model : pageModel } -> String
|
||||
, init : PageContext globalModel -> pageParams -> pageModel
|
||||
, update : PageContext globalModel -> pageMsg -> pageModel -> pageModel
|
||||
, view : PageContext globalModel -> pageModel -> ui_pageMsg
|
||||
, init : PageContext route globalModel -> pageParams -> pageModel
|
||||
, update : PageContext route globalModel -> pageMsg -> pageModel -> pageModel
|
||||
, view : PageContext route globalModel -> pageModel -> ui_pageMsg
|
||||
}
|
||||
-> Page route pageParams pageModel pageMsg ui_pageMsg layoutModel layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg
|
||||
sandbox page =
|
||||
@ -376,10 +376,10 @@ sandbox page =
|
||||
-}
|
||||
element :
|
||||
{ title : { global : globalModel, model : pageModel } -> String
|
||||
, init : PageContext globalModel -> pageParams -> ( pageModel, Cmd pageMsg )
|
||||
, update : PageContext globalModel -> pageMsg -> pageModel -> ( pageModel, Cmd pageMsg )
|
||||
, view : PageContext globalModel -> pageModel -> ui_pageMsg
|
||||
, subscriptions : PageContext globalModel -> pageModel -> Sub pageMsg
|
||||
, init : PageContext route globalModel -> pageParams -> ( pageModel, Cmd pageMsg )
|
||||
, update : PageContext route globalModel -> pageMsg -> pageModel -> ( pageModel, Cmd pageMsg )
|
||||
, view : PageContext route globalModel -> pageModel -> ui_pageMsg
|
||||
, subscriptions : PageContext route globalModel -> pageModel -> Sub pageMsg
|
||||
}
|
||||
-> Page route pageParams pageModel pageMsg ui_pageMsg layoutModel layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg
|
||||
element page =
|
||||
@ -456,10 +456,10 @@ element page =
|
||||
-}
|
||||
component :
|
||||
{ title : { global : globalModel, model : pageModel } -> String
|
||||
, init : PageContext globalModel -> pageParams -> ( pageModel, Cmd pageMsg, Cmd globalMsg )
|
||||
, update : PageContext globalModel -> pageMsg -> pageModel -> ( pageModel, Cmd pageMsg, Cmd globalMsg )
|
||||
, view : PageContext globalModel -> pageModel -> ui_pageMsg
|
||||
, subscriptions : PageContext globalModel -> pageModel -> Sub pageMsg
|
||||
, init : PageContext route globalModel -> pageParams -> ( pageModel, Cmd pageMsg, Cmd globalMsg )
|
||||
, update : PageContext route globalModel -> pageMsg -> pageModel -> ( pageModel, Cmd pageMsg, Cmd globalMsg )
|
||||
, view : PageContext route globalModel -> pageModel -> ui_pageMsg
|
||||
, subscriptions : PageContext route globalModel -> pageModel -> Sub pageMsg
|
||||
}
|
||||
-> Page route pageParams pageModel pageMsg ui_pageMsg layoutModel layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg
|
||||
component page =
|
||||
@ -549,7 +549,7 @@ layout map options =
|
||||
{ page = page
|
||||
, global = context.global
|
||||
, fromGlobalMsg = private.fromGlobalMsg
|
||||
, route = private.route
|
||||
, route = context.route
|
||||
}
|
||||
|
||||
myLayoutsVisibility : Transition.Visibility
|
||||
@ -569,7 +569,6 @@ layout map options =
|
||||
, map = map
|
||||
, transitioningPattern = private.transitioningPattern
|
||||
, visibility = private.visibility
|
||||
, route = private.route
|
||||
}
|
||||
context
|
||||
in
|
||||
|
@ -163,8 +163,8 @@ type alias Recipe route params pageModel pageMsg layoutModel layoutMsg ui_layout
|
||||
-- ...
|
||||
|
||||
-}
|
||||
type alias Init layoutModel layoutMsg globalModel globalMsg =
|
||||
Page.Init layoutModel layoutMsg globalModel globalMsg
|
||||
type alias Init route layoutModel layoutMsg globalModel globalMsg =
|
||||
Page.Init route layoutModel layoutMsg globalModel globalMsg
|
||||
|
||||
|
||||
{-|
|
||||
@ -190,8 +190,8 @@ type alias Init layoutModel layoutMsg globalModel globalMsg =
|
||||
-- ...
|
||||
|
||||
-}
|
||||
type alias Update layoutModel layoutMsg globalModel globalMsg =
|
||||
Page.Update layoutModel layoutMsg globalModel globalMsg
|
||||
type alias Update route layoutModel layoutMsg globalModel globalMsg =
|
||||
Page.Update route layoutModel layoutMsg globalModel globalMsg
|
||||
|
||||
|
||||
{-|
|
||||
@ -276,8 +276,8 @@ type alias Layout route pageParams pageModel pageMsg ui_pageMsg globalModel glob
|
||||
|
||||
{-| TODO: PageContext docs
|
||||
-}
|
||||
type alias PageContext globalModel =
|
||||
Page.PageContext globalModel
|
||||
type alias PageContext route globalModel =
|
||||
Page.PageContext route globalModel
|
||||
|
||||
|
||||
{-| TODO: LayoutContext docs
|
||||
|
@ -16,8 +16,9 @@ import Internals.Pattern exposing (Pattern)
|
||||
import Internals.Transition as Transition exposing (Transition)
|
||||
|
||||
|
||||
type alias PageContext globalModel =
|
||||
type alias PageContext route globalModel =
|
||||
{ global : globalModel
|
||||
, route : route
|
||||
, queryParameters : Dict String String
|
||||
}
|
||||
|
||||
@ -35,8 +36,8 @@ type alias Page_ route pageParams pageModel pageMsg ui_pageMsg layoutModel layou
|
||||
|
||||
|
||||
type alias Recipe route pageParams pageModel pageMsg layoutModel layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg =
|
||||
{ init : pageParams -> Init layoutModel layoutMsg globalModel globalMsg
|
||||
, update : pageMsg -> pageModel -> Update layoutModel layoutMsg globalModel globalMsg
|
||||
{ init : pageParams -> Init route layoutModel layoutMsg globalModel globalMsg
|
||||
, update : pageMsg -> pageModel -> Update route layoutModel layoutMsg globalModel globalMsg
|
||||
, bundle : pageModel -> Bundle route layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg
|
||||
}
|
||||
|
||||
@ -64,13 +65,13 @@ upgrade map config =
|
||||
}
|
||||
|
||||
|
||||
type alias Init layoutModel layoutMsg globalModel globalMsg =
|
||||
PageContext globalModel
|
||||
type alias Init route layoutModel layoutMsg globalModel globalMsg =
|
||||
PageContext route globalModel
|
||||
-> ( layoutModel, Cmd layoutMsg, Cmd globalMsg )
|
||||
|
||||
|
||||
type alias Update layoutModel layoutMsg globalModel globalMsg =
|
||||
PageContext globalModel
|
||||
type alias Update route layoutModel layoutMsg globalModel globalMsg =
|
||||
PageContext route globalModel
|
||||
-> ( layoutModel, Cmd layoutMsg, Cmd globalMsg )
|
||||
|
||||
|
||||
@ -78,11 +79,10 @@ type alias Bundle route layoutMsg ui_layoutMsg globalModel globalMsg msg ui_msg
|
||||
{ fromGlobalMsg : globalMsg -> msg
|
||||
, fromPageMsg : layoutMsg -> msg
|
||||
, map : (layoutMsg -> msg) -> ui_layoutMsg -> ui_msg
|
||||
, route : route
|
||||
, visibility : Transition.Visibility
|
||||
, transitioningPattern : Pattern
|
||||
}
|
||||
-> PageContext globalModel
|
||||
-> PageContext route globalModel
|
||||
->
|
||||
{ title : String
|
||||
, view : ui_msg
|
||||
|
Loading…
Reference in New Issue
Block a user