From 5b50690c5a511a0f00ba086151cb2df7236dc7ca Mon Sep 17 00:00:00 2001 From: Will Boulter Date: Sun, 19 Sep 2021 13:15:58 +0100 Subject: [PATCH 1/2] Update filter to logic to apply to whole file path instead of file name --- src/js/components/folder/index.jsx | 20 ++++++++++++++++++-- src/js/components/tree/index.jsx | 6 ++++-- src/js/createTree.js | 6 +++++- src/js/lib.js | 4 ++-- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/js/components/folder/index.jsx b/src/js/components/folder/index.jsx index d250431..ccdd13d 100644 --- a/src/js/components/folder/index.jsx +++ b/src/js/components/folder/index.jsx @@ -7,12 +7,28 @@ class Folder extends React.Component { this.state = {} } + getHighlight ({ nodeLabel, filter, index }) { + const prefix = nodeLabel.substring(0, index) + const middle = nodeLabel.substring(index, index + filter.length) + const suffix = nodeLabel.substring(index + filter.length) + return ( + <> + {prefix} + {middle ? {middle} : null} + {suffix} + + ) + } + render () { - const { children, nodeLabel, isViewed } = this.props + const { children, nodeLabel, isViewed, filter } = this.props + + const index = filter ? (nodeLabel.toLowerCase() || '').indexOf(filter.toLowerCase()) : -1 + const displayName = (index === -1) ? nodeLabel : this.getHighlight({ nodeLabel, filter, index }) const display = (
- {nodeLabel} + {displayName} {isViewed ? (
{ this.resizer = node }} /> @@ -193,7 +195,7 @@ class Tree extends React.Component { />
- {root.list.map(node => ( + {filtered.list.map(node => ( {createTree({ ...node, visibleElement, filter })} diff --git a/src/js/createTree.js b/src/js/createTree.js index 25fcaca..261c2ec 100644 --- a/src/js/createTree.js +++ b/src/js/createTree.js @@ -26,7 +26,11 @@ export const createTree = ({ nodeLabel, list, href, hasComments, isDeleted, diff const rawChildren = list.map(node => createTree({ ...node, visibleElement, filter })) return ( - child.props.isViewed)}> + child.props.isViewed)} + filter={filter}> {rawChildren.map(node => ( {node} diff --git a/src/js/lib.js b/src/js/lib.js index e459cd0..995e129 100644 --- a/src/js/lib.js +++ b/src/js/lib.js @@ -126,9 +126,9 @@ export const createFileTree = (filter = EMPTY_FILTER) => { diffElements: [] } - files.forEach(({ parts, href }) => { + files.forEach(({ title, parts, href }) => { let location = tree - if (filterItem(parts[parts.length - 1], filter)) { + if (filterItem(title, filter)) { parts.forEach((part, index) => { let node = location.list.find(node => node.nodeLabel === part) if (!node) { From 0671ae395593c88d623f56e691310a486f4c15fe Mon Sep 17 00:00:00 2001 From: Will Boulter Date: Sun, 19 Sep 2021 13:17:25 +0100 Subject: [PATCH 2/2] Fix husky violations --- src/js/components/tree/index.jsx | 4 ++-- src/js/createTree.js | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/js/components/tree/index.jsx b/src/js/components/tree/index.jsx index 3ed1198..162d214 100644 --- a/src/js/components/tree/index.jsx +++ b/src/js/components/tree/index.jsx @@ -12,7 +12,7 @@ const fullScreenStorageKey = '__better_github_pr_full_screen' class Tree extends React.Component { constructor (props) { super(props) - this.onReloadTree = this.props.reloadTree + this.handleReloadTree = this.props.reloadTree this.handleClose = this.handleClose.bind(this) this.onScroll = this.onScroll.bind(this) @@ -191,7 +191,7 @@ class Tree extends React.Component { onFullWidth={this.handleFullWidth} onOptions={this.handleOptions} onClose={this.handleClose} - onReloadTree={this.onReloadTree} + onReloadTree={this.handleReloadTree} />
diff --git a/src/js/createTree.js b/src/js/createTree.js index 261c2ec..a1dc8d4 100644 --- a/src/js/createTree.js +++ b/src/js/createTree.js @@ -26,11 +26,12 @@ export const createTree = ({ nodeLabel, list, href, hasComments, isDeleted, diff const rawChildren = list.map(node => createTree({ ...node, visibleElement, filter })) return ( - child.props.isViewed)} - filter={filter}> + filter={filter} + > {rawChildren.map(node => ( {node}