Skip to content

Instantly share code, notes, and snippets.

@dalaing
Last active November 8, 2017 02:00
Show Gist options
  • Save dalaing/0bbd8c8a366434833b4c5e387d7229fa to your computer and use it in GitHub Desktop.
Save dalaing/0bbd8c8a366434833b4c5e387d7229fa to your computer and use it in GitHub Desktop.
app :: MonadWidget t m => m ()
app = mdo
curRoute <- menu initialRoute
tool curRoute
modeMenu :: MonadWidget t m => Dynamic t Route -> Mode -> m (Dynamic t Mode)
modeMenu dRoute initial = do
eMode <- elClass "div" "Mode" $ do
toV <- menuItem View dCur dRoute
text " | "
toE <- menuItem Edit dCur dRoute
text " | "
toI <- menuItem Input dCur dRoute
pure $ leftmost [toV, toE, toI]
holdDyn initial eMode
levelMenu :: MonadWidget t m => Dynamic t Route -> Level -> m (Dynamic t Level)
levelMenu dRoute initial = do
eLevel <- elClass "div" "Level" $ do
toC <- menuItem Content dCur dRoute
text " | "
toU <- menuItem User dCur dRoute
pure $ leftmost [toC, toU]
holdDyn initial eLevel
menu :: MonadWidget t m => Route -> m (Dynamic t Route)
menu (Route mode level) =
elClass "div" "Menu" $ mdo
dMode <- modeMeny dRoute mode
dLevel <- levelMenu dRoute level
dRoute <- Route <$> dMode <*> dLevel
pure dRoute
menuItem :: (Eq a, Show a, MonadWidget t m)
=> a -> Dynamic t a -> Dynamic t Route -> m (Event t a)
menuItem option dCur dRoute = do
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment