diff --git a/packages/reflex-components-core/src/reflex_components_core/core/upload.py b/packages/reflex-components-core/src/reflex_components_core/core/upload.py index 84b3ef06f06..642ef851749 100644 --- a/packages/reflex-components-core/src/reflex_components_core/core/upload.py +++ b/packages/reflex-components-core/src/reflex_components_core/core/upload.py @@ -177,6 +177,7 @@ def get_upload_url(file_path: str | Var[str]) -> Var[str]: _on_drop_spec, passthrough_event_spec(UploadChunkIterator), ) +_on_drop_rejected_spec = passthrough_event_spec(list[dict[str, Any]]) _UPLOAD_FILES_CLIENT_HANDLER = "uploadFiles" @@ -220,7 +221,7 @@ class GhostUpload(Fragment): # Fired when files are dropped. on_drop: EventHandler[_on_drop_args_spec] - on_drop_rejected: EventHandler[_on_drop_spec] = field( + on_drop_rejected: EventHandler[_on_drop_rejected_spec] = field( doc="Fired when dropped files do not meet the specified criteria." ) @@ -264,7 +265,7 @@ class Upload(MemoizationLeaf): # Fired when files are dropped. on_drop: EventHandler[_on_drop_args_spec] - on_drop_rejected: EventHandler[_on_drop_spec] = field( + on_drop_rejected: EventHandler[_on_drop_rejected_spec] = field( doc="Fired when dropped files do not meet the specified criteria." ) diff --git a/pyi_hashes.json b/pyi_hashes.json index 5c8a1ad6665..72279f55c9e 100644 --- a/pyi_hashes.json +++ b/pyi_hashes.json @@ -20,7 +20,7 @@ "packages/reflex-components-core/src/reflex_components_core/core/helmet.pyi": "7fd81a99bde5b0ff94bb52523597fd5c", "packages/reflex-components-core/src/reflex_components_core/core/html.pyi": "753d6ae315369530dad450ed643f5be6", "packages/reflex-components-core/src/reflex_components_core/core/sticky.pyi": "ba60a7d9cba75b27a1133bd63a9fbd59", - "packages/reflex-components-core/src/reflex_components_core/core/upload.pyi": "17775edb94cc804686ae4cd873584810", + "packages/reflex-components-core/src/reflex_components_core/core/upload.pyi": "48bccd1cf1cedaf24503e7dbd2c0b02b", "packages/reflex-components-core/src/reflex_components_core/core/window_events.pyi": "cab827931770be082cd1598a9908abbc", "packages/reflex-components-core/src/reflex_components_core/datadisplay/__init__.pyi": "c96fed4da42a13576d64f84e3c7cb25c", "packages/reflex-components-core/src/reflex_components_core/el/__init__.pyi": "f09129ddefb57ab4c7769c86dc9a3153", diff --git a/tests/units/components/core/test_upload.py b/tests/units/components/core/test_upload.py index 8b6f31db3c6..d3a1e4c19aa 100644 --- a/tests/units/components/core/test_upload.py +++ b/tests/units/components/core/test_upload.py @@ -1,9 +1,10 @@ from typing import Any, cast import pytest -from reflex_base.event import EventChain, EventHandler, EventSpec +from reflex_base.event import EventChain, EventHandler, EventSpec, parse_args_spec from reflex_base.vars.base import LiteralVar, Var from reflex_components_core.core.upload import ( + GhostUpload, StyledUpload, Upload, UploadNamespace, @@ -76,6 +77,14 @@ def test__on_drop_spec(): assert isinstance(_on_drop_spec(LiteralVar.create([])), tuple) +@pytest.mark.parametrize("component", [Upload, GhostUpload]) +def test_on_drop_rejected_uses_file_rejection_payload_spec(component): + rejected_spec = component.get_event_triggers()["on_drop_rejected"] + placeholders, _ = parse_args_spec(rejected_spec) + + assert placeholders[0]._var_type == list[dict[str, Any]] + + def test_upload_files_chunk_requires_background(): with pytest.raises(TypeError) as err: event.resolve_upload_chunk_handler_param(