-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
Add Search, move Add/Upload File, delete directory & "copy path" functionality to the repo's tree view UI #35911
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
3452673 to
1cf0812
Compare
ca8791e to
457f17f
Compare
f169aa3 to
809a645
Compare
|
You can do so in the main repo page in the code tab, same as to how its done on Github. Since I'm not aware of a way to view the root directory except for in the main repo page on the code tab (same on Github). Or perhaps I'm not understanding what you mean. |
809a645 to
0adcc74
Compare
4540d07 to
57782c3
Compare
Fixed
Moved. Should be more like Github's UX now: Screen.Recording.2025-11-13.at.14.04.46.mov |
|
| return filterRepoFilesWeighted(allFiles.value, searchQuery.value); | ||
| }); | ||
| const treeLink = computed(() => `${props.repoLink}/src/${props.currentRefNameSubURL}`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| const treeLink = computed(() => `${props.repoLink}/src/${props.currentRefNameSubURL}`); | |
| const treeLink = computed(() => `${props.repoLink}/src/${encodeURIComponent(props.currentRefNameSubURL)}`); |
Good practice in case thise string contains url-unsafe characters. Will only work if this does not contain slashes, in which case disregard this suggestion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not encodeURIComponent, it needs path segment escaping
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right, we have the pathEscapeSegments function for that.
| const rect = searchInputElement.getBoundingClientRect(); | ||
| resultsEl.style.top = `${rect.bottom + 4}px`; | ||
| resultsEl.style.left = `${rect.left}px`; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this be solved with static tw- classes? Inline styles are problematic because they require CSP style-src: unsafe-inline, so we want to get rid of all of them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because they require CSP
style-src: unsafe-inline
I think we have discussed before, el.style doesn't conflict with any CSP?
(In most cases, modifying the style attribute should be avoided if it can, but it isn't related to CSP)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think accessing the style attribute in JS after page render may also trigger a CSP error, but needs to be tested.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we are just repeating the history, last time I also showed you the screenshot.
From another perspective, if "style" property is blocked, how can developers show a floating absolutely positioned dialog? How to make a color-picker to use colors freely? DOM standard is designed well and won't make unusable designs.
| <div class="file-tree-no-results-content"> | ||
| <!-- eslint-disable-next-line vue/no-v-html --> | ||
| <span v-html="svg('octicon-search', 24)"/> | ||
| <span>No matching files found</span> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm afraid we need to translate this, so you need to pass down a translation string via data- attributes.
Not quite sure how to address this, that's the current usage for toggling the file tree visibility before this PR.
I think still fairly useful for the main repo page in the code tab since there's no tree view there and wouldn't make sense to add it there. And the same backend too. So personally no need to cut it loose just yet. Could you please have another look @wxiaoguang / @silverwind , I think I've addressed feedback. |
809d088 to
d23fff3
Compare
I don't think the "file list" code should be in |
Sorry about that, I thought I had pushed my refactor of that. Updated. |
|
Can you do one more round review by yourself https://github.com/go-gitea/gitea/pull/35911/files? Just like you review other's code, I think you can find more potential improvements. At least, some unrelated changes should be reverted, for example:
|
7d4a08c to
765fff3
Compare
…iew and apply patch ui improvements.
…vice with testing
765fff3 to
140c8cf
Compare
|
Rebased and had a look again with fresh eyes today. Debounced the search input and fixed an issue with scrolling while searching that I noticed. I've had a look through the changed lines and unless I've developed a blindspot to something in this PR I'm happy to sign off on it as is @wxiaoguang. |




/claim #35898
Resolves #35898
Summary of key changes:
Detailed breakdown:
1. Add search functionality to tree view
Added search to tree view using existing search
filterRepoFilesWeighted, with new modal to display the search results. User can navigate through search results using keyboard to scroll, select and escape the search on top of using mouse. No matches found notice when no results are found.Screen.Recording.2025-11-11.at.09.51.16.mov
2. Add backend functionality to delete directory
Modified the
DeleteFilePostendpoint to also allow for deletion of whole directories to support the "Delete directory" menu option added to the context menu.3. Add context menu for directories with functionality to copy path & delete a directory
Added context menu for "Copy path", "Copy Permalink" & "Delete directory" supported by backend change listed above.
Screen.Recording.2025-11-11.at.10.10.41.mov
4. Move Add/Upload file dropdown to right for parity with Github UI
Minor change to move this option to the right since already existed.
5. Add tree view to the edit/upload & patch UI