Skip to content
Snippets Groups Projects
Commit 83c448e3 authored by esikkala's avatar esikkala
Browse files

Control expansion panels

parent 2cac426e
No related branches found
No related tags found
No related merge requests found
...@@ -23,14 +23,17 @@ const styles = theme => ({ ...@@ -23,14 +23,17 @@ const styles = theme => ({
borderBottomLeftRadius: 0, borderBottomLeftRadius: 0,
borderBottomRightRadius: 0 borderBottomRightRadius: 0
}, },
expansionPanelHeading: { expansionPanelSummaryRoot: {
paddingLeft: theme.spacing(1), paddingLeft: theme.spacing(1),
cursor: 'default !important'
},
expansionPanelSummaryContent: {
margin: 0
}, },
expansionPanelDetails: { expansionPanelDetails: {
paddingTop: 0, paddingTop: 0,
paddingLeft: theme.spacing(1), paddingLeft: theme.spacing(1),
flexDirection: 'column' flexDirection: 'column'
}, },
three: { three: {
height: 108, height: 108,
...@@ -48,6 +51,23 @@ const styles = theme => ({ ...@@ -48,6 +51,23 @@ const styles = theme => ({
class FacetBar extends React.Component { class FacetBar extends React.Component {
constructor(props) {
super(props);
this.state = {
activeFacets: new Set(),
};
}
handleExpandButtonOnClick = facetID => () => {
let activeFacets = this.state.activeFacets;
if (activeFacets.has(facetID)) {
activeFacets.delete(facetID);
} else {
activeFacets.add(facetID);
}
this.setState({ activeFacets });
}
renderFacet = (facetID, someFacetIsFetching) => { renderFacet = (facetID, someFacetIsFetching) => {
const { classes } = this.props; const { classes } = this.props;
const { facetUpdateID, updatedFacet, updatedFilter, facets } = this.props.facetData; const { facetUpdateID, updatedFacet, updatedFilter, facets } = this.props.facetData;
...@@ -108,20 +128,26 @@ class FacetBar extends React.Component { ...@@ -108,20 +128,26 @@ class FacetBar extends React.Component {
); );
break; break;
} }
let isActive = this.state.activeFacets.has(facetID);
return( return(
<ExpansionPanel <ExpansionPanel
key={facetID} key={facetID}
expanded={isActive}
> >
<ExpansionPanelSummary <ExpansionPanelSummary
className={classes.expansionPanelHeading} classes={{
root: classes.expansionPanelSummaryRoot,
content: classes.expansionPanelSummaryContent
}}
expandIcon={<ExpandMoreIcon />} expandIcon={<ExpandMoreIcon />}
IconButtonProps={{ onClick: this.handleExpandButtonOnClick(facetID) }}
aria-controls="panel1a-content" aria-controls="panel1a-content"
id="panel1a-header" id="panel1a-header"
> >
<FacetHeader <FacetHeader
facetID={facetID} facetID={facetID}
facet={facet} facet={facet}
isActive={isActive}
facetClass={this.props.facetClass} facetClass={this.props.facetClass}
resultClass={this.props.resultClass} resultClass={this.props.resultClass}
fetchFacet={this.props.fetchFacet} fetchFacet={this.props.fetchFacet}
......
...@@ -17,6 +17,8 @@ const styles = theme => ({ ...@@ -17,6 +17,8 @@ const styles = theme => ({
headingContainer: { headingContainer: {
display: 'flex', display: 'flex',
alignItems: 'center', alignItems: 'center',
justifyContent: 'space-between',
width: '100%'
//paddingLeft: theme.spacing(1), //paddingLeft: theme.spacing(1),
//borderBottomLeftRadius: 0, //borderBottomLeftRadius: 0,
//borderBottomRightRadius: 0, //borderBottomRightRadius: 0,
...@@ -167,14 +169,17 @@ class FacetHeader extends React.Component { ...@@ -167,14 +169,17 @@ class FacetHeader extends React.Component {
} }
render() { render() {
const { classes } = this.props; const { classes, isActive } = this.props;
const { label, sortButton, spatialFilterButton } = this.props.facet; const { label, sortButton, spatialFilterButton } = this.props.facet;
let showMenuButton = isActive && (sortButton || spatialFilterButton);
return ( return (
<div className={classes.headingContainer}> <div className={classes.headingContainer}>
<Typography variant="body1">{label} </Typography> <Typography variant="body1">{label} </Typography>
<div className={classes.facetHeaderButtons}> {showMenuButton &&
{(sortButton || spatialFilterButton) && this.renderFacetMenu()} <div className={classes.facetHeaderButtons}>
</div> {this.renderFacetMenu()}
</div>
}
</div> </div>
); );
} }
...@@ -184,6 +189,7 @@ FacetHeader.propTypes = { ...@@ -184,6 +189,7 @@ FacetHeader.propTypes = {
classes: PropTypes.object.isRequired, classes: PropTypes.object.isRequired,
facetID: PropTypes.string, facetID: PropTypes.string,
facet: PropTypes.object, facet: PropTypes.object,
isActive: PropTypes.bool.isRequired,
facetClass: PropTypes.string, facetClass: PropTypes.string,
resultClass: PropTypes.string, resultClass: PropTypes.string,
fetchFacet: PropTypes.func, fetchFacet: PropTypes.func,
......
...@@ -60,7 +60,7 @@ export const INITIAL_STATE = { ...@@ -60,7 +60,7 @@ export const INITIAL_STATE = {
sortBy: 'prefLabel', sortBy: 'prefLabel',
sortDirection: 'asc', sortDirection: 'asc',
sortButton: false, sortButton: false,
spatialFilterButton: false, spatialFilterButton: true,
isFetching: false, isFetching: false,
searchField: true, searchField: true,
containerClass: 'ten', containerClass: 'ten',
...@@ -95,7 +95,7 @@ export const INITIAL_STATE = { ...@@ -95,7 +95,7 @@ export const INITIAL_STATE = {
flatValues: [], flatValues: [],
sortBy: 'instanceCount', sortBy: 'instanceCount',
sortDirection: 'desc', sortDirection: 'desc',
sortButton: false, sortButton: true,
spatialFilterButton: false, spatialFilterButton: false,
isFetching: false, isFetching: false,
searchField: true, searchField: true,
...@@ -112,7 +112,7 @@ export const INITIAL_STATE = { ...@@ -112,7 +112,7 @@ export const INITIAL_STATE = {
flatValues: [], flatValues: [],
sortBy: 'instanceCount', sortBy: 'instanceCount',
sortDirection: 'desc', sortDirection: 'desc',
sortButton: false, sortButton: true,
spatialFilterButton: false, spatialFilterButton: false,
isFetching: false, isFetching: false,
searchField: true, searchField: true,
...@@ -129,7 +129,7 @@ export const INITIAL_STATE = { ...@@ -129,7 +129,7 @@ export const INITIAL_STATE = {
flatValues: [], flatValues: [],
sortBy: 'instanceCount', sortBy: 'instanceCount',
sortDirection: 'desc', sortDirection: 'desc',
sortButton: false, sortButton: true,
spatialFilterButton: false, spatialFilterButton: false,
isFetching: false, isFetching: false,
searchField: true, searchField: true,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment