Skip to content

Instantly share code, notes, and snippets.

@ali-abrar
Created March 7, 2018 22:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ali-abrar/3f6a8a40aadc5816a2c039215289122c to your computer and use it in GitHub Desktop.
Save ali-abrar/3f6a8a40aadc5816a2c039215289122c to your computer and use it in GitHub Desktop.
reflex-dom issue #208
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
import Control.Arrow ((&&&))
import Control.Monad.IO.Class (liftIO)
import qualified Data.Map as Map
import Data.Text (Text)
import qualified Data.Text as T
import Reflex.Dom
main :: IO ()
main = mainWidget $ dropDownWReset >> return ()
dropDownWReset :: (Reflex t, MonadWidget t m) => m (Dynamic t (Maybe (Int,Text)))
dropDownWReset = do
reset <- button "reset"
performEvent_ $ liftIO . putStrLn . show <$> reset
let cfg = def & dropdownConfig_setValue .~ (traceEvent "reset" $ 0 <$ reset)
dd <- dropdown 0 menu cfg
let dk = _dropdown_value dd
de = _dropdown_change dd
dk' <- holdDyn 0 de
let v = toOut <$> dk <*> menu
v' = toOut <$> dk' <*> menu
display =<< count reset
text ", " >> display v >> text ", " >> display v'
return v
where
toOut k m = (k,) <$> Map.lookup k m
menu = pure . Map.fromList . map (id &&& tshow) $ [0..3]
tshow = T.pack . show
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment