problems panel: preserve expanded state
This commit is contained in:
@@ -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>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user