fixed scrolling

This commit is contained in:
2026-03-11 16:22:17 +01:00
parent 11cc5350c8
commit 64e03964e9
2 changed files with 65 additions and 16 deletions

View File

@@ -40,12 +40,12 @@
</div>
}
<div class="chat-header d-flex flex-column flex-lg-row justify-content-between align-items-start align-items-lg-center gap-3 mb-4">
<div>
<a class="back-link" routerLink="/">← Back to dashboard</a>
@if (currentUser(); as connectedUser) {
<h1 class="h3 mb-1 mt-2">{{ connectedUser.displayName }}</h1>
<div class="status-indicators mt-2">
<div class="chat-header mb-4">
@if (currentUser(); as connectedUser) {
<div class="chat-header-main">
<a class="back-link" routerLink="/" aria-label="Back to dashboard"></a>
<h1 class="chat-header-title mb-0">{{ connectedUser.displayName }}</h1>
<div class="status-indicators">
<div class="status-indicator">
<span class="status-led" [class.status-led-ok]="indicatorTone(session.signalingState()) === 'ok'" [class.status-led-connecting]="indicatorTone(session.signalingState()) === 'connecting'" [class.status-led-offline]="indicatorTone(session.signalingState()) === 'offline'"></span>
<span>Signaling</span>
@@ -62,11 +62,13 @@
<span>WebRTC</span>
</button>
</div>
} @else {
<h1 class="h3 mb-1 mt-2">Not signed in</h1>
<p class="small text-secondary mb-0">Return to the dashboard and sign in again.</p>
}
</div>
</div>
} @else {
<div class="chat-header-main">
<a class="back-link" routerLink="/" aria-label="Back to dashboard"></a>
<h1 class="chat-header-title mb-0">Not signed in</h1>
</div>
}
</div>
<div class="chat-layout">
@@ -279,7 +281,7 @@
<textarea
#composerTextarea
class="form-control composer-textarea"
rows="3"
rows="2"
[(ngModel)]="messageText"
(ngModelChange)="handleMessageTextChange($event)"
(keydown.enter)="handleComposerEnter($event)"

View File

@@ -17,11 +17,32 @@
}
.chat-page {
display: flex;
flex-direction: column;
width: min(100%, 800px);
height: min(calc(100dvh - 2rem), 1024px);
max-height: 1024px;
margin-inline: auto;
overflow-x: hidden;
}
.chat-header {
flex: 0 0 auto;
}
.chat-header-main {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.85rem;
}
.chat-header-title {
margin: 0;
font-size: clamp(1.35rem, 2vw, 1.75rem);
line-height: 1.1;
}
.call-modal-backdrop {
position: fixed;
inset: 0;
@@ -91,14 +112,22 @@
}
.back-link {
display: inline-flex;
align-items: center;
justify-content: center;
width: 2rem;
height: 2rem;
color: var(--link-color);
text-decoration: none;
font-size: 1.4rem;
line-height: 1;
}
.status-indicators {
display: flex;
flex-wrap: wrap;
gap: 0.9rem;
margin-left: auto;
}
.status-indicator {
@@ -151,11 +180,16 @@
.chat-layout {
display: grid;
flex: 1 1 auto;
grid-template-columns: minmax(10rem, 13rem) minmax(0, 1fr);
gap:1.25rem;
min-height: 0;
}
.peer-sidebar {
display: flex;
flex-direction: column;
min-height: 0;
padding:1rem;
border-radius: 1.3rem;
border: 1px solid var(--surface-border-soft);
@@ -174,8 +208,10 @@
.peer-list {
display: grid;
align-content: start;
flex: 1 1 auto;
gap: 0.75rem;
max-height: calc(100dvh - 17rem);
min-height: 0;
overflow: auto;
}
@@ -273,15 +309,17 @@
}
.chat-main {
display: grid;
grid-template-rows: minmax(0, 1fr) auto;
min-width: 0;
min-height: 0;
}
.conversation {
display: grid;
gap: 0.85rem;
align-content: start;
min-height: 24rem;
max-height: calc(100dvh - 20rem);
min-height: 0;
overflow: auto;
padding: 0.5rem 0;
}
@@ -392,6 +430,7 @@
.composer {
display: grid;
gap: 0.85rem;
flex: 0 0 auto;
padding-top: 1rem;
margin-top: 1rem;
border-top: 1px solid var(--surface-border-soft);
@@ -441,7 +480,10 @@
}
.composer-textarea {
min-height: 7rem;
min-height: calc(2 * 1.5rem + 1.25rem);
max-height: calc(6 * 1.5rem + 1.25rem);
overflow-y: auto;
resize: none;
}
.composer-call {
@@ -626,6 +668,11 @@
max-height: 16rem;
}
.status-indicators {
width: 100%;
margin-left: 0;
}
.bubble {
max-width: 88%;
}