pub struct Popup {Show 14 fields
pub kind: PopupKind,
pub title: Option<String>,
pub description: Option<String>,
pub transient: bool,
pub content: PopupContent,
pub position: PopupPosition,
pub width: u16,
pub max_height: u16,
pub bordered: bool,
pub border_style: Style,
pub background_style: Style,
pub scroll_offset: usize,
pub text_selection: Option<PopupTextSelection>,
pub accept_key_hint: Option<String>,
}Expand description
A popup/floating window This is a general-purpose UI primitive that can be used for:
- Completion menus
- Hover documentation
- Command palette
- File picker
- Diagnostic messages
- Quick fixes / code actions
Fields§
§kind: PopupKindKind of popup - determines input handling behavior
title: Option<String>Title of the popup (optional)
description: Option<String>Description text shown below title, above content (optional)
transient: boolWhether this popup is transient (dismissed on focus loss, e.g. hover, signature help)
content: PopupContentContent to display
position: PopupPositionPosition strategy
width: u16Width of popup (in columns)
max_height: u16Maximum height (will be clamped to available space)
bordered: boolWhether to show borders
border_style: StyleBorder style
background_style: StyleBackground style
scroll_offset: usizeScroll offset for content (for scrolling through long lists)
text_selection: Option<PopupTextSelection>Text selection for copy/paste (None if no selection)
accept_key_hint: Option<String>Key hint shown right-aligned on the selected item (e.g. “(Tab)”)
Implementations§
Source§impl Popup
impl Popup
Sourcepub fn text(content: Vec<String>, theme: &Theme) -> Self
pub fn text(content: Vec<String>, theme: &Theme) -> Self
Create a new popup with text content using theme colors
Sourcepub fn markdown(
markdown_text: &str,
theme: &Theme,
registry: Option<&GrammarRegistry>,
) -> Self
pub fn markdown( markdown_text: &str, theme: &Theme, registry: Option<&GrammarRegistry>, ) -> Self
Create a new popup with markdown content using theme colors
If registry is provided, code blocks will have syntax highlighting
for ~150+ languages via syntect.
Sourcepub fn list(items: Vec<PopupListItem>, theme: &Theme) -> Self
pub fn list(items: Vec<PopupListItem>, theme: &Theme) -> Self
Create a new popup with a list of items using theme colors
Sourcepub fn with_title(self, title: String) -> Self
pub fn with_title(self, title: String) -> Self
Set the title
Sourcepub fn with_kind(self, kind: PopupKind) -> Self
pub fn with_kind(self, kind: PopupKind) -> Self
Set the popup kind (determines input handling behavior)
Sourcepub fn with_transient(self, transient: bool) -> Self
pub fn with_transient(self, transient: bool) -> Self
Mark this popup as transient (will be dismissed on focus loss)
Sourcepub fn with_position(self, position: PopupPosition) -> Self
pub fn with_position(self, position: PopupPosition) -> Self
Set the position
Sourcepub fn with_width(self, width: u16) -> Self
pub fn with_width(self, width: u16) -> Self
Set the width
Sourcepub fn with_max_height(self, max_height: u16) -> Self
pub fn with_max_height(self, max_height: u16) -> Self
Set the max height
Sourcepub fn with_border_style(self, style: Style) -> Self
pub fn with_border_style(self, style: Style) -> Self
Set border style
Sourcepub fn selected_item(&self) -> Option<&PopupListItem>
pub fn selected_item(&self) -> Option<&PopupListItem>
Get the currently selected item (if this is a list popup)
Sourcepub fn select_next(&mut self)
pub fn select_next(&mut self)
Move selection down (for list popups)
Sourcepub fn select_prev(&mut self)
pub fn select_prev(&mut self)
Move selection up (for list popups)
Sourcepub fn select_index(&mut self, index: usize) -> bool
pub fn select_index(&mut self, index: usize) -> bool
Select a specific item by index. Returns true if the index was valid.
Sourcepub fn select_first(&mut self)
pub fn select_first(&mut self)
Select the first item (for list popups)
Sourcepub fn select_last(&mut self)
pub fn select_last(&mut self)
Select the last item (for list popups)
Sourcepub fn scroll_by(&mut self, delta: i32)
pub fn scroll_by(&mut self, delta: i32)
Scroll by a delta amount (positive = down, negative = up) Used for mouse wheel scrolling
Sourcepub fn item_count(&self) -> usize
pub fn item_count(&self) -> usize
Get the total number of items/lines in the popup
Sourcepub fn start_selection(&mut self, line: usize, col: usize)
pub fn start_selection(&mut self, line: usize, col: usize)
Start text selection at position (used for mouse click)
Sourcepub fn extend_selection(&mut self, line: usize, col: usize)
pub fn extend_selection(&mut self, line: usize, col: usize)
Extend text selection to position (used for mouse drag)
Sourcepub fn clear_selection(&mut self)
pub fn clear_selection(&mut self)
Clear text selection
Sourcepub fn has_selection(&self) -> bool
pub fn has_selection(&self) -> bool
Check if popup has active text selection
Sourcepub fn get_selected_text(&self) -> Option<String>
pub fn get_selected_text(&self) -> Option<String>
Get selected text from popup content
Sourcepub fn needs_scrollbar(&self) -> bool
pub fn needs_scrollbar(&self) -> bool
Check if the popup needs a scrollbar (content exceeds visible area)
Sourcepub fn scroll_state(&self) -> (usize, usize, usize)
pub fn scroll_state(&self) -> (usize, usize, usize)
Get scroll state for scrollbar rendering
Sourcepub fn link_at_position(
&self,
relative_col: usize,
relative_row: usize,
) -> Option<String>
pub fn link_at_position( &self, relative_col: usize, relative_row: usize, ) -> Option<String>
Find the link URL at a given relative position within the popup content area.
relative_col and relative_row are relative to the inner content area (after borders).
Returns None if:
- The popup doesn’t contain markdown content
- The position doesn’t have a link
Sourcepub fn description_height(&self) -> u16
pub fn description_height(&self) -> u16
Get the height of the description area (including blank line separator) Returns 0 if there is no description.
Sourcepub fn calculate_area(
&self,
terminal_area: Rect,
cursor_pos: Option<(u16, u16)>,
) -> Rect
pub fn calculate_area( &self, terminal_area: Rect, cursor_pos: Option<(u16, u16)>, ) -> Rect
Calculate the area where this popup should be rendered
Sourcepub fn render(&self, frame: &mut Frame<'_>, area: Rect, theme: &Theme)
pub fn render(&self, frame: &mut Frame<'_>, area: Rect, theme: &Theme)
Render the popup to the frame
Sourcepub fn render_with_hover(
&self,
frame: &mut Frame<'_>,
area: Rect,
theme: &Theme,
hover_target: Option<&HoverTarget>,
)
pub fn render_with_hover( &self, frame: &mut Frame<'_>, area: Rect, theme: &Theme, hover_target: Option<&HoverTarget>, )
Render the popup to the frame with hover highlighting
Trait Implementations§
impl StructuralPartialEq for Popup
Auto Trait Implementations§
impl Freeze for Popup
impl RefUnwindSafe for Popup
impl Send for Popup
impl Sync for Popup
impl Unpin for Popup
impl UnsafeUnpin for Popup
impl UnwindSafe for Popup
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more