15069: Fixes bug on advanced search UI disallowing duplicate tags.
[arvados-workbench2.git] / src / components / data-table-filters / data-table-filters-tree.tsx
index 3ce4dbbefc41b28bb66a8a5cabe7d26625ca48df..dcc4f0e111aea7d95d0a99b01b72d11e33dd45f6 100644 (file)
@@ -7,6 +7,7 @@ import { Tree, toggleNodeSelection, getNode, initTreeNode, getNodeChildrenIds }
 import { Tree as TreeComponent, TreeItem, TreeItemStatus } from '~/components/tree/tree';
 import { noop, map } from "lodash/fp";
 import { toggleNodeCollapse } from '~/models/tree';
+import { countNodes, countChildren } from '~/models/tree';
 
 export interface DataTableFilterItem {
     name: string;
@@ -22,10 +23,15 @@ export interface DataTableFilterProps {
 export class DataTableFiltersTree extends React.Component<DataTableFilterProps> {
 
     render() {
+        const { filters } = this.props;
+        const hasSubfilters = countNodes(filters) !== countChildren('')(filters);
         return <TreeComponent
-            items={filtersToTree(this.props.filters)}
+            levelIndentation={hasSubfilters ? 20 : 0}
+            itemRightPadding={20}
+            items={filtersToTree(filters)}
             render={renderItem}
             showSelection
+            disableRipple
             onContextMenu={noop}
             toggleItemActive={noop}
             toggleItemOpen={this.toggleOpen}
@@ -33,10 +39,6 @@ export class DataTableFiltersTree extends React.Component<DataTableFilterProps>
         />;
     }
 
-    renderItem(item: TreeItem<DataTableFilterItem>) {
-        return <span>{item.data.name}</span>;
-    }
-
     toggleFilter = (_: React.MouseEvent, item: TreeItem<DataTableFilterItem>) => {
         const { onChange = noop } = this.props;
         onChange(toggleNodeSelection(item.id)(this.props.filters));