Files
UDN/static/src/messageScreen.tsx
T

52 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-07-05 00:07:39 +02:00
import * as React from "bloatless-react";
import {
Message,
isMessageEmpty,
messages,
newMessageBody,
sendMessage,
} from "./model";
2024-07-09 02:36:43 +02:00
import { translations } from "./translations";
2024-07-05 00:07:39 +02:00
const convertMessageToElement: React.ListItemConverter<Message> = (message) => {
return (
<div class="tile" style="flex: 0">
<div>
<span class="secondary">{message.channel}</span>
<b>{message.body}</b>
</div>
</div>
);
};
export function MessageScreen() {
return (
<article id="message-screen">
2024-07-09 02:36:43 +02:00
<header>{translations.messagesReceived}</header>
2024-07-05 00:07:39 +02:00
<div>
<div
class="flex-column gap"
subscribe:children={[messages, convertMessageToElement]}
></div>
</div>
<footer>
<input
style="max-width: unset"
2024-07-09 02:36:43 +02:00
placeholder={translations.message_placeholder_generic}
2024-07-05 00:07:39 +02:00
bind:value={newMessageBody}
on:enter={sendMessage}
></input>
<button
class="primary"
on:click={sendMessage}
toggle:disabled={isMessageEmpty}
>
<span class="icon">send</span>
</button>
</footer>
</article>
);
}