fixed scrolling
This commit is contained in:
@@ -40,12 +40,12 @@
|
|||||||
</div>
|
</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 class="chat-header mb-4">
|
||||||
<div>
|
@if (currentUser(); as connectedUser) {
|
||||||
<a class="back-link" routerLink="/">← Back to dashboard</a>
|
<div class="chat-header-main">
|
||||||
@if (currentUser(); as connectedUser) {
|
<a class="back-link" routerLink="/" aria-label="Back to dashboard">←</a>
|
||||||
<h1 class="h3 mb-1 mt-2">{{ connectedUser.displayName }}</h1>
|
<h1 class="chat-header-title mb-0">{{ connectedUser.displayName }}</h1>
|
||||||
<div class="status-indicators mt-2">
|
<div class="status-indicators">
|
||||||
<div class="status-indicator">
|
<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 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>
|
<span>Signaling</span>
|
||||||
@@ -62,11 +62,13 @@
|
|||||||
<span>WebRTC</span>
|
<span>WebRTC</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
} @else {
|
</div>
|
||||||
<h1 class="h3 mb-1 mt-2">Not signed in</h1>
|
} @else {
|
||||||
<p class="small text-secondary mb-0">Return to the dashboard and sign in again.</p>
|
<div class="chat-header-main">
|
||||||
}
|
<a class="back-link" routerLink="/" aria-label="Back to dashboard">←</a>
|
||||||
</div>
|
<h1 class="chat-header-title mb-0">Not signed in</h1>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-layout">
|
<div class="chat-layout">
|
||||||
@@ -279,7 +281,7 @@
|
|||||||
<textarea
|
<textarea
|
||||||
#composerTextarea
|
#composerTextarea
|
||||||
class="form-control composer-textarea"
|
class="form-control composer-textarea"
|
||||||
rows="3"
|
rows="2"
|
||||||
[(ngModel)]="messageText"
|
[(ngModel)]="messageText"
|
||||||
(ngModelChange)="handleMessageTextChange($event)"
|
(ngModelChange)="handleMessageTextChange($event)"
|
||||||
(keydown.enter)="handleComposerEnter($event)"
|
(keydown.enter)="handleComposerEnter($event)"
|
||||||
|
|||||||
@@ -17,11 +17,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.chat-page {
|
.chat-page {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
width: min(100%, 800px);
|
width: min(100%, 800px);
|
||||||
|
height: min(calc(100dvh - 2rem), 1024px);
|
||||||
|
max-height: 1024px;
|
||||||
margin-inline: auto;
|
margin-inline: auto;
|
||||||
overflow-x: hidden;
|
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 {
|
.call-modal-backdrop {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
@@ -91,14 +112,22 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.back-link {
|
.back-link {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
color: var(--link-color);
|
color: var(--link-color);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-indicators {
|
.status-indicators {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 0.9rem;
|
gap: 0.9rem;
|
||||||
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-indicator {
|
.status-indicator {
|
||||||
@@ -151,11 +180,16 @@
|
|||||||
|
|
||||||
.chat-layout {
|
.chat-layout {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
flex: 1 1 auto;
|
||||||
grid-template-columns: minmax(10rem, 13rem) minmax(0, 1fr);
|
grid-template-columns: minmax(10rem, 13rem) minmax(0, 1fr);
|
||||||
gap:1.25rem;
|
gap:1.25rem;
|
||||||
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.peer-sidebar {
|
.peer-sidebar {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 0;
|
||||||
padding:1rem;
|
padding:1rem;
|
||||||
border-radius: 1.3rem;
|
border-radius: 1.3rem;
|
||||||
border: 1px solid var(--surface-border-soft);
|
border: 1px solid var(--surface-border-soft);
|
||||||
@@ -174,8 +208,10 @@
|
|||||||
|
|
||||||
.peer-list {
|
.peer-list {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
align-content: start;
|
||||||
|
flex: 1 1 auto;
|
||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
max-height: calc(100dvh - 17rem);
|
min-height: 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,15 +309,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.chat-main {
|
.chat-main {
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: minmax(0, 1fr) auto;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.conversation {
|
.conversation {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.85rem;
|
gap: 0.85rem;
|
||||||
align-content: start;
|
align-content: start;
|
||||||
min-height: 24rem;
|
min-height: 0;
|
||||||
max-height: calc(100dvh - 20rem);
|
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding: 0.5rem 0;
|
padding: 0.5rem 0;
|
||||||
}
|
}
|
||||||
@@ -392,6 +430,7 @@
|
|||||||
.composer {
|
.composer {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.85rem;
|
gap: 0.85rem;
|
||||||
|
flex: 0 0 auto;
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
border-top: 1px solid var(--surface-border-soft);
|
border-top: 1px solid var(--surface-border-soft);
|
||||||
@@ -441,7 +480,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.composer-textarea {
|
.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 {
|
.composer-call {
|
||||||
@@ -626,6 +668,11 @@
|
|||||||
max-height: 16rem;
|
max-height: 16rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.status-indicators {
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.bubble {
|
.bubble {
|
||||||
max-width: 88%;
|
max-width: 88%;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user