92 lines
2.3 KiB
Python
92 lines
2.3 KiB
Python
"""Form components."""
|
|
|
|
from pynecone.components.component import Component
|
|
from pynecone.components.libs.chakra import ChakraComponent
|
|
from pynecone.vars import Var
|
|
|
|
|
|
class FormControl(ChakraComponent):
|
|
"""Provide context to form components."""
|
|
|
|
tag = "FormControl"
|
|
|
|
# If true, the form control will be disabled.
|
|
is_disabled: Var[bool]
|
|
|
|
# If true, the form control will be invalid.
|
|
is_invalid: Var[bool]
|
|
|
|
# If true, the form control will be readonly
|
|
is_read_only: Var[bool]
|
|
|
|
# If true, the form control will be required.
|
|
is_required: Var[bool]
|
|
|
|
# The label text used to inform users as to what information is requested for a text field.
|
|
label: Var[str]
|
|
|
|
@classmethod
|
|
def create(
|
|
cls,
|
|
*children,
|
|
label=None,
|
|
input=None,
|
|
help_text=None,
|
|
error_message=None,
|
|
**props
|
|
) -> Component:
|
|
"""Create a form control component.
|
|
|
|
Args:
|
|
children: The children of the form control.
|
|
label: The label of the form control.
|
|
input: The input of the form control.
|
|
help_text: The help text of the form control.
|
|
error_message: The error message of the form control.
|
|
props: The properties of the form control.
|
|
|
|
Raises:
|
|
AttributeError: raise an error if missing required kwargs.
|
|
|
|
Returns:
|
|
The form control component.
|
|
"""
|
|
if len(children) == 0:
|
|
children = []
|
|
|
|
if label:
|
|
children.append(FormLabel.create(*label))
|
|
|
|
if not input:
|
|
raise AttributeError("input keyword argument is required")
|
|
children.append(input)
|
|
|
|
if help_text:
|
|
children.append(FormHelperText.create(*help_text))
|
|
|
|
if error_message:
|
|
children.append(FormErrorMessage.create(*error_message))
|
|
|
|
return super().create(*children, **props)
|
|
|
|
|
|
class FormHelperText(ChakraComponent):
|
|
"""A form helper text component."""
|
|
|
|
tag = "FormHelperText"
|
|
|
|
|
|
class FormLabel(ChakraComponent):
|
|
"""A form label component."""
|
|
|
|
tag = "FormLabel"
|
|
|
|
# Link
|
|
html_for: Var[str]
|
|
|
|
|
|
class FormErrorMessage(ChakraComponent):
|
|
"""A form error message component."""
|
|
|
|
tag = "FormErrorMessage"
|