mirror of
https://github.com/apache/superset.git
synced 2026-04-09 19:35:21 +00:00
The left panel of the explore view has become crowded and overwhelming overtime. This PR adds functionality to collapse the control sections, and sets most sections to be collapse by default as the explore view opens up. * breakdown `Query` section for most viz * bring filters to the top, under Query section * collapse most sections by default * removed confusing outdated description for Filter section
63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { Panel } from 'react-bootstrap';
|
|
import InfoTooltipWithTrigger from '../../components/InfoTooltipWithTrigger';
|
|
|
|
const propTypes = {
|
|
label: PropTypes.string,
|
|
description: PropTypes.string,
|
|
children: PropTypes.node.isRequired,
|
|
startExpanded: PropTypes.bool,
|
|
};
|
|
|
|
const defaultProps = {
|
|
label: null,
|
|
description: null,
|
|
startExpanded: false,
|
|
};
|
|
|
|
export default class ControlPanelSection extends React.Component {
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = { expanded: this.props.startExpanded };
|
|
}
|
|
toggleExpand() {
|
|
this.setState({ expanded: !this.state.expanded });
|
|
}
|
|
renderHeader() {
|
|
const { label, description } = this.props;
|
|
let header;
|
|
if (label) {
|
|
header = (
|
|
<div>
|
|
<i
|
|
className={`text-primary expander fa fa-caret-${this.state.expanded ? 'down' : 'right'}`}
|
|
onClick={this.toggleExpand.bind(this)}
|
|
/>
|
|
{' '}
|
|
<span onClick={this.toggleExpand.bind(this)}>{label}</span>
|
|
{' '}
|
|
{description && <InfoTooltipWithTrigger label={label} tooltip={description} />}
|
|
</div>
|
|
);
|
|
}
|
|
return header;
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<Panel
|
|
className="control-panel-section"
|
|
collapsible
|
|
expanded={this.state.expanded}
|
|
header={this.renderHeader()}
|
|
>
|
|
{this.props.children}
|
|
</Panel>
|
|
);
|
|
}
|
|
}
|
|
|
|
ControlPanelSection.propTypes = propTypes;
|
|
ControlPanelSection.defaultProps = defaultProps;
|