module Main where import qualified ContextMenu as Menu import Control.Monad import qualified Graphics.UI.Threepenny as UI import Graphics.UI.Threepenny.Core -- | Runs the example. main :: IO () main = startGUI defaultConfig example -- | Example use of threepenny contextmenu. example :: Window -> UI () example window = void $ do body <- getBody window button <- UI.button # set UI.text "right-click me!" Menu.contextMenu (menuItems button) body element body #+ [element button] -- | Menu items to change an element red or blue. menuItems :: Element -> [Menu.MenuItem Element] menuItems el = [ Menu.actionMenuItem "red" [colour el "red" ], Menu.actionMenuItem "blue" [colour el "blue"], Menu.nestedMenuItem "more" [ Menu.actionMenuItem "green" [colour el "green"], Menu.nestedMenuItem "even more" [ Menu.actionMenuItem "red" [colour el "red" ], Menu.actionMenuItem "blue" [colour el "blue"] ], Menu.nestedMenuItem "even more" [ Menu.actionMenuItem "red" [colour el "red" ], Menu.actionMenuItem "blue" [colour el "blue"] ] ] ] -- | Sets an element's colour to the given string. colour :: Element -> String -> UI Element colour el str = element el # set style [("color", str)]