12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- """Form components."""
- from pynecone.components.component import Component
- from pynecone.components.libs.chakra import ChakraComponent
- from pynecone.var 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"
|