108 lines
2.9 KiB
Python
108 lines
2.9 KiB
Python
"""Import all the components."""
|
|
|
|
from pynecone import utils
|
|
from pynecone.propcond import PropCond
|
|
|
|
from .component import Component
|
|
from .datadisplay import *
|
|
from .disclosure import *
|
|
from .feedback import *
|
|
from .forms import *
|
|
from .graphing import *
|
|
from .layout import *
|
|
from .media import *
|
|
from .navigation import *
|
|
from .overlay import *
|
|
from .typography import *
|
|
|
|
# Add the convenience methods for all the components.
|
|
locals().update(
|
|
{
|
|
utils.to_snake_case(name): value.create
|
|
for name, value in locals().items()
|
|
if isinstance(value, type) and issubclass(value, Component)
|
|
}
|
|
)
|
|
|
|
|
|
# Add responsive styles shortcuts.
|
|
def mobile_only(*children, **props):
|
|
"""Create a component that is only visible on mobile.
|
|
|
|
Args:
|
|
*children: The children to pass to the component.
|
|
**props: The props to pass to the component.
|
|
|
|
Returns:
|
|
The component.
|
|
"""
|
|
return Box.create(*children, **props, display=["block", "none", "none", "none"])
|
|
|
|
|
|
def tablet_only(*children, **props):
|
|
"""Create a component that is only visible on tablet.
|
|
|
|
Args:
|
|
*children: The children to pass to the component.
|
|
**props: The props to pass to the component.
|
|
|
|
Returns:
|
|
The component.
|
|
"""
|
|
return Box.create(*children, **props, display=["none", "block", "block", "none"])
|
|
|
|
|
|
def desktop_only(*children, **props):
|
|
"""Create a component that is only visible on desktop.
|
|
|
|
Args:
|
|
*children: The children to pass to the component.
|
|
**props: The props to pass to the component.
|
|
|
|
Returns:
|
|
The component.
|
|
"""
|
|
return Box.create(*children, **props, display=["none", "none", "none", "block"])
|
|
|
|
|
|
def tablet_and_desktop(*children, **props):
|
|
"""Create a component that is only visible on tablet and desktop.
|
|
|
|
Args:
|
|
*children: The children to pass to the component.
|
|
**props: The props to pass to the component.
|
|
|
|
Returns:
|
|
The component.
|
|
"""
|
|
return Box.create(*children, **props, display=["none", "block", "block", "block"])
|
|
|
|
|
|
def mobile_and_tablet(*children, **props):
|
|
"""Create a component that is only visible on mobile and tablet.
|
|
|
|
Args:
|
|
*children: The children to pass to the component.
|
|
**props: The props to pass to the component.
|
|
|
|
Returns:
|
|
The component.
|
|
"""
|
|
return Box.create(*children, **props, display=["block", "block", "block", "none"])
|
|
|
|
|
|
def cond(cond_var, c1, c2=None):
|
|
"""Create a conditional component or Prop.
|
|
|
|
Args:
|
|
cond_var: The cond to determine which component to render.
|
|
c1: The component or prop to render if the cond_var is true.
|
|
c2: The component or prop to render if the cond_var is false.
|
|
|
|
Returns:
|
|
The conditional component.
|
|
"""
|
|
if isinstance(c1, Component) and isinstance(c2, Component):
|
|
return Cond.create(cond_var, c1, c2)
|
|
return PropCond.create(cond_var, c1, c2)
|