@devchitchat/chat 4.4.0 → 4.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -213,7 +213,10 @@
|
|
|
213
213
|
</div>
|
|
214
214
|
<footer class="thread-composer">
|
|
215
215
|
<textarea class="thread-textarea" id="thread-input" placeholder="Reply in thread…" rows="2" aria-label="Reply in thread"></textarea>
|
|
216
|
-
<
|
|
216
|
+
<div class="thread-composer-actions">
|
|
217
|
+
<button class="btn-icon thread-panel-close thread-close-mobile" aria-label="Close thread" type="button">Close thread</button>
|
|
218
|
+
<button class="btn-send thread-send-btn" id="thread-send" type="button">Reply</button>
|
|
219
|
+
</div>
|
|
217
220
|
</footer>
|
|
218
221
|
</div>
|
|
219
222
|
|
|
@@ -502,7 +502,6 @@ export default function CallIsland(root) {
|
|
|
502
502
|
const threadRepliesEl = document.getElementById('thread-replies')
|
|
503
503
|
const threadInputEl = document.getElementById('thread-input')
|
|
504
504
|
const threadSendBtn = document.getElementById('thread-send')
|
|
505
|
-
const threadCloseBtn = document.getElementById('thread-panel-close')
|
|
506
505
|
|
|
507
506
|
let activeThreadParentId = null
|
|
508
507
|
|
|
@@ -553,7 +552,10 @@ export default function CallIsland(root) {
|
|
|
553
552
|
if (threadRepliesEl) threadRepliesEl.innerHTML = ''
|
|
554
553
|
}
|
|
555
554
|
|
|
556
|
-
|
|
555
|
+
// Use delegation so both the top ✕ and the mobile footer "Close thread" button work
|
|
556
|
+
threadPanelEl?.addEventListener('click', e => {
|
|
557
|
+
if (e.target.closest('.thread-panel-close')) closeThread()
|
|
558
|
+
})
|
|
557
559
|
|
|
558
560
|
function sendThreadReply() {
|
|
559
561
|
const text = threadInputEl?.value.trim()
|
|
@@ -1457,7 +1457,26 @@ mark { background: color-mix(in srgb, var(--accent) 30%, transparent); color: va
|
|
|
1457
1457
|
|
|
1458
1458
|
/* Mobile: full-width overlay */
|
|
1459
1459
|
@media (max-width: 700px) {
|
|
1460
|
-
.thread-panel {
|
|
1460
|
+
.thread-panel {
|
|
1461
|
+
width: 100%;
|
|
1462
|
+
/* Push header below notch/Dynamic Island on iPhone PWA */
|
|
1463
|
+
padding-top: env(safe-area-inset-top);
|
|
1464
|
+
}
|
|
1465
|
+
.thread-close-mobile { display: inline-flex; }
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
.thread-composer-actions {
|
|
1469
|
+
display: flex;
|
|
1470
|
+
align-items: center;
|
|
1471
|
+
justify-content: flex-end;
|
|
1472
|
+
gap: 8px;
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
.thread-close-mobile {
|
|
1476
|
+
display: none; /* desktop: hidden; mobile: shown via media query above */
|
|
1477
|
+
font-size: 13px;
|
|
1478
|
+
opacity: 0.7;
|
|
1479
|
+
margin-right: auto; /* push Reply button to the right */
|
|
1461
1480
|
}
|
|
1462
1481
|
|
|
1463
1482
|
/* ── Call: status row (shown when a call is active, user hasn't joined) ──── */
|