remove weird hacks

This commit is contained in:
Khaleel Al-Adhami 2024-11-21 11:34:33 -08:00
parent 0cf2605f38
commit 0319f3d671
3 changed files with 32 additions and 19 deletions

View File

@ -15,6 +15,8 @@ from reflex.utils.imports import ImportVar
from reflex.utils.serializers import serializer
from reflex.vars import VarData
from reflex.vars.base import LiteralVar, Var
from reflex.vars.function import FunctionVar
from reflex.vars.object import ObjectVar
LiteralPosition = Literal[
"top-left",
@ -232,7 +234,9 @@ class Toaster(Component):
return [hook]
@staticmethod
def send_toast(message: str = "", level: str | None = None, **props) -> EventSpec:
def send_toast(
message: str | Var = "", level: str | None = None, **props
) -> EventSpec:
"""Send a toast message.
Args:
@ -250,22 +254,27 @@ class Toaster(Component):
raise ValueError(
"Toaster component must be created before sending a toast. (use `rx.toast.provider()`)"
)
toast_command = f"{toast_ref}.{level}" if level is not None else toast_ref
toast_command = (
ObjectVar.__getattr__(toast_ref.to(dict), level) if level else toast_ref
).to(FunctionVar)
if isinstance(message, Var):
props.setdefault("title", message)
message = ""
elif message == "" and "title" not in props and "description" not in props:
raise ValueError("Toast message or title or description must be provided.")
if props:
args = LiteralVar.create(ToastProps(component_name="rx.toast", **props)) # type: ignore
toast = f"{toast_command}(`{message}`, {str(args)})"
else:
toast = f"{toast_command}(`{message}`)"
toast_action = Var(_js_expr=toast)
return run_script(toast_action)
if props:
args = LiteralVar.create(ToastProps(component_name="rx.toast", **props)) # pyright: ignore [reportCallIssue]
toast = toast_command.call(message, args)
else:
toast = toast_command.call(message)
return run_script(toast)
@staticmethod
def toast_info(message: str = "", **kwargs):
def toast_info(message: str | Var = "", **kwargs):
"""Display an info toast message.
Args:
@ -278,7 +287,7 @@ class Toaster(Component):
return Toaster.send_toast(message, level="info", **kwargs)
@staticmethod
def toast_warning(message: str = "", **kwargs):
def toast_warning(message: str | Var = "", **kwargs):
"""Display a warning toast message.
Args:
@ -291,7 +300,7 @@ class Toaster(Component):
return Toaster.send_toast(message, level="warning", **kwargs)
@staticmethod
def toast_error(message: str = "", **kwargs):
def toast_error(message: str | Var = "", **kwargs):
"""Display an error toast message.
Args:
@ -304,7 +313,7 @@ class Toaster(Component):
return Toaster.send_toast(message, level="error", **kwargs)
@staticmethod
def toast_success(message: str = "", **kwargs):
def toast_success(message: str | Var = "", **kwargs):
"""Display a success toast message.
Args:

View File

@ -59,16 +59,16 @@ class Toaster(Component):
def add_hooks(self) -> list[Var | str]: ...
@staticmethod
def send_toast(
message: str = "", level: str | None = None, **props
message: str | Var = "", level: str | None = None, **props
) -> EventSpec: ...
@staticmethod
def toast_info(message: str = "", **kwargs): ...
def toast_info(message: str | Var = "", **kwargs): ...
@staticmethod
def toast_warning(message: str = "", **kwargs): ...
def toast_warning(message: str | Var = "", **kwargs): ...
@staticmethod
def toast_error(message: str = "", **kwargs): ...
def toast_error(message: str | Var = "", **kwargs): ...
@staticmethod
def toast_success(message: str = "", **kwargs): ...
def toast_success(message: str | Var = "", **kwargs): ...
@staticmethod
def toast_dismiss(id: Var | str | None = None): ...
@overload
@ -176,7 +176,7 @@ class ToastNamespace(ComponentNamespace):
@staticmethod
def __call__(
message: str = "", level: Optional[str] = None, **props
message: Union[str, Var] = "", level: Optional[str] = None, **props
) -> "Optional[EventSpec]":
"""Send a toast message.

View File

@ -576,6 +576,10 @@ def _isinstance(obj: Any, cls: GenericType, nested: bool = False) -> bool:
return does_obj_satisfy_typed_dict(obj, cls)
return isinstance(obj, dict)
# cls is a float
if cls is float:
return isinstance(obj, (float, int))
# cls is a simple class
return isinstance(obj, cls)