SHA256
UI: вернуть наш компактный вид регистрации, Enter-отправку и шапку «Связей»
По итогам сверки после мержа с origin/main: - Регистрация: убрана кнопка «Проверить логин» (работает автопроверка через 1.5 с после ввода + повторная проверка на «Далее»), убрана кнопка «Назад» (есть ← в шапке), убран блок «Первый сервер SHiNE»; компактные классы registration-screen/registration-form, статус логина скрыт пока пуст. Промокоды, «глаз» пароля и заглушка коротких логинов origin — не тронуты. Осиротевший импорт defaultServerHttp удалён. - Чат: Enter снова отправляет сообщение, Ctrl+Enter — перенос строки (голосовой ввод и кнопка ➤ работают как раньше). - Шапка «Связей»: возвращён наш вариант (absolute, width:auto). - VERSION: client 1.2.315. Проверено в превью: регистрация — автопроверка вернула «Логин свободен ✅» без кнопки, FAQ-ссылка работает; чат — Enter отправляет (поле очищается), Ctrl+Enter вставляет перенос; консоль чистая. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1252,9 +1252,32 @@ export function render({ navigate, route }) {
|
||||
if (!emojiPickerOpen || form.contains(event.target)) return;
|
||||
closeEmojiPicker();
|
||||
});
|
||||
// Enter — отправить; Ctrl+Enter — перенос строки.
|
||||
input?.addEventListener('keydown', async (event) => {
|
||||
if (event.key !== 'Enter') return;
|
||||
window.requestAnimationFrame(() => autoResizeComposer(input));
|
||||
if (event.ctrlKey) {
|
||||
event.preventDefault();
|
||||
const start = Number(input.selectionStart ?? input.value.length);
|
||||
const end = Number(input.selectionEnd ?? input.value.length);
|
||||
const value = String(input.value || '');
|
||||
input.value = `${value.slice(0, start)}\n${value.slice(end)}`;
|
||||
const nextPos = start + 1;
|
||||
try {
|
||||
input.setSelectionRange(nextPos, nextPos);
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
autoResizeComposer(input);
|
||||
return;
|
||||
}
|
||||
event.preventDefault();
|
||||
const text = String(input.value || '').trim();
|
||||
if (!text) return;
|
||||
input.value = '';
|
||||
autoResizeComposer(input);
|
||||
closeEmojiPicker();
|
||||
await sendTextMessage(text);
|
||||
focusInputToEnd();
|
||||
});
|
||||
|
||||
form.querySelector('#chat-voice-input')?.addEventListener('click', async () => {
|
||||
|
||||
Reference in New Issue
Block a user