71 lines
1.6 KiB
Python
71 lines
1.6 KiB
Python
"""A transition Component."""
|
|
from typing import Union
|
|
|
|
from pynecone.components.libs.chakra import ChakraComponent
|
|
from pynecone.utils import imports
|
|
from pynecone.vars import ImportVar, Var
|
|
|
|
|
|
class Transition(ChakraComponent):
|
|
"""Base componemt of all transitions."""
|
|
|
|
in_: Var[bool]
|
|
|
|
unmount_on_exit: Var[bool] = False # type: ignore
|
|
|
|
def _get_imports(self) -> imports.ImportDict:
|
|
return imports.merge_imports(
|
|
super()._get_imports(),
|
|
{"@chakra-ui/react": {ImportVar(tag="useDisclosure")}},
|
|
)
|
|
|
|
|
|
class Fade(Transition):
|
|
"""Fade component cab be used show and hide content of your app."""
|
|
|
|
tag = "Fade"
|
|
|
|
|
|
class ScaleFade(Transition):
|
|
"""Fade component can be scaled and reverse your app."""
|
|
|
|
tag = "ScaleFade"
|
|
|
|
unmount_on_exit: Var[bool] = False # type: ignore
|
|
|
|
initial_scale: Var[float] = 0.95 # type: ignore
|
|
|
|
reverse: Var[bool] = True # type: ignore
|
|
|
|
|
|
class Slide(Transition):
|
|
"""Side can be used show content below your app."""
|
|
|
|
tag = "Slide"
|
|
|
|
direction: Var[str] = "right" # type: ignore
|
|
|
|
|
|
class SlideFade(Transition):
|
|
"""SlideFade component."""
|
|
|
|
tag = "SlideFade"
|
|
|
|
offsetX: Var[Union[str, int]] = 0 # type: ignore
|
|
|
|
offsetY: Var[Union[str, int]] = 8 # type: ignore
|
|
|
|
reverse: Var[bool] = True # type: ignore
|
|
|
|
|
|
class Collapse(Transition):
|
|
"""Collapse component can collapse some content."""
|
|
|
|
tag = "Collapse"
|
|
|
|
animateOpacity: Var[bool] = True # type: ignore
|
|
|
|
endingHeight: Var[str] = "auto" # type: ignore
|
|
|
|
startingHeight: Var[Union[str, int]] = 0 # type: ignore
|