reflex/reflex/components/radix/themes/components/dialog.py
Khaleel Al-Adhami b9d73edd66
add metainfo to keyevent (#4287)
* allow for event handlers to ignore args

* use a constant

* dang it darglint

* forgor

* keep the tests but move them to valid place

* add metainfo to keyevent

* format code

* fix pyi files

* generate all prefixes of event types

* change format rule
2024-11-06 15:10:02 -08:00

89 lines
2.5 KiB
Python

"""Interactive components provided by @radix-ui/themes."""
from typing import Literal
from reflex.components.component import ComponentNamespace
from reflex.components.core.breakpoints import Responsive
from reflex.components.el import elements
from reflex.event import EventHandler, no_args_event_spec, passthrough_event_spec
from reflex.vars.base import Var
from ..base import RadixThemesComponent, RadixThemesTriggerComponent
class DialogRoot(RadixThemesComponent):
"""Root component for Dialog."""
tag = "Dialog.Root"
# The controlled open state of the dialog.
open: Var[bool]
# Fired when the open state changes.
on_open_change: EventHandler[passthrough_event_spec(bool)]
# The open state of the dialog when it is initially rendered. Use when you do not need to control its open state.
default_open: Var[bool]
class DialogTrigger(RadixThemesTriggerComponent):
"""Trigger an action or event, to open a Dialog modal."""
tag = "Dialog.Trigger"
class DialogTitle(RadixThemesComponent):
"""Title component to display inside a Dialog modal."""
tag = "Dialog.Title"
class DialogContent(elements.Div, RadixThemesComponent):
"""Content component to display inside a Dialog modal."""
tag = "Dialog.Content"
# DialogContent size "1" - "4"
size: Var[Responsive[Literal["1", "2", "3", "4"]]]
# Fired when the dialog is opened.
on_open_auto_focus: EventHandler[no_args_event_spec]
# Fired when the dialog is closed.
on_close_auto_focus: EventHandler[no_args_event_spec]
# Fired when the escape key is pressed.
on_escape_key_down: EventHandler[no_args_event_spec]
# Fired when the pointer is down outside the dialog.
on_pointer_down_outside: EventHandler[no_args_event_spec]
# Fired when the pointer interacts outside the dialog.
on_interact_outside: EventHandler[no_args_event_spec]
class DialogDescription(RadixThemesComponent):
"""Description component to display inside a Dialog modal."""
tag = "Dialog.Description"
class DialogClose(RadixThemesTriggerComponent):
"""Close button component to close an open Dialog modal."""
tag = "Dialog.Close"
class Dialog(ComponentNamespace):
"""Dialog components namespace."""
root = __call__ = staticmethod(DialogRoot.create)
trigger = staticmethod(DialogTrigger.create)
title = staticmethod(DialogTitle.create)
content = staticmethod(DialogContent.create)
description = staticmethod(DialogDescription.create)
close = staticmethod(DialogClose.create)
dialog = Dialog()