on develop help sign in
add set value Event to dropdownDynAttr
commit2636344e18b0da33b0f45a31f3d675f038a21447 authorali abrar <aliabrar@gmail.com> dateThu 5 Mar 2015, 13:45 (12 years ago) parent2003aa8
1 file changed+4−3
src/Reflex/Dom/Widget/Input.hs+4−3
src/Reflex/Dom/Widget/Input.hs+4−3
@@ -222,13 +222,14 @@ data Dropdown t k
222222--TODO: Get rid of Show k and Read k by indexing the possible values ourselves
223223-- | Create a dropdown box
224224-- The first argument gives the initial value of the dropdown; if it is not present in the map of options provided, it will be added with an empty string as its text
225−dropdownDynAttr :: forall k t m. (MonadWidget t m, Ord k, Show k, Read k) => Dynamic t (Map String String) -> k -> Dynamic t (Map k String) -> m (Dropdown t k)
226−dropdownDynAttr attrs k0 options = do
225+dropdownDynAttr :: forall k t m. (MonadWidget t m, Ord k, Show k, Read k) => Dynamic t (Map String String) -> k -> Event t k -> Dynamic t (Map k String) -> m (Dropdown t k)
226+dropdownDynAttr attrs k0 setK options = do
227227 (eRaw, _) <- elDynAttr' "select" attrs $ do
228228 optionsWithDefault <- mapDyn (`Map.union` (k0 =: "")) options
229229 listWithKey optionsWithDefault $ \k v -> do
230230 elAttr "option" ("value" =: show k <> if k == k0 then "selected" =: "selected" else mempty) $ dynText v
231231 let e = castToHTMLSelectElement $ _el_element eRaw
232+ performEvent_ $ fmap (liftIO . htmlSelectElementSetValue e . show) setK
232233 eChange <- wrapDomEvent e elementOnchange $ do
233234 kStr <- liftIO $ htmlSelectElementGetValue e
234235 return $ readMay kStr
@@ -240,7 +241,7 @@ dropdownDynAttr attrs k0 options = do
240241 return $ Dropdown dValue
241242
242243dropdown :: forall k t m. (MonadWidget t m, Ord k, Show k, Read k) => k -> Dynamic t (Map k String) -> m (Dropdown t k)
243−dropdown = dropdownDynAttr (constDyn Map.empty)
244+dropdown k = dropdownDynAttr (constDyn Map.empty) k never
244245
245246--TODO: Get rid of Show k and Read k by indexing the possible values ourselves
246247dropdown' :: forall k t m. (MonadWidget t m, Eq k, Show k, Read k) => k -> NonEmpty (k, String) -> m (Dropdown t k)