From d17de657fe782eb838545aabeee00285e181dce1 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Fri, 15 Feb 2019 10:25:33 +0000 Subject: Make the file tree in merge requests resizable Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/51857 --- app/assets/javascripts/diffs/components/app.vue | 35 +++++++++++++++++++++- .../javascripts/diffs/components/tree_list.vue | 12 ++++++-- app/assets/javascripts/diffs/constants.js | 6 ++++ app/assets/javascripts/diffs/store/actions.js | 5 ++++ .../vue_shared/components/panel_resizer.vue | 7 +++-- app/assets/stylesheets/framework/common.scss | 12 ++++++++ app/assets/stylesheets/page_bundles/ide.scss | 19 ------------ app/assets/stylesheets/pages/diff.scss | 33 ++++++++++++-------- app/assets/stylesheets/pages/merge_requests.scss | 4 +-- 9 files changed, 94 insertions(+), 39 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index f0ce2579ee7..8f47931d14a 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -4,6 +4,7 @@ import Icon from '~/vue_shared/components/icon.vue'; import { __ } from '~/locale'; import createFlash from '~/flash'; import { GlLoadingIcon } from '@gitlab/ui'; +import PanelResizer from '~/vue_shared/components/panel_resizer.vue'; import eventHub from '../../notes/event_hub'; import CompareVersions from './compare_versions.vue'; import DiffFile from './diff_file.vue'; @@ -11,6 +12,13 @@ import NoChanges from './no_changes.vue'; import HiddenFilesWarning from './hidden_files_warning.vue'; import CommitWidget from './commit_widget.vue'; import TreeList from './tree_list.vue'; +import { + TREE_LIST_WIDTH_STORAGE_KEY, + INITIAL_TREE_WIDTH, + MIN_TREE_WIDTH, + MAX_TREE_WIDTH, + TREE_HIDE_STATS_WIDTH, +} from '../constants'; export default { name: 'DiffsApp', @@ -23,6 +31,7 @@ export default { CommitWidget, TreeList, GlLoadingIcon, + PanelResizer, }, props: { endpoint: { @@ -54,8 +63,12 @@ export default { }, }, data() { + const treeWidth = + parseInt(localStorage.getItem(TREE_LIST_WIDTH_STORAGE_KEY), 10) || INITIAL_TREE_WIDTH; + return { assignedDiscussions: false, + treeWidth, }; }, computed: { @@ -96,6 +109,9 @@ export default { this.startVersion.version_index === this.mergeRequestDiff.version_index) ); }, + hideFileStats() { + return this.treeWidth <= TREE_HIDE_STATS_WIDTH; + }, }, watch: { diffViewType() { @@ -142,6 +158,7 @@ export default { 'startRenderDiffsQueue', 'assignDiscussionsToDiff', 'setHighlightedRow', + 'cacheTreeListWidth', ]), fetchData() { this.fetchDiffFiles() @@ -184,6 +201,8 @@ export default { } }, }, + minTreeWidth: MIN_TREE_WIDTH, + maxTreeWidth: MAX_TREE_WIDTH, }; @@ -209,7 +228,21 @@ export default { :data-can-create-note="getNoteableData.current_user.can_create_note" class="files d-flex prepend-top-default" > -
+
+ + +