Files
leptos-shadcn-ui/docs/components/api/collapsible.md
Ubuntu 18c4ddcd05 drover: task-1767764907653950146
Task: Improve API documentation
2026-01-10 05:38:15 +00:00

2.7 KiB

Collapsible Component API

A component that can show/hide content with animation.


Installation

# Cargo.toml
[dependencies]
shadcn-ui-leptos-collapsible = "0.7"
use shadcn_ui_leptos_collapsible::Collapsible;

Import

use shadcn_ui_leptos_collapsible::{
    Collapsible,
    CollapsibleTrigger,
    CollapsibleContent
};

Component API

Collapsible

Root component managing collapsible state.

Prop Type Default Description
open Signal<bool> Required Open state
on_open_change Option<Callback<bool>> None Change handler
disabled Signal<bool> false Disable collapsible

CollapsibleTrigger

Element that toggles the collapsible.

Prop Type Default Description
class MaybeProp<String> None Additional CSS classes

CollapsibleContent

Collapsible content container.

Prop Type Default Description
class MaybeProp<String> None Additional CSS classes

Usage Examples

Basic Collapsible

use leptos::prelude::*;
use shadcn_ui_leptos_collapsible::*;

#[component]
pub fn MyComponent() -> impl IntoView {
    let (open, set_open) = signal(false);

    view! {
        <Collapsible
            open=open.into()
            on_open_change=Some(Callback::new(move |v| set_open.set(v)))
        >
            <CollapsibleTrigger>
                <button>"Toggle"</button>
            </CollapsibleTrigger>
            <CollapsibleContent>
                <div class="p-4">
                    "Hidden content that can be shown/hidden"
                </div>
            </CollapsibleContent>
        </Collapsible>
    }
}

CSS Classes

.collapsible-content {
    overflow-hidden transition-all
}

.collapsible-content[data-state=open] {
    animate-collapsible-down
}

.collapsible-content[data-state=closed] {
    animate-collapsible-up
}

Accessibility

Keyboard Navigation

Key Action
Enter/Space Toggle collapsible

TypeScript API

interface CollapsibleProps {
  open: boolean;
  onOpenChange?: (open: boolean) => void;
  disabled?: boolean;
  children?: React.ReactNode;
}

export const Collapsible: React.FC<CollapsibleProps>;
export const CollapsibleTrigger: React.FC<ComponentProps>;
export const CollapsibleContent: React.FC<ComponentProps>;

Source: packages/leptos/collapsible/src/default.rs