浏览代码

fix upload argspec being missing (#4335)

Khaleel Al-Adhami 6 月之前
父节点
当前提交
e0d1a58496
共有 2 个文件被更改,包括 61 次插入2 次删除
  1. 10 2
      reflex/components/core/upload.py
  2. 51 0
      reflex/components/core/upload.pyi

+ 10 - 2
reflex/components/core/upload.py

@@ -5,6 +5,7 @@ from __future__ import annotations
 from pathlib import Path
 from pathlib import Path
 from typing import Any, Callable, ClassVar, Dict, List, Optional, Tuple
 from typing import Any, Callable, ClassVar, Dict, List, Optional, Tuple
 
 
+from reflex.components.base.fragment import Fragment
 from reflex.components.component import (
 from reflex.components.component import (
     Component,
     Component,
     ComponentNamespace,
     ComponentNamespace,
@@ -181,6 +182,13 @@ class UploadFilesProvider(Component):
     tag = "UploadFilesProvider"
     tag = "UploadFilesProvider"
 
 
 
 
+class GhostUpload(Fragment):
+    """A ghost upload component."""
+
+    # Fired when files are dropped.
+    on_drop: EventHandler[_on_drop_spec]
+
+
 class Upload(MemoizationLeaf):
 class Upload(MemoizationLeaf):
     """A file upload component."""
     """A file upload component."""
 
 
@@ -276,8 +284,8 @@ class Upload(MemoizationLeaf):
         root_props_unique_name = get_unique_variable_name()
         root_props_unique_name = get_unique_variable_name()
 
 
         event_var, callback_str = StatefulComponent._get_memoized_event_triggers(
         event_var, callback_str = StatefulComponent._get_memoized_event_triggers(
-            Box.create(on_click=upload_props["on_drop"])  # type: ignore
-        )["on_click"]
+            GhostUpload.create(on_drop=upload_props["on_drop"])
+        )["on_drop"]
 
 
         upload_props["on_drop"] = event_var
         upload_props["on_drop"] = event_var
 
 

+ 51 - 0
reflex/components/core/upload.pyi

@@ -6,6 +6,7 @@
 from pathlib import Path
 from pathlib import Path
 from typing import Any, ClassVar, Dict, List, Optional, Union, overload
 from typing import Any, ClassVar, Dict, List, Optional, Union, overload
 
 
+from reflex.components.base.fragment import Fragment
 from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
 from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
 from reflex.constants import Dirs
 from reflex.constants import Dirs
 from reflex.event import BASE_STATE, CallableEventSpec, EventSpec, EventType
 from reflex.event import BASE_STATE, CallableEventSpec, EventSpec, EventType
@@ -84,6 +85,56 @@ class UploadFilesProvider(Component):
         """
         """
         ...
         ...
 
 
+class GhostUpload(Fragment):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        style: Optional[Style] = None,
+        key: Optional[Any] = None,
+        id: Optional[Any] = None,
+        class_name: Optional[Any] = None,
+        autofocus: Optional[bool] = None,
+        custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
+        on_blur: Optional[EventType[[], BASE_STATE]] = None,
+        on_click: Optional[EventType[[], BASE_STATE]] = None,
+        on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
+        on_double_click: Optional[EventType[[], BASE_STATE]] = None,
+        on_drop: Optional[
+            Union[EventType[[], BASE_STATE], EventType[[Any], BASE_STATE]]
+        ] = None,
+        on_focus: Optional[EventType[[], BASE_STATE]] = None,
+        on_mount: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
+        on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
+        on_scroll: Optional[EventType[[], BASE_STATE]] = None,
+        on_unmount: Optional[EventType[[], BASE_STATE]] = None,
+        **props,
+    ) -> "GhostUpload":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            on_drop: Fired when files are dropped.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+        """
+        ...
+
 class Upload(MemoizationLeaf):
 class Upload(MemoizationLeaf):
     is_used: ClassVar[bool] = False
     is_used: ClassVar[bool] = False