interface ProjectExplorerProps {
items: ProjectExplorerItem[];
onRowClick: (item: ProjectExplorerItem) => void;
+ onToggleSort: (toggledColumn: DataColumn<ProjectExplorerItem>) => void;
}
interface ProjectExplorerState {
columns: [{
name: "Name",
selected: true,
- sortDirection: "asc",
+ sortDirection: "desc",
render: renderName,
width: "450px"
}, {
}, {
name: "File size",
selected: true,
- sortDirection: "none",
render: item => renderFileSize(item.fileSize),
width: "50px"
}, {
name: "Last modified",
selected: true,
+ sortDirection: "none",
render: item => renderDate(item.lastModified),
width: "150px"
}]
});
}
- toggleSort = (toggledColumn: DataColumn<ProjectExplorerItem>) => {
- this.setState({
- columns: this.state.columns.map(column =>
- column.name === toggledColumn.name
- ? toggleSortDirection(column)
- : resetSortDirection(column)
- )
- });
+ toggleSort = (column: DataColumn<ProjectExplorerItem>) => {
+ const columns = this.state.columns.map(c =>
+ c.name === column.name
+ ? toggleSortDirection(c)
+ : resetSortDirection(c)
+ );
+ this.setState({ columns });
+ const toggledColumn = columns.find(c => c.name === column.name);
+ if (toggledColumn) {
+ this.props.onToggleSort(toggledColumn);
+ }
}
changeFilters = (filters: DataTableFilterItem[], updatedColumn: DataColumn<ProjectExplorerItem>) => {
const renderIcon = (item: ProjectExplorerItem) => {
switch (item.kind) {
case ResourceKind.LEVEL_UP:
- return <i className="icon-level-up" style={{fontSize: "1rem"}}/>;
+ return <i className="icon-level-up" style={{ fontSize: "1rem" }} />;
case ResourceKind.PROJECT:
- return <i className="fas fa-folder fa-lg"/>;
+ return <i className="fas fa-folder fa-lg" />;
case ResourceKind.COLLECTION:
- return <i className="fas fa-th fa-lg"/>;
+ return <i className="fas fa-th fa-lg" />;
default:
return <i />;
}