Skip to content

Commit 628ac21

Browse files
committed
Diff improvements
1 parent af37111 commit 628ac21

File tree

4 files changed

+43
-18
lines changed

4 files changed

+43
-18
lines changed

templates/repo/diff/box.tmpl

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,15 @@
1717
<div class="gt-df gt-ac gt-fw">
1818
<a class="diff-toggle-file-tree-button muted gt-df gt-ac">
1919
{{/* the icon meaning is reversed here, "octicon-sidebar-collapse" means show the file tree */}}
20-
{{svg "octicon-sidebar-collapse" 20 "icon hide"}}
21-
{{svg "octicon-sidebar-expand" 20 "icon"}}
20+
{{svg "octicon-sidebar-collapse" 20 "icon gt-hidden"}}
21+
{{svg "octicon-sidebar-expand" 20 "icon gt-hidden"}}
2222
</a>
23+
<script>
24+
const treeVisible = localStorage.getItem('diff_file_tree_visible') === 'true';
25+
const btn = document.querySelector('.diff-toggle-file-tree-button');
26+
const icon = `.octicon-sidebar-${treeVisible ? 'expand' : 'collapse'}`;
27+
btn.querySelector(icon).classList.remove('gt-hidden');
28+
</script>
2329
<div class="diff-detail-stats gt-df gt-ac gt-ml-3">
2430
{{svg "octicon-diff" 16 "gt-mr-2"}}{{.locale.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}}
2531
</div>
@@ -68,6 +74,9 @@
6874
<div id="diff-file-list"></div>
6975
<div id="diff-container">
7076
<div id="diff-file-tree" class="gt-hidden"></div>
77+
<script>
78+
if (treeVisible) document.getElementById('diff-file-tree').classList.remove('gt-hidden');
79+
</script>
7180
<div id="diff-file-boxes" class="sixteen wide column">
7281
{{range $i, $file := .Diff.Files}}
7382
{{/*notice: the index of Diff.Files should not be used for element ID, because the index will be restarted from 0 when doing load-more for PRs with a lot of files*/}}

web_src/css/repository.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1852,6 +1852,24 @@
18521852
padding-bottom: 5px;
18531853
}
18541854

1855+
.diff-file-box {
1856+
border: 1px solid transparent;
1857+
border-radius: 0.285rem; /* Just like ui.top.attached.header */
1858+
}
1859+
1860+
.diff-file-box .ui.attached.header,
1861+
.diff-file-box .ui.attached.table {
1862+
margin: 0; /* remove fomantic negative margins */;
1863+
width: initial; /* remove fomantic over 100% width */;
1864+
max-width: initial; /* remove fomantic over 100% width */;
1865+
}
1866+
1867+
.diff-file-box:target {
1868+
border-color: var(--color-primary) !important;
1869+
border-radius: var(--border-radius) !important;
1870+
box-shadow: 0 0 0 3px var(--color-primary-alpha-30) !important;
1871+
}
1872+
18551873
.repository .diff-stats {
18561874
clear: both;
18571875
margin-bottom: 5px;

web_src/css/review.css

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,3 @@ a.blob-excerpt:hover {
308308
width: 72px;
309309
height: 10px;
310310
}
311-
312-
.diff-file-box {
313-
border-radius: 0.285rem; /* Just like ui.top.attached.header */
314-
}
315-
316-
.diff-file-box:target {
317-
box-shadow: 0 0 0 3px var(--color-accent);
318-
}

web_src/js/components/DiffFileTree.vue

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<script>
1717
import DiffFileTreeItem from './DiffFileTreeItem.vue';
1818
import {doLoadMoreFiles} from '../features/repo-diff.js';
19+
import {hideElem, showElem} from '../utils/dom.js';
1920
2021
const {pageData} = window.config;
2122
const LOCAL_STORAGE_KEY = 'diff_file_tree_visible';
@@ -93,7 +94,7 @@ export default {
9394
},
9495
mounted() {
9596
// ensure correct buttons when we are mounted to the dom
96-
this.adjustToggleButton(this.fileTreeIsVisible);
97+
this.updateState(this.fileTreeIsVisible);
9798
// replace the pageData.diffFileInfo.files with our watched data so we get updates
9899
pageData.diffFileInfo.files = this.files;
99100
@@ -109,15 +110,20 @@ export default {
109110
updateVisibility(visible) {
110111
this.fileTreeIsVisible = visible;
111112
localStorage.setItem(LOCAL_STORAGE_KEY, this.fileTreeIsVisible);
112-
this.adjustToggleButton(this.fileTreeIsVisible);
113+
this.updateState(this.fileTreeIsVisible);
113114
},
114-
adjustToggleButton(visible) {
115+
updateState(visible) {
115116
const [toShow, toHide] = document.querySelectorAll('.diff-toggle-file-tree-button .icon');
116-
toShow.classList.toggle('gt-hidden', visible); // hide the toShow icon if the tree is visible
117-
toHide.classList.toggle('gt-hidden', !visible); // similarly
118-
119-
const diffTree = document.getElementById('diff-file-tree');
120-
diffTree.classList.toggle('gt-hidden', !visible);
117+
const tree = document.getElementById('diff-file-tree');
118+
if (visible) {
119+
showElem(tree);
120+
hideElem(toShow);
121+
showElem(toHide);
122+
} else {
123+
hideElem(tree);
124+
hideElem(toHide);
125+
showElem(toShow);
126+
}
121127
},
122128
loadMoreData() {
123129
this.isLoadingNewData = true;

0 commit comments

Comments
 (0)