patternfly_yew/components/page/
sidebar.rs

1use yew::prelude::*;
2
3/// Properties for [`PageSidebar`]
4#[derive(Clone, PartialEq, Properties)]
5pub struct PageSidebarProperties {
6    #[prop_or_default]
7    pub children: Html,
8    #[prop_or(true)]
9    pub open: bool,
10}
11
12/// The sidebar component of a [`Page`](crate::prelude::Page).
13///
14/// ## Properties
15///
16/// Defined by [`PageSidebarProperties`].
17#[function_component(PageSidebar)]
18pub fn page_sidebar(props: &PageSidebarProperties) -> Html {
19    let mut classes = match props.open {
20        true => classes!["pf-m-expanded"],
21        false => classes!["pf-m-collapsed"],
22    };
23
24    classes.push("pf-v5-c-page__sidebar");
25
26    html! (
27        <div
28            aria-hidden={(!props.open).to_string()}
29            class={classes}>
30            <div class="pf-v5-c-page__sidebar-body">
31                { props.children.clone() }
32            </div>
33        </div>
34    )
35}