From 78d679c64d569a0207ef2654f68c1fe985d8ac7e Mon Sep 17 00:00:00 2001 From: Falko Schindler Date: Thu, 14 Dec 2023 17:38:43 +0100 Subject: [PATCH] support kebab-case event types --- nicegui/element.py | 4 ++-- nicegui/helpers.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/nicegui/element.py b/nicegui/element.py index cacc2a474..0c5618d59 100644 --- a/nicegui/element.py +++ b/nicegui/element.py @@ -9,7 +9,7 @@ from typing_extensions import Self -from . import context, core, events, json, outbox, storage +from . import context, core, events, helpers, json, outbox, storage from .awaitable_response import AwaitableResponse, NullResponse from .dependencies import Component, Library, register_library, register_vue_component from .elements.mixins.visibility import Visibility @@ -388,7 +388,7 @@ def on(self, if handler: listener = EventListener( element_id=self.id, - type=type, + type=helpers.kebab_to_camel_case(type), args=[args] if args and isinstance(args[0], str) else args, # type: ignore handler=handler, throttle=throttle, diff --git a/nicegui/helpers.py b/nicegui/helpers.py index d47624e3d..4689a4c4a 100644 --- a/nicegui/helpers.py +++ b/nicegui/helpers.py @@ -85,3 +85,8 @@ def in_thread(host: str, port: int) -> None: thread = threading.Thread(target=in_thread, args=(host, port), daemon=True) thread.start() return thread, cancel + + +def kebab_to_camel_case(string: str) -> str: + """Convert a kebab-case string to camelCase.""" + return ''.join(word.capitalize() if i else word for i, word in enumerate(string.split('-')))