comparison src/chat.html.luan @ 10:f9e6a4cc4f7d

add Post
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 30 Oct 2024 23:18:45 -0600
parents b8b12fd8be22
children 8b8905f63d80
comparison
equal deleted inserted replaced
9:b8b12fd8be22 10:f9e6a4cc4f7d
1 local Luan = require "luan:Luan.luan" 1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error 2 local error = Luan.error
3 local ipairs = Luan.ipairs or error() 3 local ipairs = Luan.ipairs or error()
4 local pairs = Luan.pairs or error() 4 local pairs = Luan.pairs or error()
5 local range = Luan.range or error()
5 local Table = require "luan:Table.luan" 6 local Table = require "luan:Table.luan"
6 local concat = Table.concat or error() 7 local concat = Table.concat or error()
7 local is_empty = Table.is_empty or error() 8 local is_empty = Table.is_empty or error()
8 local size = Table.size or error() 9 local size = Table.size or error()
9 local Io = require "luan:Io.luan" 10 local Io = require "luan:Io.luan"
10 local Http = require "luan:http/Http.luan" 11 local Http = require "luan:http/Http.luan"
11 local Shared = require "site:/lib/Shared.luan" 12 local Shared = require "site:/lib/Shared.luan"
12 local head = Shared.head or error() 13 local head = Shared.head or error()
13 local header = Shared.header or error() 14 local header = Shared.header or error()
15 local started = Shared.started or error()
14 local User = require "site:/lib/User.luan" 16 local User = require "site:/lib/User.luan"
15 local current_user = User.current or error() 17 local current_user = User.current or error()
16 local get_user_by_email = User.get_by_email or error() 18 local get_user_by_email = User.get_by_email or error()
17 local Utils = require "site:/lib/Utils.luan" 19 local Utils = require "site:/lib/Utils.luan"
18 local to_set = Utils.to_set or error() 20 local to_set = Utils.to_set or error()
80 <!doctype html> 82 <!doctype html>
81 <html> 83 <html>
82 <head> 84 <head>
83 <% head() %> 85 <% head() %>
84 <style> 86 <style>
85 body { 87 @import "chat.css?s=<%=started%>";
86 height: 100vh;
87 display: flex;
88 flex-direction: column;
89 }
90 div[content] {
91 margin-bottom: 0;
92 display: flex;
93 height: 100%;
94 margin-left: calc(3% - 8px);
95 }
96 div[chats] {
97 width: 250px;
98 padding-right: 8px;
99 }
100 div[chats] > div {
101 margin-top: 2px;
102 margin-bottom: 2px;
103 padding-top: 16px;
104 padding-bottom: 16px;
105 padding-left: 8px;
106 padding-right: 8px;
107 border-radius: 4px;
108 }
109 div[chats] > div:hover,
110 div[chats] > div[selected] {
111 background-color: LightBlue;
112 }
113 div[posts] {
114 padding-left: 8px;
115 border-left: 1px solid;
116 }
117 </style> 88 </style>
118 <script> 89 <script src="chat.js?s=<%=started%>"></script>
119 'use strict';
120
121 let currentChatId = null;
122
123 function selectChat(div) {
124 let chatId = div.getAttribute('chat');
125 if( chatId === currentChatId )
126 return;
127 let selected = div.parentNode.querySelector('[selected]');
128 if( selected ) selected.removeAttribute('selected');
129 div.setAttribute('selected','');
130 ajax(`chat.js?chat=${chatId}`);
131 }
132 </script>
133 </head> 90 </head>
134 <body> 91 <body>
135 <% header() %> 92 <% header() %>
136 <div content> 93 <div content>
137 <div chats> 94 <div chats>