/** * Collapsible React component * Note: * If onCollapsedChanged() is triggered, parent container is responsible for: * - updating isCollapsed property * - calling render() */ import * as React from "react"; import LeftArrowIcon from "../../../../images/imgarrowlefticon.svg"; import { AccessibleElement } from "../../Controls/AccessibleElement/AccessibleElement"; export interface CollapsiblePanelProps { collapsedTitle: string; expandedTitle: string; isCollapsed: boolean; onCollapsedChanged: (newValue: boolean) => void; collapseToLeft?: boolean; children: JSX.Element | JSX.Element[]; } export class CollapsiblePanel extends React.Component { public render(): JSX.Element { return (
{!this.props.isCollapsed ? this.getExpandedFragment() : this.getCollapsedFragment()}
); } private toggleCollapse(): void { this.props.onCollapsedChanged(!this.props.isCollapsed); } private getCollapsedFragment(): JSX.Element { return (
); } private getExpandedFragment(): JSX.Element { return (
this.toggleCollapse()} aria-label="Collapse panel" > Collapse {this.props.expandedTitle}
{this.props.children}
); } }