This commit is contained in:
2025-09-23 04:16:05 +02:00
parent 244bfa11cb
commit 01d9dc9fa2
16 changed files with 2604 additions and 1 deletions

View File

@@ -0,0 +1,27 @@
from typing import Optional, Callable, Awaitable
from nicegui import ui
class ChatInput(ui.textarea):
def __init__(self,
placeholder: str = 'Type your message...',
on_enter: Optional[Callable[[str], Awaitable[None]]] = None,
*args, **kwargs) -> None:
super().__init__(placeholder=placeholder, *args, **kwargs)
self._on_enter_callback = on_enter
self.classes('flex-grow').props('outlined dense autogrow')
self.on('keydown', self._handle_keydown)
async def _handle_keydown(self, event) -> None:
"""Handle keyboard shortcuts for message input"""
if hasattr(event, 'args') and event.args:
key_event = event.args
if key_event.get('key') == 'Enter' and not key_event.get('shiftKey', False):
# Enter without Shift: Send message
event.args['preventDefault'] = True
if self._on_enter_callback and self.value:
await self._on_enter_callback(self.value)
self.value = ''
# Shift+Enter: Allow default behavior (new line)