driebit/elm-ginger/3.1.0

NOTE: the latest version is 5.0.1

Ginger.Menu

Definitions

type alias Item =
{ id : ResourceId
, title : Translation
, path : String
}

Construct

empty : Menu

A Menu containing no values

Decode

fromValue : Value -> Menu

Decode a Menu from a Decode.Value, defaults to an empty Menu

You can for example pass the menu as a flag and initialize you app like:

main : Program Decode.Value Model Msg
main =
    Browser.application
        { init = init << Ginger.Menu.fromValue
        , view = view
        , update = update
        , subscriptions = subscriptions
        , onUrlChange = OnUrlChange
        , onUrlRequest = OnUrlRequest
        }
fromJson : Decoder Menu
decodeMenuItems : Decoder (List Item)

Build a custom menu Decoder re-using the decoders used in this module

type alias Menu =
    { main : List Item
    , mainExtra : List Item
    , footer : List Item
    , footerExtra : List Item
    }


customFromJson : Decoder Menu
customFromJson =
    Decode.succeed Menu
        |> Pipeline.required "main_menu" decodeMenuItems
        |> Pipeline.required "main_menu_extra" decodeMenuItems
        |> Pipeline.required "footer_menu" decodeMenuItems
        |> Pipeline.required "footer_menu_extra" decodeMenuItems
decodeMenuItem : Decoder Item
decodeFooter : Decoder Footer