From 8325cbec84ae71e412efd6aece164961f343bd7a884a212c4518dda48a3413c8 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Tue, 19 May 2026 15:50:42 +0300 Subject: [PATCH] =?UTF-8?q?UI:=20DM=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=B0=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=20=D0=B8=20Enter/Ctrl+Enter=20=D0=B2=20=D1=87=D0=B0=D1=82?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1618_dm-список-и-поведение-enter-в-чате.md | 24 +++++++++++++++++++ VERSION.properties | 4 ++-- shine-UI/js/pages/chat-view.js | 10 ++++++++ shine-UI/js/pages/messages-list.js | 21 ++++++++++++---- shine-UI/styles/components.css | 21 ++++++++++++++++ 5 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 Dev_Docs/Pending_Features/2026-05-19_1618_dm-список-и-поведение-enter-в-чате.md diff --git a/Dev_Docs/Pending_Features/2026-05-19_1618_dm-список-и-поведение-enter-в-чате.md b/Dev_Docs/Pending_Features/2026-05-19_1618_dm-список-и-поведение-enter-в-чате.md new file mode 100644 index 0000000..71b50fe --- /dev/null +++ b/Dev_Docs/Pending_Features/2026-05-19_1618_dm-список-и-поведение-enter-в-чате.md @@ -0,0 +1,24 @@ +# Личные сообщения: правая мета-колонка и Enter/Ctrl+Enter + +- Краткое описание: + - В списке `Личные сообщения` обновлена правая колонка карточки диалога: + - сверху отображается бейдж количества непрочитанных (если есть); + - снизу маленьким шрифтом отображается дата/время последнего сообщения; + - если сообщений нет, вместо времени отображается `-`. + - В экране чата нижний блок ввода закреплён (sticky) и остаётся на месте при прокрутке. + - В поле ввода чата изменено поведение клавиш: + - `Enter` отправляет сообщение; + - `Ctrl+Enter` добавляет перенос строки и не отправляет сообщение. + +- Что проверять: + - В карточках диалогов справа корректно показываются непрочитанные/время/прочерк. + - В чате нижний блок ввода не уезжает при прокрутке истории. + - `Enter` отправляет сообщение из textarea. + - `Ctrl+Enter` вставляет новую строку в textarea. + +- Ожидаемый результат: + - Список диалогов показывает полезную мета-информацию в стабильном формате. + - Ввод сообщений в чате работает в привычной схеме Enter/многострочность. + +- Статус: + - `pending` diff --git a/VERSION.properties b/VERSION.properties index c6613f1..f6a9b74 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.71 -server.version=1.2.65 +client.version=1.2.72 +server.version=1.2.66 diff --git a/shine-UI/js/pages/chat-view.js b/shine-UI/js/pages/chat-view.js index e5bc3a8..640c042 100644 --- a/shine-UI/js/pages/chat-view.js +++ b/shine-UI/js/pages/chat-view.js @@ -416,6 +416,16 @@ export function render({ navigate, route }) { const input = form.elements.message; autoResizeComposer(input); input?.addEventListener('input', () => autoResizeComposer(input)); + input?.addEventListener('keydown', async (event) => { + if (event.key !== 'Enter') return; + if (event.ctrlKey) return; + event.preventDefault(); + const text = String(input.value || '').trim(); + if (!text) return; + input.value = ''; + autoResizeComposer(input); + await sendTextMessage(text); + }); form.querySelector('#chat-voice-input')?.addEventListener('click', async () => { await openSpeechInputModal({ diff --git a/shine-UI/js/pages/messages-list.js b/shine-UI/js/pages/messages-list.js index b5b9391..814bd5c 100644 --- a/shine-UI/js/pages/messages-list.js +++ b/shine-UI/js/pages/messages-list.js @@ -11,6 +11,17 @@ import { loadCurrentRelations } from '../services/user-connections.js'; export const pageMeta = { id: 'messages-list', title: 'Личные сообщения' }; +function formatChatRowTime(ts) { + const value = Number(ts || 0); + if (!Number.isFinite(value) || value <= 0) return '-'; + return new Intl.DateTimeFormat('ru-RU', { + day: '2-digit', + month: '2-digit', + hour: '2-digit', + minute: '2-digit', + }).format(new Date(value)); +} + export function render({ navigate }) { const screen = document.createElement('section'); screen.className = 'stack dm-screen dm-list-screen'; @@ -38,9 +49,9 @@ export function render({ navigate }) {
-