# AUTO GENERATED FILE - DO NOT EDIT

import typing  # noqa: F401
from typing_extensions import TypedDict, NotRequired, Literal # noqa: F401
from dash.development.base_component import Component, _explicitize_args

ComponentSingleType = typing.Union[str, int, float, Component, None]
ComponentType = typing.Union[
    ComponentSingleType,
    typing.Sequence[ComponentSingleType],
]

NumberType = typing.Union[
    typing.SupportsFloat, typing.SupportsInt, typing.SupportsComplex
]


class Cascader(Component):
    """A Cascader component.


Keyword arguments:

- id (boolean | number | string | dict | list; optional):
    Unique ID to identify this component in Dash callbacks.

- className (boolean | number | string | dict | list; optional):
    Additional CSS class applied to the outer wrapper div.

- clearable (boolean | number | string | dict | list; optional):
    Show a clear button to reset the selection.

- closeOnSelect (boolean | number | string | dict | list; optional):
    If False, the menu will not close when a value is selected.
    Defaults to `!multi`.

- debounce (boolean | number | string | dict | list; optional):
    If True, the component will not fire its callback until the panel
    is closed (by clicking outside, pressing Escape, or clicking the
    trigger). This reduces the number of callbacks fired during
    multi-select interactions.

- disabled (boolean | number | string | dict | list; optional):
    Disable the component entirely.

- labels (boolean | number | string | dict | list; optional):
    Text for customizing the labels rendered by this component.

- maxHeight (boolean | number | string | dict | list; optional):
    Maximum height of the panel in pixels.

- multi (boolean | number | string | dict | list; optional):
    Enable multi-select. When True, `value` is an array and checkboxes
    are shown alongside options.

- optionHeight (boolean | number | string | dict | list; optional):
    Height in pixels for each option row. When omitted, rows size
    naturally.

- options (boolean | number | string | dict | list; required):
    Tree-structured options. Accepts either the standard list-of-dicts
    format or a nested dict/list shorthand:   {\"Asia\": [\"Japan\",
    \"China\"], \"Europe\": {\"Western\": [\"France\"]}} Each dict key
    becomes a parent node (label = value = key). List items become
    leaves; scalars use the scalar as both label and value. In the
    standard format each node has a `label` and `value`; nodes with a
    `children` array are parents, nodes without are leaves. Only leaf
    values are ever stored in `value`.

- persisted_props (boolean | number | string | dict | list; optional):
    Properties whose user interactions will persist after refreshing
    the component or the page. Since only `value` is allowed this prop
    can normally be ignored.

- persistence (boolean | number | string | dict | list; optional):
    Used to allow user interactions in this component to be persisted
    when the component - or the page - is refreshed. If `persistence`
    is truthy and hasn't changed from its previous value, a `value`
    that the user has changed while using the app will keep that
    change, as long as the new `value` also matches what was given
    originally. Used in conjunction with `persistence_type`.

- persistence_type (boolean | number | string | dict | list; optional):
    Where persisted user changes will be stored: memory: only kept in
    memory, reset on page refresh. local: window.localStorage, data is
    kept after the browser quit. session: window.sessionStorage, data
    is cleared once the browser quit.

- placeholder (boolean | number | string | dict | list; optional):
    Placeholder text shown in the trigger when nothing is selected.

- search_value (boolean | number | string | dict | list; optional):
    The value typed in the search input for filtering options.

- searchable (boolean | number | string | dict | list; optional):
    Show a search input at the top of the panel.

- value (boolean | number | string | dict | list; optional):
    Selected value(s). When `multi=False`: a single leaf value (string
    or number) or None. When `multi=True`: an array of leaf values."""
    _children_props: typing.List[str] = []
    _base_nodes = ['children']
    _namespace = 'vizro_dash_components'
    _type = 'Cascader'


    def __init__(
        self,
        id: typing.Optional[typing.Union[str, dict]] = None,
        options: typing.Optional[typing.Any] = None,
        value: typing.Optional[typing.Any] = None,
        multi: typing.Optional[typing.Any] = None,
        searchable: typing.Optional[typing.Any] = None,
        clearable: typing.Optional[typing.Any] = None,
        placeholder: typing.Optional[typing.Any] = None,
        disabled: typing.Optional[typing.Any] = None,
        maxHeight: typing.Optional[typing.Any] = None,
        className: typing.Optional[typing.Any] = None,
        style: typing.Optional[typing.Any] = None,
        optionHeight: typing.Optional[typing.Any] = None,
        debounce: typing.Optional[typing.Any] = None,
        closeOnSelect: typing.Optional[typing.Any] = None,
        search_value: typing.Optional[typing.Any] = None,
        labels: typing.Optional[typing.Any] = None,
        persistence: typing.Optional[typing.Any] = None,
        persisted_props: typing.Optional[typing.Any] = None,
        persistence_type: typing.Optional[typing.Any] = None,
        **kwargs
    ):
        self._prop_names = ['id', 'className', 'clearable', 'closeOnSelect', 'debounce', 'disabled', 'labels', 'maxHeight', 'multi', 'optionHeight', 'options', 'persisted_props', 'persistence', 'persistence_type', 'placeholder', 'search_value', 'searchable', 'style', 'value']
        self._valid_wildcard_attributes =            []
        self.available_properties = ['id', 'className', 'clearable', 'closeOnSelect', 'debounce', 'disabled', 'labels', 'maxHeight', 'multi', 'optionHeight', 'options', 'persisted_props', 'persistence', 'persistence_type', 'placeholder', 'search_value', 'searchable', 'style', 'value']
        self.available_wildcard_properties =            []
        _explicit_args = kwargs.pop('_explicit_args')
        _locals = locals()
        _locals.update(kwargs)  # For wildcard attrs and excess named props
        args = {k: _locals[k] for k in _explicit_args}

        for k in ['options']:
            if k not in args:
                raise TypeError(
                    'Required argument `' + k + '` was not specified.')

        super(Cascader, self).__init__(**args)

setattr(Cascader, "__init__", _explicitize_args(Cascader.__init__))
