argo-cd
28 строк · 946.0 Байт
1import * as classNames from 'classnames';
2import * as React from 'react';
3
4require('./expandable.scss');
5
6export interface Props extends React.Props<any> {
7height?: number;
8}
9
10export const Expandable = (props: Props) => {
11const [expanded, setExpanded] = React.useState(false);
12const contentEl = React.useRef(null);
13const style: React.CSSProperties = {};
14if (!expanded) {
15style.maxHeight = props.height || 100;
16} else {
17style.maxHeight = (contentEl.current && contentEl.current.clientHeight) || 10000;
18}
19
20return (
21<div style={style} className={classNames('expandable', {'expandable--collapsed': !expanded})}>
22<div ref={contentEl}>{props.children}</div>
23<a onClick={() => setExpanded(!expanded)}>
24<i className={classNames('expandable__handle fa', {'fa-chevron-down': !expanded, 'fa-chevron-up': expanded})} />
25</a>
26</div>
27);
28};
29