reflex/reflex/components/chakra/media/image.py
Alek Petuskey 00a8054850
Individually Import Chakra Packages (#2405)
* Base lib switch

Co-authored-by: Alek Petuskey <alekpetuskey@aleks-mbp.lan>
2024-01-25 10:22:46 -08:00

82 lines
2.4 KiB
Python

"""An image component."""
from __future__ import annotations
from typing import Any, Optional, Union
from reflex.components.chakra import ChakraComponent, LiteralImageLoading
from reflex.components.component import Component
from reflex.vars import Var
class Image(ChakraComponent):
"""Display an image."""
library = "@chakra-ui/image@2.1.0"
tag = "Image"
alias = "ChakraImage"
# How to align the image within its bounds. It maps to css `object-position` property.
align: Var[str]
# Fallback Reflex component to show if image is loading or image fails.
fallback: Optional[Component] = None
# Fallback image src to show if image is loading or image fails.
fallback_src: Var[str]
# How the image to fit within its bounds. It maps to css `object-fit` property.
fit: Var[str]
# The native HTML height attribute to the passed to the img.
html_height: Var[str]
# The native HTML width attribute to the passed to the img.
html_width: Var[str]
# If true, opt out of the fallbackSrc logic and use as img.
ignore_fallback: Var[bool]
# "eager" | "lazy"
loading: Var[LiteralImageLoading]
# The path/url to the image or PIL image object.
src: Var[Any]
# The alt text of the image.
alt: Var[str]
# Provide multiple sources for an image, allowing the browser
# to select the most appropriate source based on factors like
# screen resolution and device capabilities.
# Learn more _[here](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images)_
src_set: Var[str]
def get_event_triggers(self) -> dict[str, Union[Var, Any]]:
"""Get the event triggers for the component.
Returns:
The event triggers.
"""
return {
**super().get_event_triggers(),
"on_error": lambda: [],
"on_load": lambda: [],
}
@classmethod
def create(cls, *children, **props) -> Component:
"""Create an Image component.
Args:
*children: The children of the image.
**props: The props of the image.
Returns:
The Image component.
"""
src = props.get("src", None)
if src is not None and not isinstance(src, (Var)):
props["src"] = Var.create(value=src, _var_is_string=True)
return super().create(*children, **props)