Skip to main content

ModalFocusIntegration

Struct ModalFocusIntegration 

Source
pub struct ModalFocusIntegration<'a> { /* private fields */ }
Expand description

Helper for integrating ModalStack with FocusManager.

This struct provides a convenient API for:

  • Pushing modals with automatic focus trap setup
  • Popping modals with focus restoration
  • Managing focus groups for nested modals

§Example

use ftui_widgets::modal::{ModalStack, ModalFocusIntegration};
use ftui_widgets::focus::FocusManager;

let mut stack = ModalStack::new();
let mut focus = FocusManager::new();
let mut integrator = ModalFocusIntegration::new(&mut stack, &mut focus);

// Push a modal with focus management
let modal_id = integrator.push_with_focus(dialog);

// ... handle events ...

// Pop modal and restore focus
integrator.pop_with_focus();

Implementations§

Source§

impl<'a> ModalFocusIntegration<'a>

Source

pub fn new(stack: &'a mut ModalStack, focus: &'a mut FocusManager) -> Self

Create a new integration helper.

Source

pub fn push_with_focus(&mut self, modal: Box<dyn StackModal>) -> ModalId

Push a modal with automatic focus management.

  1. Creates a focus group from modal.focusable_ids() (if provided)
  2. Pushes a focus trap to constrain Tab navigation
  3. Auto-focuses the first focusable widget
  4. Stores the previous focus for restoration on close

Returns the modal ID.

Source

pub fn pop_with_focus(&mut self) -> Option<ModalResult>

Pop the top modal with focus restoration.

If the modal had a focus group, the trap is popped and focus is restored to the element that was focused before the modal opened.

Returns the modal result.

Source

pub fn handle_event(&mut self, event: &Event) -> Option<ModalResult>

Handle an event with automatic focus trap popping.

If the event causes the modal to close, the focus trap is popped.

Source

pub fn is_focus_trapped(&self) -> bool

Check if focus is currently trapped in a modal.

Source

pub fn stack(&self) -> &ModalStack

Get a reference to the underlying modal stack.

Source

pub fn stack_mut(&mut self) -> &mut ModalStack

Get a mutable reference to the underlying modal stack.

Source

pub fn focus(&self) -> &FocusManager

Get a reference to the underlying focus manager.

Source

pub fn focus_mut(&mut self) -> &mut FocusManager

Get a mutable reference to the underlying focus manager.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more