Skip to main content

Module modal

Module modal 

Source
Expand description

Modal container widget (overlay layer), dialog presets, modal stack management, and animations.

§Animation System (bd-39vx.4)

Modals support smooth entrance and exit animations:

  • Scale-in/out: Classic modal pop effect
  • Fade-in/out: Opacity transition
  • Slide animations: Slide from top/bottom
  • Backdrop fade: Independent backdrop opacity animation
  • Reduced motion: Respects accessibility preferences

Use ModalAnimationState to track animation progress and compute interpolated values for scale, opacity, and position.

§Focus Management (bd-39vx.5)

Modals can integrate with crate::focus::FocusManager for accessibility:

  • Auto-focus: First focusable element receives focus when modal opens
  • Focus trap: Tab navigation is constrained within the modal
  • Focus restore: Previous focus is restored when modal closes
  • Escape to close: Already built into modal handling

Use FocusAwareModalStack for automatic focus management, or integrate manually using ModalStack::push_with_focus with your own FocusManager.

§Example

use ftui_widgets::modal::{FocusAwareModalStack, WidgetModalEntry, ModalAnimationState};

let mut modals = FocusAwareModalStack::new();
let mut animation = ModalAnimationState::new();

// Start opening animation
animation.start_opening();

// Push modal with focus trap
modals.push_with_trap(
    Box::new(WidgetModalEntry::new(dialog).with_focusable_ids(vec![1, 2, 3])),
    vec![1, 2, 3],
);

Re-exports§

pub use focus_integration::FocusAwareModalStack;

Modules§

focus_integration
Focus-aware modal integration for automatic focus trap management.

Structs§

BackdropConfig
Backdrop configuration (color + opacity).
Dialog
A dialog widget built on Modal.
DialogBuilder
Builder for custom dialogs.
DialogButton
A button in a dialog.
DialogConfig
Dialog configuration.
DialogState
Dialog state for handling input and button focus.
Modal
Modal container widget.
ModalAnimationConfig
Animation configuration for modals.
ModalAnimationState
Current animation state for a modal.
ModalConfig
Modal configuration.
ModalFocusIntegration
Helper for integrating ModalStack with FocusManager.
ModalId
Unique identifier for a modal in the stack.
ModalResult
Result returned when a modal is closed.
ModalSizeConstraints
Modal size constraints (min/max width/height).
ModalStack
Stack of active modals with z-ordering and input routing.
ModalState
Stateful helper for modal close behavior.
WidgetModalEntry
A simple modal entry that wraps any Widget.

Enums§

DialogKind
Dialog type variants.
DialogResult
Result from a dialog interaction.
ModalAction
Modal action emitted by ModalState::handle_event.
ModalAnimationPhase
Current phase of the modal animation lifecycle.
ModalEasing
Easing function for modal animations.
ModalEntranceAnimation
Entrance animation type for modal content.
ModalExitAnimation
Exit animation type for modal content.
ModalPosition
Modal positioning options.
ModalResultData
Modal result data variants.

Constants§

DIALOG_HIT_BUTTON
Hit region for dialog buttons.
MODAL_HIT_BACKDROP
Hit region tag for the modal backdrop.
MODAL_HIT_CONTENT
Hit region tag for the modal content.

Traits§

StackModal
Trait for modal content that can be managed in the stack.

Type Aliases§

ModalFocusId
A FocusId alias for modal focus management.