Make copy button changing to ok and back, add break-word property for pre

This commit is contained in:
dimitrievgs 2025-09-30 22:30:02 +03:00
parent 67cca58a9e
commit 59ba254cbe
2 changed files with 29 additions and 14 deletions

View File

@ -878,7 +878,20 @@ export class ChatPanel {
const copyIconContainer = copyButton.createSpan({ cls: 'flex items-center justify-center touch:w-10 h-8 w-8' }); const copyIconContainer = copyButton.createSpan({ cls: 'flex items-center justify-center touch:w-10 h-8 w-8' });
setIcon(copyIconContainer, 'copy'); // Используем импортированную функцию setIcon setIcon(copyIconContainer, 'copy'); // Используем импортированную функцию setIcon
copyButton.addEventListener('click', () => { copyButton.addEventListener('click', () => {
this.copyMessageContent(messageContent); this.copyMessageContent(messageContent)
.then(() => {
// В случае успешного копирования меняем иконку на галочку
setIcon(copyIconContainer, 'check');
// Возвращаем иконку копирования через 1 секунду
setTimeout(() => {
setIcon(copyIconContainer, 'copy');
}, 1000);
})
.catch(err => {
console.error('Не удалось скопировать сообщение:', err);
// Optionally: show an error notice
// new Notice('Не удалось скопировать сообщение.');
});
}); });
// Кнопка "Попробовать снова" // Кнопка "Попробовать снова"
@ -898,17 +911,7 @@ export class ChatPanel {
});*/ // TODO: реализовать переотправку сообщения });*/ // TODO: реализовать переотправку сообщения
} }
private copyMessageContent(content: string): void { private copyMessageContent(content: string): Promise<void> {
navigator.clipboard.writeText(content) return navigator.clipboard.writeText(content);
.then(() => {
console.log('Message content copied to clipboard.');
// Optionally: show a notice to the user
// new Notice('Сообщение скопировано!');
})
.catch(err => {
console.error('Failed to copy message content:', err);
// Optionally: show an error notice
// new Notice('Не удалось скопировать сообщение.');
});
} }
} }

View File

@ -256,6 +256,18 @@
color: var(--text-accent); color: var(--text-accent);
} }
/* Стили для блоков кода (pre) */
.chat-message-content pre {
white-space: pre-wrap; /* Сохраняет пробелы и переносит строки, когда это необходимо */
word-break: break-word; /* Разбивает длинные слова, чтобы они помещались в контейнер */
overflow-x: auto; /* Добавляет горизонтальную прокрутку, если содержимое все же не помещается */
}
/* Убедимся, что стили code внутри pre не конфликтуют с родительским pre */
.chat-message-content pre code {
background-color: transparent; /* Убираем фон, так как он уже задан для pre */
}
/* Стиль для форм ввода чата */ /* Стиль для форм ввода чата */
.chat-input-form { .chat-input-form {
display: flex; display: flex;