Improve chat UI with consistent styling, hover effects, flexbox adjustments, and message container restructuring. Sort messages by timestamp for better readability.

This commit is contained in:
akastijn 2026-07-19 17:51:18 +02:00
parent a5c6ab9020
commit 51416aec01
6 changed files with 56 additions and 20 deletions

View File

@ -27,6 +27,7 @@
min-width: 0;
padding: 0 5px 0 5px;
min-height: 0;
box-sizing: border-box;
}
}
}

View File

@ -1,6 +1,16 @@
.server {
padding-left: 10px;
font-size: 25px;
font-family: minecraft-text, 'opensans-bold', sans-serif;
letter-spacing: 2px;
.full-width {
display: flex;
align-items: center;
padding-top: 15px;
padding-bottom: 15px;
border-radius: 8px;
margin-bottom: 10px;
}
.server {
font-size: 20px;
font-family: minecraft-text, 'opensans-bold', sans-serif;
letter-spacing: 1px;
font-weight: bold;
padding-left: 10px;
}

View File

@ -1,8 +1,10 @@
<div class="message-container">
@for (message of messages(); track message.timestamp) {
<p>
<p class="message">
<span class="date-time" [class.blocked]="!message.notBlocked">
[{{ message.timestamp * 1000 | date: 'mediumTime' }}]
</span>
<mini-message [node]="message.messageJson"></mini-message>
</p>
}
</div>

View File

@ -1,3 +1,20 @@
:host {
display: block;
height: 100%;
}
.message-container {
display: flex;
flex-direction: column-reverse;
height: 100%;
overflow-y: auto;
box-sizing: border-box;
}
.message {
margin: 5px 0;
}
.blocked {
color: red;
}

View File

@ -5,19 +5,25 @@
.server {
position: relative;
display: flex;
padding: 2px 2px 2px 10px;
align-items: center;
padding: 10px 20px;
border-bottom: 1px solid #222;
cursor: pointer;
transition: background-color 0.2s;
&:hover {
background-color: #202c42;
}
.server-name {
color: white
color: white;
font-weight: bold;
}
.notification {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
color: blue;
right: 15px;
color: #3b82f6;
}
}
}

View File

@ -20,7 +20,7 @@ export class ChatService implements OnDestroy {
private eventSource?: EventSourcePolyfill;
private readonly authService: AuthService = inject(AuthService)
private readonly _messages = signal<ChatMessage[]>([])
public readonly messages = computed(() => this._messages().filter((message) => message.server === this._selectedServer()));
public readonly messages = computed(() => this._messages().filter((message) => message.server === this._selectedServer()).sort((a, b) => a.timestamp - b.timestamp));
private readonly _servers = signal<ChatServer[]>([])
public readonly servers = computed(() => this._servers().sort((a, b) => a.server.localeCompare(b.server)));
private readonly _selectedServer = signal<string>('');