update slider so width automatically set (#2542)

This commit is contained in:
Tom Gotsman 2024-02-07 12:06:41 -08:00 committed by GitHub
parent ce867d2f81
commit 57b75c6497
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 60 additions and 24 deletions

View File

@ -1,6 +1,7 @@
"""Interactive components provided by @radix-ui/themes."""
from typing import Any, Dict, List, Literal, Union
from typing import Any, Dict, List, Literal, Optional, Union
from reflex.components.component import Component
from reflex.constants import EventTriggers
from reflex.vars import Var
@ -35,7 +36,7 @@ class Slider(RadixThemesComponent):
radius: Var[LiteralRadius]
# The value of the slider when initially rendered. Use when you do not need to control the state of the slider.
default_value: Var[List[Union[float, int]]]
default_value: Var[Union[List[Union[float, int]], float, int]]
# The controlled value of the slider. Must be used in conjunction with onValueChange.
value: Var[List[Union[float, int]]]
@ -72,3 +73,37 @@ class Slider(RadixThemesComponent):
EventTriggers.ON_CHANGE: lambda e0: [e0],
EventTriggers.ON_VALUE_COMMIT: lambda e0: [e0],
}
@classmethod
def create(
cls,
*children,
width: Optional[str] = "100%",
**props,
) -> Component:
"""Create a Slider component.
Args:
*children: The children of the component.
width: The width of the slider.
**props: The properties of the component.
Returns:
The component.
"""
default_value = props.pop("default_value", [50])
if isinstance(default_value, Var):
if issubclass(default_value._var_type, (int, float)):
default_value = [default_value]
elif isinstance(default_value, (int, float)):
default_value = [default_value]
style = props.setdefault("style", {})
style.update(
{
"width": width,
}
)
return super().create(*children, default_value=default_value, **props)

View File

@ -7,7 +7,8 @@ from typing import Any, Dict, Literal, Optional, Union, overload
from reflex.vars import Var, BaseVar, ComputedVar
from reflex.event import EventChain, EventHandler, EventSpec
from reflex.style import Style
from typing import Any, Dict, List, Literal, Union
from typing import Any, Dict, List, Literal, Optional, Union
from reflex.components.component import Component
from reflex.constants import EventTriggers
from reflex.vars import Var
from ..base import LiteralAccentColor, LiteralRadius, RadixThemesComponent
@ -19,7 +20,17 @@ class Slider(RadixThemesComponent):
def create( # type: ignore
cls,
*children,
color: Optional[Union[Var[str], str]] = None,
width: Optional[str] = "100%",
as_child: Optional[Union[Var[bool], bool]] = None,
size: Optional[
Union[Var[Literal["1", "2", "3"]], Literal["1", "2", "3"]]
] = None,
variant: Optional[
Union[
Var[Literal["classic", "surface", "soft"]],
Literal["classic", "surface", "soft"],
]
] = None,
color_scheme: Optional[
Union[
Var[
@ -82,16 +93,6 @@ class Slider(RadixThemesComponent):
],
]
] = None,
as_child: Optional[Union[Var[bool], bool]] = None,
size: Optional[
Union[Var[Literal["1", "2", "3"]], Literal["1", "2", "3"]]
] = None,
variant: Optional[
Union[
Var[Literal["classic", "surface", "soft"]],
Literal["classic", "surface", "soft"],
]
] = None,
high_contrast: Optional[Union[Var[bool], bool]] = None,
radius: Optional[
Union[
@ -100,7 +101,10 @@ class Slider(RadixThemesComponent):
]
] = None,
default_value: Optional[
Union[Var[List[Union[float, int]]], List[Union[float, int]]]
Union[
Var[Union[List[Union[float, int]], float, int]],
Union[List[Union[float, int]], float, int],
]
] = None,
value: Optional[
Union[Var[List[Union[float, int]]], List[Union[float, int]]]
@ -176,18 +180,15 @@ class Slider(RadixThemesComponent):
] = None,
**props
) -> "Slider":
"""Create a new component instance.
Will prepend "RadixThemes" to the component tag to avoid conflicts with
other UI libraries for common names, like Text and Button.
"""Create a Slider component.
Args:
*children: Child components.
color: map to CSS default color property.
color_scheme: map to radix color property.
*children: The children of the component.
width: The width of the slider.
as_child: Change the default rendered element for the one passed as a child, merging their props and behavior.
size: Button size "1" - "3"
variant: Variant of button
color_scheme: Override theme color for button
high_contrast: Whether to render the button with higher contrast color against background
radius: Override theme radius for button: "none" | "small" | "medium" | "large" | "full"
default_value: The value of the slider when initially rendered. Use when you do not need to control the state of the slider.
@ -205,9 +206,9 @@ class Slider(RadixThemesComponent):
autofocus: Whether the component should take the focus once the page is loaded
_rename_props: props to change the name of
custom_attrs: custom attribute
**props: Component properties.
**props: The properties of the component.
Returns:
A new component instance.
The component.
"""
...