import { Icon, Label, Stack } from "@fluentui/react"; import * as React from "react"; import { NormalizedEventKey } from "../../../Common/Constants"; import { accordionStackTokens } from "../Settings/SettingsRenderUtils"; export interface CollapsibleSectionProps { title: string; isExpandedByDefault: boolean; onExpand?: () => void; children: JSX.Element; } export interface CollapsibleSectionState { isExpanded: boolean; } export class CollapsibleSectionComponent extends React.Component { constructor(props: CollapsibleSectionProps) { super(props); this.state = { isExpanded: this.props.isExpandedByDefault, }; } private toggleCollapsed = (): void => { this.setState({ isExpanded: !this.state.isExpanded }); }; public componentDidUpdate(): void { if (this.state.isExpanded && this.props.onExpand) { this.props.onExpand(); } } private onKeyPress = (event: React.KeyboardEvent) => { if (event.key === NormalizedEventKey.Space || event.key === NormalizedEventKey.Enter) { this.toggleCollapsed(); event.stopPropagation(); } }; public render(): JSX.Element { return ( <> {this.state.isExpanded && this.props.children} ); } }