aboutsummaryrefslogtreecommitdiff
path: root/client/src/Util/Dom.hs
diff options
context:
space:
mode:
authorJoris2018-10-28 17:57:58 +0100
committerJoris2018-10-28 17:57:58 +0100
commit40b4994797a797b1fa86cafda789a5c488730c6d (patch)
treead195b31fa442821b9de8f99364e254f0f41935f /client/src/Util/Dom.hs
parentdf83b634006c699cfa1e921bf74ce951a906a62f (diff)
downloadbudget-40b4994797a797b1fa86cafda789a5c488730c6d.tar.gz
budget-40b4994797a797b1fa86cafda789a5c488730c6d.tar.bz2
budget-40b4994797a797b1fa86cafda789a5c488730c6d.zip
Delete payment
Diffstat (limited to 'client/src/Util/Dom.hs')
-rw-r--r--client/src/Util/Dom.hs36
1 files changed, 31 insertions, 5 deletions
diff --git a/client/src/Util/Dom.hs b/client/src/Util/Dom.hs
index f3e9c88..55b8521 100644
--- a/client/src/Util/Dom.hs
+++ b/client/src/Util/Dom.hs
@@ -1,12 +1,31 @@
module Util.Dom
- ( divVisibleIf
+ ( divIfDyn
+ , divIfEvent
+ , divVisibleIf
, divClassVisibleIf
+ , getBody
) where
-import qualified Data.Map as M
-import Data.Text (Text)
-import Reflex.Dom (Dynamic, MonadWidget)
-import qualified Reflex.Dom as R
+import qualified Data.Map as M
+import Data.Text (Text)
+import qualified GHCJS.DOM as Dom
+import qualified GHCJS.DOM.Document as Document
+import qualified GHCJS.DOM.HTMLCollection as HTMLCollection
+import GHCJS.DOM.Types (Element)
+import Reflex.Dom (Dynamic, Event, MonadWidget)
+import qualified Reflex.Dom as R
+
+divIfDyn :: forall t m a. MonadWidget t m => Dynamic t Bool -> m a -> m a -> m (Dynamic t a)
+divIfDyn cond = divIfEvent (R.updated cond)
+
+divIfEvent :: forall t m a. MonadWidget t m => Event t Bool -> m a -> m a -> m (Dynamic t a)
+divIfEvent cond empty content =
+ R.widgetHold empty (flip fmap cond (\show ->
+ if show
+ then
+ content
+ else
+ empty))
divVisibleIf :: forall t m a. MonadWidget t m => Dynamic t Bool -> m a -> m a
divVisibleIf cond content = divClassVisibleIf cond "" content
@@ -17,3 +36,10 @@ divClassVisibleIf cond className content =
"div"
(fmap (\c -> (M.singleton "class" className) `M.union` if c then M.empty else M.singleton "style" "display:none") cond)
content
+
+getBody :: forall t m. MonadWidget t m => m Element
+getBody = do
+ document <- Dom.currentDocumentUnchecked
+ nodelist <- Document.getElementsByTagName document ("body" :: String)
+ Just body <- nodelist `HTMLCollection.item` 0
+ return body