summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-02-13 22:38:44 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2026-02-13 22:38:44 +0100
commite2bd7dcf525bd3d600eff08d8be700290e70eb43 (patch)
tree931a11c3c4d100c809f7f89308fcf138051ebe0a
parentf226340bced62f13d66544bb9d90f94c940fa134 (diff)
Add HTML classes when selecting conversation
-rw-r--r--src/Main.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 36d441e..854c0d1 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -318,12 +318,16 @@ watchConversations gs@GlobalState {..} = do
convList <- JS.getElementById "conversation_list"
ul <- js_document_createElement (toJSString "ul")
forM_ conversations $ \( _, conv ) -> do
+ li <- js_document_createElement (toJSString "li")
a <- js_document_createElement (toJSString "a")
js_setAttribute a (toJSString "href") (toJSString "javascript:void(0)")
JS.addEventListener a "click" $ \_ -> do
+ js_removeClassFromAllChildren ul (toJSString "selected")
+ js_classList_add li (toJSString "selected")
+ body <- JS.getElementById "body"
+ js_classList_add body (toJSString "conversation-selected")
selectConversation gs conv
- li <- js_document_createElement (toJSString "li")
js_set_textContent a $ toJSString $ T.unpack $ conversationName conv
js_appendChild li a
js_appendChild ul li
@@ -442,6 +446,12 @@ foreign import javascript unsafe "$1.remove()"
foreign import javascript unsafe "$1.setAttribute($2, $3)"
js_setAttribute :: JSVal -> JSString -> JSString -> IO ()
+foreign import javascript unsafe "$1.classList.add($2)"
+ js_classList_add :: JSVal -> JSString -> IO ()
+
+foreign import javascript unsafe "$1.querySelectorAll('*').forEach(child => child.classList.remove($2))"
+ js_removeClassFromAllChildren :: JSVal -> JSString -> IO ()
+
foreign import javascript unsafe "$1.value"
js_get_value :: JSVal -> IO JSString