Component
hover card
dx components add hover_cardA hover card component for displaying additional information on hover.
Dioxus
Installation
Use the CLI command for the common path, or copy the component files manually.
Manual installation files
Copy the component source and CSS into your app. Import the shared theme CSS once near your app root.
use dioxus::prelude::*;
use dioxus_primitives::hover_card::{
self, HoverCardContentProps, HoverCardProps, HoverCardTriggerProps,
};
#[component]
pub fn HoverCard(props: HoverCardProps) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/hover_card/style.css") }
hover_card::HoverCard {
class: "dx-hover-card",
open: props.open,
default_open: props.default_open,
on_open_change: props.on_open_change,
disabled: props.disabled,
attributes: props.attributes,
{props.children}
}
}
}
#[component]
pub fn HoverCardTrigger(props: HoverCardTriggerProps) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/hover_card/style.css") }
hover_card::HoverCardTrigger {
class: "dx-hover-card-trigger",
id: props.id,
attributes: props.attributes,
{props.children}
}
}
}
#[component]
pub fn HoverCardContent(props: HoverCardContentProps) -> Element {
rsx! {
document::Link { rel: "stylesheet", href: asset!("/src/components/hover_card/style.css") }
hover_card::HoverCardContent {
class: "dx-hover-card-content",
side: props.side,
align: props.align,
id: props.id,
force_mount: props.force_mount,
attributes: props.attributes,
{props.children}
}
}
}Usage notes
The HoverCard component can be used to display additional information when a user hovers over an element. It is useful for showing tooltips, additional details, or any other content that should be revealed on hover.
Component Structure
// The HoverCard component wraps the trigger element and the content that will be displayed on hover.
HoverCard {
HoverCardTrigger {
// Anything inside the trigger (icon, text, rich markup) acts as the hover target.
{children}
}
HoverCardContent {
side: ContentSide::Bottom,
align: ContentAlign::Start,
{children}
}
}