problems panel: preserve expanded state

This commit is contained in:
Alexander Zobnin
2018-12-08 11:45:44 +03:00
parent 6861d80530
commit a6e9127252

View File

@@ -12,10 +12,23 @@ export interface ProblemListProps {
loading?: boolean; loading?: boolean;
} }
export class ProblemList extends PureComponent<ProblemListProps, any> { interface ProblemListState {
expanded: any;
page: number;
}
export class ProblemList extends PureComponent<ProblemListProps, ProblemListState> {
rootWidth: number; rootWidth: number;
rootRef: any; rootRef: any;
constructor(props) {
super(props);
this.state = {
expanded: {},
page: 0,
};
}
setRootRef = ref => { setRootRef = ref => {
this.rootRef = ref; this.rootRef = ref;
} }
@@ -48,6 +61,18 @@ export class ProblemList extends PureComponent<ProblemListProps, any> {
return result; return result;
} }
getExpandedPage = (page: number) => {
return this.state.expanded[page] || {};
}
handleExpandedChange = expanded => {
const nextExpanded = {...this.state.expanded};
nextExpanded[this.state.page] = expanded;
this.setState({
expanded: nextExpanded
});
}
render() { render() {
// console.log(this.props.problems, this.props.panelOptions); // console.log(this.props.problems, this.props.panelOptions);
const columns = this.buildColumns(); const columns = this.buildColumns();
@@ -61,6 +86,9 @@ export class ProblemList extends PureComponent<ProblemListProps, any> {
defaultPageSize={10} defaultPageSize={10}
loading={this.props.loading} loading={this.props.loading}
SubComponent={props => <ProblemDetails rootWidth={this.rootWidth} {...props} />} SubComponent={props => <ProblemDetails rootWidth={this.rootWidth} {...props} />}
expanded={this.getExpandedPage(this.state.page)}
onExpandedChange={this.handleExpandedChange}
onPageChange={page => this.setState({ page })}
/> />
</div> </div>
); );