levelIndentation={hasSubfilters ? 20 : 0}
itemRightPadding={20}
items={filtersToTree(filters)}
- render={renderItem}
+ render={this.props.mutuallyExclusive ? renderRadioItem : renderItem}
showSelection
useRadioButtons={this.props.mutuallyExclusive}
disableRipple
if (item.selected) { return; }
// Otherwise select this node and deselect the others
- const filters = selectNode(item.id)(this.props.filters);
+ const filters = selectNode(item.id, true)(this.props.filters);
const toDeselect = Object.keys(this.props.filters).filter((id) => (id !== item.id));
- onChange(deselectNodes(toDeselect)(filters));
+ onChange(deselectNodes(toDeselect, true)(filters));
}
toggleFilter = (_: React.MouseEvent, item: TreeItem<DataTableFilterItem>) => {
const { onChange = noop } = this.props;
- onChange(toggleNodeSelection(item.id)(this.props.filters));
+ onChange(toggleNodeSelection(item.id, true)(this.props.filters));
}
toggleOpen = (_: React.MouseEvent, item: TreeItem<DataTableFilterItem>) => {
}
const renderItem = (item: TreeItem<DataTableFilterItem>) =>
- <span>{item.data.name}</span>;
+ <span>
+ {item.data.name}
+ {item.initialState !== item.selected ? <>
+ *
+ </> : null}
+ </span>;
+
+const renderRadioItem = (item: TreeItem<DataTableFilterItem>) =>
+ <span>
+ {item.data.name}
+ </span>;
const filterToTreeItem = (filters: DataTableFilters) =>
(id: string): TreeItem<any> => {
items: items.length > 0 ? items : undefined,
open: node.expanded,
selected: node.selected,
+ initialState: node.initialState,
indeterminate: isIndeterminate,
status: TreeItemStatus.LOADED,
};