From e2bd7dcf525bd3d600eff08d8be700290e70eb43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Fri, 13 Feb 2026 22:38:44 +0100 Subject: Add HTML classes when selecting conversation --- src/Main.hs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') 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 -- cgit v1.2.3