diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-02-13 22:38:44 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-02-13 22:38:44 +0100 |
| commit | e2bd7dcf525bd3d600eff08d8be700290e70eb43 (patch) | |
| tree | 931a11c3c4d100c809f7f89308fcf138051ebe0a /src/Main.hs | |
| parent | f226340bced62f13d66544bb9d90f94c940fa134 (diff) | |
Add HTML classes when selecting conversation
Diffstat (limited to 'src/Main.hs')
| -rw-r--r-- | src/Main.hs | 12 |
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 |