danhandrea/elm-router/3.0.1

NOTE: the latest version is 4.3.0

Router

Router

Config

type alias Config msg route page pageMsg =
{ bind : Msg pageMsg -> msg
, parser : Parser (route -> route) route
, notFound : Url -> route
, init : route -> ( page, Cmd pageMsg )
, update : pageMsg -> page -> ( page, Cmd pageMsg )
, view : page -> Layout pageMsg
, subscriptions : page -> Sub pageMsg
, options : Options route
}

Config

Options

type alias Options route =
{ cache : Cache route
, exceptions : List String
}

Router options

type Cache route
= Always
| Never
| Custom (route -> Bool)

Cache rules

defaultOptions : Options route

default options

Router Msg

type Router route page

Router

type Msg pageMsg

Msg

Layout

type alias Layout msg =
{ title : Maybe String
, attrs : List (Attribute msg)
, main : List (Html msg)
}

Layout

`attrs` will be applied to a `Html.main` whose content is `main`

Basic

Config msg route page pageMsg
-> Url
-> Key
-> ( Router route page, Cmd msg )

init

Config msg route page pageMsg
-> Msg pageMsg
-> Router route page
-> ( Router route page, Cmd msg )

update

view : Config msg route page pageMsg -> Router route page -> Layout msg

view

subscriptions : Config msg route page pageMsg -> Router route page -> Sub msg

subscriptions

App url

onUrlChange : (Msg pageMsg -> msg) -> Url -> msg

onUrlChange

onUrlRequest : (Msg pageMsg -> msg) -> UrlRequest -> msg

onUrlRequest

Map

(model -> page)
-> (msg -> pageMsg)
-> ( model, Cmd msg )
-> ( page, Cmd pageMsg )

map update

mapView : (msgA -> msgB) -> Layout msgA -> Layout msgB

map view

Query

url : Router route page -> Url

currentUrl

route : Router route page -> route

currentRoute

page : Router route page -> Maybe page

currentPage

viewport : Router route page -> Maybe Viewport

currentViewPort

base : Router route page -> Url

base

Navigation

Config msg route page pageMsg
-> Router route page
-> String
-> ( Router route page, Cmd msg )

redirect

Config msg route page pageMsg
-> Router route page
-> ( Router route page, Cmd msg )

reload

This never results in a page load!
It will just re-init the current page