Skip to content

Commit

Permalink
Expand selected file when clicking file tree (#24041)
Browse files Browse the repository at this point in the history
Auto expand the selected file when clicking the file item of the file
tree.
This is consistent with Github's behavior.

https://user-images.githubusercontent.com/33891828/231048124-61f180af-adba-42d7-9ffa-626e1de04aed.mov
  • Loading branch information
sillyguodong authored Apr 12, 2023
1 parent 9717675 commit e03e827
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions web_src/js/components/DiffFileTree.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import DiffFileTreeItem from './DiffFileTreeItem.vue';
import {doLoadMoreFiles} from '../features/repo-diff.js';
import {toggleElem} from '../utils/dom.js';
import {DiffTreeStore} from '../modules/stores.js';
import {setFileFolding} from '../features/file-fold.js';
const {pageData} = window.config;
const LOCAL_STORAGE_KEY = 'diff_file_tree_visible';
Expand Down Expand Up @@ -104,6 +105,7 @@ export default {
this.hashChangeListener = () => {
this.store.selectedItem = window.location.hash;
this.expandSelectedFile();
};
this.hashChangeListener();
window.addEventListener('hashchange', this.hashChangeListener);
Expand All @@ -113,6 +115,14 @@ export default {
window.removeEventListener('hashchange', this.hashChangeListener);
},
methods: {
expandSelectedFile() {
// expand file if the selected file is folded
if (this.store.selectedItem) {
const box = document.querySelector(this.store.selectedItem);
const folded = box?.getAttribute('data-folded') === 'true';
if (folded) setFileFolding(box, box.querySelector('.fold-file'), false);
}
},
toggleVisibility() {
this.updateVisibility(!this.fileTreeIsVisible);
},
Expand Down

0 comments on commit e03e827

Please sign in to comment.