Form
Forms allow users to enter data that can be submitted while providing alignment and styling for form fields.
Example
from deephaven import ui
@ui.component
def ui_form():
    return ui.form(
        ui.text_field(name="name", label="Enter name"),
        ui.button("Submit", type="submit"),
    )
my_form = ui_form()

Events
Forms can handle three events:
- Submit: Triggered when the form is submitted. Users can define a callback function to handle the form data upon submission.
 - Reset: Triggered when the form is reset. This event can be used to clear the form fields or reset them to their initial values.
 - Invalid: Triggered when the form validation fails. This event allows users to handle validation errors and provide feedback.
 
Submit
from deephaven import ui
@ui.component
def ui_form_submit():
    return ui.form(
        ui.text_field(name="name", label="Enter name"),
        ui.number_field(name="age", label="Enter age"),
        ui.button("Submit", type="submit"),
        on_submit=lambda e: print(f"Form submitted: {e}"),
    )
my_form_submit = ui_form_submit()
Reset
from deephaven import ui
@ui.component
def ui_form_submit():
    return ui.form(
        ui.text_field(name="name", label="Enter name"),
        ui.number_field(name="age", label="Enter age"),
        ui.button("Reset", type="reset"),
        on_reset=lambda e: print(f"Form reset"),
    )
my_form_submit = ui_form_submit()
Invalid
from deephaven import ui
@ui.component
def ui_form_invalid():
    value, set_value = ui.use_state("")
    return ui.form(
        ui.text_field(
            name="name",
            label="Enter name",
            value=value,
            on_change=set_value,
            is_required=True,
        ),
        ui.number_field(name="age", label="Enter age"),
        ui.button("Submit", type="submit"),
        on_invalid=lambda e: print(f"Form invalid"),
        validation_behavior="native",
    )
my_form_invalid = ui_form_invalid()
Action
The action prop enables forms to be sent to a URL. The example below communicates with a 3rd party server and displays the content received from the form.
from deephaven import ui
@ui.component
def ui_form_action():
    return ui.form(
        ui.text_field(name="first_name", default_value="Mickey", label="First Name"),
        ui.text_field(name="last_name", default_value="Mouse", label="Last Name"),
        ui.button("Submit", type="submit"),
        action="https://postman-echo.com/get",
        method="get",
        target="_blank",
    )
my_form_action = ui_form_action()
Validation Behavior
By default, validation errors will be displayed in real-time as the fields are edited, but form submission is not blocked. To enable this and native HTML form validation, set validation_behavior to “native”.
from deephaven import ui
@ui.component
def ui_form_validation_behavior():
    return ui.form(
        ui.text_field(name="email", label="Email", type="email", is_required=True),
        ui.button("Submit", type="submit"),
        validation_behavior="native",
    )
my_form_validation_behavior = ui_form_validation_behavior()
Quiet
The is_quiet prop makes form fields “quiet”. This can be useful when its corresponding styling should not distract users from surrounding content.
from deephaven import ui
@ui.component
def ui_form_quiet():
    return ui.form(
        ui.text_field(name="name", label="Enter name"),
        is_quiet=True,
    )
my_form_quiet = ui_form_quiet()
Emphasized
The is_emphasized prop adds visual prominence to the form fields. This can be useful when its corresponding styling should catch the user’s attention.
from deephaven import ui
@ui.component
def ui_form_emphasized():
    return ui.form(
        ui.text_field(name="name", label="Enter name"),
        ui.radio_group(
            ui.radio("Video games", value="games"),
            ui.radio("Reading", value="reading"),
            ui.radio("Sports", value="sports"),
            label="Favorite hobby",
            default_value="games",
        ),
        is_emphasized=True,
    )
my_form = ui_form_emphasized()
Disabled
The is_disabled prop disables form fields to prevent user interaction. This is useful when the fields should be visible but not available for input.
from deephaven import ui
@ui.component
def ui_form_disabled():
    return ui.form(
        ui.text_field(name="name", label="Enter name"),
        is_disabled=True,
    )
my_form_disabled = ui_form_disabled()
Necessity Indicator
The necessity_indicator prop dictates whether form labels will use an icon or a label to outline which form fields are required. The default is “icon”.
from deephaven import ui
@ui.component
def ui_form_indicator():
    def icon_indicator():
        return ui.form(
            ui.text_field(name="name", label="Name", is_required=True),
            ui.text_field(name="age", label="Age"),
            is_required=True,
        )
    def label_indicator():
        return ui.form(
            ui.text_field(name="name", label="Name", is_required=True),
            ui.text_field(name="age", label="Age"),
            is_required=True,
            necessity_indicator="label",
        )
    return [icon_indicator(), label_indicator()]
my_form_required = ui_form_indicator()
Read only
The is_read_only prop makes form fields read-only to prevent user interaction. This is different than setting the is_disabled prop since the fields remains focusable, and the contents of the fields remain visible.
from deephaven import ui
@ui.component
def ui_form_read_only():
    return ui.form(
        ui.text_field(name="name", label="Name"),
        is_read_only=True,
    )
my_form_read_only = ui_form_read_only()
API Reference
Forms allow users to enter data that can be submitted while providing alignment and styling for form fields
Returns: Element The rendered form element.
| Parameters | Type | Default | Description | 
|---|---|---|---|
| *children | Any | The content to render within the container. | |
| is_quiet | bool | None  | None | Whether the form should be quiet. | 
| is_emphasized | bool | None  | None | Whether the form should be emphasized. | 
| is_disabled | bool | None  | None | Whether the form should be disabled. | 
| is_required | bool | None  | None | Whether the form should be required. | 
| is_read_only | bool | None  | None | Whether the form should be read only. | 
| validation_state | Literal['valid', 'invalid'] | None  | None | Whether the Form elements should display their "valid" or "invalid" visual styling. | 
| validation_behavior | Literal['aria', 'native'] | None  | 'aria' | Whether to use native HTML form validation to prevent form submission when a field value is missing or invalid, or mark fields as required or invalid via ARIA. | 
| validation_errors | Dict[str, str | List[str]] | None  | None | The validation errors for the form. | 
| action | str | None  | None | The URL to submit the form data to. | 
| enc_type | Literal['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'] | None  | None | The enctype attribute specifies how the form-data should be encoded when submitting it to the server. | 
| method | Literal['get', 'post', 'dialog'] | None  | None | The HTTP method of the form. | 
| target | Literal['_self', '_blank', '_parent', '_top'] | None  | None | The target attribute specifies a name or a keyword that indicates where to display the response that is received after submitting the form. | 
| auto_complete | Literal['on', 'off'] | None  | None | Indicates whether input elements can by default have their values automatically completed by the browser. | 
| auto_capitalize | Literal['off', 'none', 'on', 'sentences', 'words', 'characters'] | None  | None | Controls whether inputted text is automatically capitalized and, if so, in what manner. | 
| label_position | Literal['top', 'side'] | 'top' | The label's overall position relative to the element it is labeling. | 
| label_align | Literal['start', 'end'] | None  | None | The label's horizontal alignment relative to the element it is labeling. | 
| necessity_indicator | Literal['icon', 'label'] | None  | None | Whether the required state should be shown as an icon or text. | 
| key | str | None  | None | A unique identifier used by React to render elements in a list. |