jinjor/elm-contextmenu/1.1.0

NOTE: this package is not compatible with Elm 0.19.1

elm-contextmenu

Flexible context menu for Elm (Demo)

How to use

This component works with The Elm Architecture.

  1. Model
type alias Model =
  { contextMenu : ContextMenu Context
  , config : ContextMenu.Config
  , message : String
  }
  1. Msg
type Msg
  = ContextMenuMsg (ContextMenu.Msg Context)
  | Item Int
  1. Initialize
init : (Model, Cmd Msg)
init =
  let
    (contextMenu, msg) = ContextMenu.init
  in
    { contextMenu = contextMenu
    }
      ! [ Cmd.map ContextMenuMsg msg ]
  1. Update
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
  case msg of
    ContextMenuMsg msg ->
      let
        (contextMenu, cmd) =
          ContextMenu.update msg model.contextMenu
      in
        { model | contextMenu = contextMenu } ! [ Cmd.map ContextMenuMsg cmd ]
  1. Subscribe
subscriptions : Model -> Sub Msg
subscriptions model =
  Sub.map ContextMenuMsg (ContextMenu.subscriptions model.contextMenu)
  1. View
view : Model -> Html Msg
view model =
  div
    [ ContextMenu.open ContextMenuMsg "context1" ]
    [ ContextMenu.view
        ContextMenu.defaultConfig
        ContextMenuMsg
        toItemGroups
        toItemGroups model.contextMenu
    ]

toItemGroups : String -> List (List Item)
toItemGroups context =
  if context == "context1" then
    [ [ (ContextMenu.item "Hey", Item 1)
      , (ContextMenu.item "Yo!", Item 2)
      ]
    ]
  else
    []

License

BSD3