From 12bc46a99fd5918e549df6be070357ea49ac40af Mon Sep 17 00:00:00 2001 From: Kenny Evitt Date: Wed, 13 Jun 2018 14:35:58 +0000 Subject: Replace one word in todos.md --- doc/workflow/todos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/workflow/todos.md b/doc/workflow/todos.md index 762bf616268..84e7a543352 100644 --- a/doc/workflow/todos.md +++ b/doc/workflow/todos.md @@ -14,7 +14,7 @@ in a simple dashboard. --- -You can quickly access the Todos dashboard using the bell icon next to the +You can quickly access the Todos dashboard using the checkmark icon next to the search bar in the upper right corner. The number in blue is the number of Todos you still have open if the count is < 100, else it's 99+. The exact number will still be shown in the body of the _To do_ tab. -- cgit v1.2.1 From 17697e90a2ae981fdc3829510186e429d30a7b22 Mon Sep 17 00:00:00 2001 From: Martin Wortschack Date: Fri, 17 Aug 2018 17:54:40 +0200 Subject: keeps margin for user status emojis consistent - adds extra margin to the user-status-emoji - removes whitespaces from the issable_meta helper --- app/assets/stylesheets/pages/issuable.scss | 9 +++++++++ app/assets/stylesheets/pages/members.scss | 9 +++++++++ app/assets/stylesheets/pages/notes.scss | 9 +++++++++ app/helpers/issuables_helper.rb | 3 +-- .../49644-make-margin-of-user-status-emoji-consistent.yml | 5 +++++ 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss index d16a63d009a..cc10d305b40 100644 --- a/app/assets/stylesheets/pages/issuable.scss +++ b/app/assets/stylesheets/pages/issuable.scss @@ -701,6 +701,15 @@ align-self: center; overflow: hidden; text-overflow: ellipsis; + + .user-status-emoji { + margin: 0 8px 0 4px; + + gl-emoji { + font-size: 1em; + line-height: 1; + } + } } .js-issuable-selector-wrap { diff --git a/app/assets/stylesheets/pages/members.scss b/app/assets/stylesheets/pages/members.scss index 5fdb2b4a90a..1fd725ee589 100644 --- a/app/assets/stylesheets/pages/members.scss +++ b/app/assets/stylesheets/pages/members.scss @@ -195,6 +195,15 @@ word-break: break-all; } + .user-status-emoji { + margin-right: 4px; + + gl-emoji { + font-size: 1em; + line-height: 1; + } + } + .member-group-link { display: inline-block; } diff --git a/app/assets/stylesheets/pages/notes.scss b/app/assets/stylesheets/pages/notes.scss index 2e1b2126887..9a9977d43ac 100644 --- a/app/assets/stylesheets/pages/notes.scss +++ b/app/assets/stylesheets/pages/notes.scss @@ -421,6 +421,15 @@ ul.notes { &.discussion { padding-bottom: 0; } + + .user-status-emoji { + margin-right: 4px; + + gl-emoji { + font-size: 1em; + line-height: 1; + } + } } .system-note .note-header-info { diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb index c84ed8091c3..79449a30305 100644 --- a/app/helpers/issuables_helper.rb +++ b/app/helpers/issuables_helper.rb @@ -174,13 +174,12 @@ module IssuablesHelper author_output << link_to_member(project, issuable.author, size: 24, by_username: true, avatar: false, mobile_classes: "d-block d-sm-none") if status = user_status(issuable.author) - author_output << "  #{status}".html_safe + author_output << "#{status}".html_safe end author_output end - output << " ".html_safe output << content_tag(:span, (issuable_first_contribution_icon if issuable.first_contribution?), class: 'has-tooltip', title: _('1st contribution!')) output << content_tag(:span, (issuable.task_status if issuable.tasks?), id: "task_status", class: "d-none d-sm-none d-md-inline-block") diff --git a/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml b/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml new file mode 100644 index 00000000000..699613d40ce --- /dev/null +++ b/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml @@ -0,0 +1,5 @@ +--- +title: Make margin of user status emoji consistent +merge_request: +author: +type: other -- cgit v1.2.1 From 25c66c516d653bbd2a8f99b32581008d07fd0180 Mon Sep 17 00:00:00 2001 From: Mayra Cabrera Date: Wed, 15 Aug 2018 09:20:21 -0500 Subject: Adds documentation stating ADO will be gradually enabled on 11.3 --- doc/topics/autodevops/index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index 0474182e324..c3ec4d0598b 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -238,6 +238,12 @@ There is also a feature flag to enable Auto DevOps to a percentage of projects which can be enabled from the console with `Feature.get(:force_autodevops_on_by_default).enable_percentage_of_actors(10)`. +NOTE: **Enabled by default:** +Starting with GitLab 11.3, the Auto DevOps pipeline will be enabled by default for all +projects. If it's not explicitly enabled for the project, Auto DevOps will be automatically +disabled on the first pipeline failure. Your project will continue to use an alternative +[CI/CD configuration file](../../ci/yaml/README.md) if one is found. + ### Deployment strategy > [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/38542) in GitLab 11.0. -- cgit v1.2.1 From 0a1c805d851c8945baf540736024ebc5d385ce58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarka=20Kadlecov=C3=A1?= Date: Mon, 20 Aug 2018 14:46:22 +0200 Subject: Fix NamespaceUploader.base_dir for remote uploads --- app/uploaders/namespace_file_uploader.rb | 18 +++++++++--------- changelogs/unreleased/fix-namespace-uploader.yml | 5 +++++ spec/uploaders/namespace_file_uploader_spec.rb | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 changelogs/unreleased/fix-namespace-uploader.yml diff --git a/app/uploaders/namespace_file_uploader.rb b/app/uploaders/namespace_file_uploader.rb index 52969762b7d..b0154f85a5c 100644 --- a/app/uploaders/namespace_file_uploader.rb +++ b/app/uploaders/namespace_file_uploader.rb @@ -6,8 +6,15 @@ class NamespaceFileUploader < FileUploader options.storage_path end - def self.base_dir(model, _store = nil) - File.join(options.base_dir, 'namespace', model_path_segment(model)) + def self.base_dir(model, store = nil) + base_dirs(model)[store || Store::LOCAL] + end + + def self.base_dirs(model) + { + Store::LOCAL => File.join(options.base_dir, 'namespace', model_path_segment(model)), + Store::REMOTE => File.join('namespace', model_path_segment(model)) + } end def self.model_path_segment(model) @@ -18,11 +25,4 @@ class NamespaceFileUploader < FileUploader def store_dir store_dirs[object_store] end - - def store_dirs - { - Store::LOCAL => File.join(base_dir, dynamic_segment), - Store::REMOTE => File.join('namespace', self.class.model_path_segment(model), dynamic_segment) - } - end end diff --git a/changelogs/unreleased/fix-namespace-uploader.yml b/changelogs/unreleased/fix-namespace-uploader.yml new file mode 100644 index 00000000000..081adc9a6f1 --- /dev/null +++ b/changelogs/unreleased/fix-namespace-uploader.yml @@ -0,0 +1,5 @@ +--- +title: Fix NamespaceUploader.base_dir for remote uploads +merge_request: +author: +type: fixed diff --git a/spec/uploaders/namespace_file_uploader_spec.rb b/spec/uploaders/namespace_file_uploader_spec.rb index 71fe2c353c0..eafbea07e10 100644 --- a/spec/uploaders/namespace_file_uploader_spec.rb +++ b/spec/uploaders/namespace_file_uploader_spec.rb @@ -26,6 +26,20 @@ describe NamespaceFileUploader do upload_path: IDENTIFIER end + context '.base_dir' do + it 'returns local storage base_dir without store param' do + expect(described_class.base_dir(group)).to eq("uploads/-/system/namespace/#{group.id}") + end + + it 'returns local storage base_dir when store param is Store::LOCAL' do + expect(described_class.base_dir(group, ObjectStorage::Store::LOCAL)).to eq("uploads/-/system/namespace/#{group.id}") + end + + it 'returns remote base_dir when store param is Store::REMOTE' do + expect(described_class.base_dir(group, ObjectStorage::Store::REMOTE)).to eq("namespace/#{group.id}") + end + end + describe "#migrate!" do before do uploader.store!(fixture_file_upload(File.join('spec/fixtures/doc_sample.txt'))) -- cgit v1.2.1 From 77ca5b4f12c6b930afb08b313b85233852e85f8d Mon Sep 17 00:00:00 2001 From: Martin Wortschack Date: Tue, 21 Aug 2018 17:30:12 +0200 Subject: resolves MR discussions: - adds MR# to changelog - adds pixel variables for margin - changes line-height for user-status-emoji --- app/assets/stylesheets/pages/issuable.scss | 4 ++-- app/assets/stylesheets/pages/members.scss | 4 ++-- app/assets/stylesheets/pages/notes.scss | 2 +- .../unreleased/49644-make-margin-of-user-status-emoji-consistent.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss index cc10d305b40..0a73f0877ff 100644 --- a/app/assets/stylesheets/pages/issuable.scss +++ b/app/assets/stylesheets/pages/issuable.scss @@ -703,11 +703,11 @@ text-overflow: ellipsis; .user-status-emoji { - margin: 0 8px 0 4px; + margin: 0 $gl-padding-8 0 $gl-padding-4; gl-emoji { font-size: 1em; - line-height: 1; + line-height: 16px; } } } diff --git a/app/assets/stylesheets/pages/members.scss b/app/assets/stylesheets/pages/members.scss index 1fd725ee589..dd332845ea5 100644 --- a/app/assets/stylesheets/pages/members.scss +++ b/app/assets/stylesheets/pages/members.scss @@ -196,11 +196,11 @@ } .user-status-emoji { - margin-right: 4px; + margin-right: $gl-padding-4; gl-emoji { font-size: 1em; - line-height: 1; + line-height: 16px; } } diff --git a/app/assets/stylesheets/pages/notes.scss b/app/assets/stylesheets/pages/notes.scss index 9a9977d43ac..3d28adcb156 100644 --- a/app/assets/stylesheets/pages/notes.scss +++ b/app/assets/stylesheets/pages/notes.scss @@ -427,7 +427,7 @@ ul.notes { gl-emoji { font-size: 1em; - line-height: 1; + line-height: 16px; } } } diff --git a/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml b/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml index 699613d40ce..a2ae582fb1c 100644 --- a/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml +++ b/changelogs/unreleased/49644-make-margin-of-user-status-emoji-consistent.yml @@ -1,5 +1,5 @@ --- title: Make margin of user status emoji consistent -merge_request: +merge_request: 21268 author: type: other -- cgit v1.2.1 From 290512db5b09d67447b7c984fc47f1c896400885 Mon Sep 17 00:00:00 2001 From: Martin Wortschack Date: Sun, 26 Aug 2018 17:26:50 +0200 Subject: set margin for user status emoji globally --- app/assets/stylesheets/framework/emojis.scss | 10 ++++++++++ app/assets/stylesheets/pages/issuable.scss | 5 ----- app/assets/stylesheets/pages/members.scss | 9 --------- app/assets/stylesheets/pages/notes.scss | 9 --------- 4 files changed, 10 insertions(+), 23 deletions(-) diff --git a/app/assets/stylesheets/framework/emojis.scss b/app/assets/stylesheets/framework/emojis.scss index a8ec1e1145a..8bda1c311ee 100644 --- a/app/assets/stylesheets/framework/emojis.scss +++ b/app/assets/stylesheets/framework/emojis.scss @@ -6,3 +6,13 @@ gl-emoji { font-size: 1.5em; line-height: 0.9; } + +.user-status-emoji { + margin-right: $gl-padding-4; + + gl-emoji { + font-size: 1em; + line-height: 16px; + vertical-align: baseline; + } +} diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss index 0a73f0877ff..65dbac0d7aa 100644 --- a/app/assets/stylesheets/pages/issuable.scss +++ b/app/assets/stylesheets/pages/issuable.scss @@ -704,11 +704,6 @@ .user-status-emoji { margin: 0 $gl-padding-8 0 $gl-padding-4; - - gl-emoji { - font-size: 1em; - line-height: 16px; - } } } diff --git a/app/assets/stylesheets/pages/members.scss b/app/assets/stylesheets/pages/members.scss index dd332845ea5..5fdb2b4a90a 100644 --- a/app/assets/stylesheets/pages/members.scss +++ b/app/assets/stylesheets/pages/members.scss @@ -195,15 +195,6 @@ word-break: break-all; } - .user-status-emoji { - margin-right: $gl-padding-4; - - gl-emoji { - font-size: 1em; - line-height: 16px; - } - } - .member-group-link { display: inline-block; } diff --git a/app/assets/stylesheets/pages/notes.scss b/app/assets/stylesheets/pages/notes.scss index 3d28adcb156..2e1b2126887 100644 --- a/app/assets/stylesheets/pages/notes.scss +++ b/app/assets/stylesheets/pages/notes.scss @@ -421,15 +421,6 @@ ul.notes { &.discussion { padding-bottom: 0; } - - .user-status-emoji { - margin-right: 4px; - - gl-emoji { - font-size: 1em; - line-height: 16px; - } - } } .system-note .note-header-info { -- cgit v1.2.1 From 8a5121eb8efcd330b518ad0194cd9779a18facf6 Mon Sep 17 00:00:00 2001 From: Simon Knox Date: Mon, 27 Aug 2018 14:46:19 +1000 Subject: don't add trailing = when in urlParamsToArray function --- .../javascripts/boards/components/modal/index.vue | 14 +++---- app/assets/javascripts/boards/models/list.js | 7 +++- app/assets/javascripts/boards/utils/query_data.js | 21 ---------- app/assets/javascripts/lib/utils/common_utils.js | 47 +++++++++++++++++----- spec/javascripts/boards/mock_data.js | 2 +- spec/javascripts/boards/utils/query_data_spec.js | 27 ------------- spec/javascripts/lib/utils/common_utils_spec.js | 40 +++++++++++++----- 7 files changed, 80 insertions(+), 78 deletions(-) delete mode 100644 app/assets/javascripts/boards/utils/query_data.js delete mode 100644 spec/javascripts/boards/utils/query_data_spec.js diff --git a/app/assets/javascripts/boards/components/modal/index.vue b/app/assets/javascripts/boards/components/modal/index.vue index 33e72a6782e..7b33a7573e7 100644 --- a/app/assets/javascripts/boards/components/modal/index.vue +++ b/app/assets/javascripts/boards/components/modal/index.vue @@ -1,6 +1,6 @@ - - diff --git a/app/assets/javascripts/ide/components/new_dropdown/modal.vue b/app/assets/javascripts/ide/components/new_dropdown/modal.vue index c6fa5eb3246..bcd53ac1ba2 100644 --- a/app/assets/javascripts/ide/components/new_dropdown/modal.vue +++ b/app/assets/javascripts/ide/components/new_dropdown/modal.vue @@ -51,6 +51,9 @@ export default { return __('Create file'); }, + isCreatingNew() { + return this.entryModal.type !== modalTypes.rename; + }, }, methods: { ...mapActions(['createTempEntry', 'renameEntry']), @@ -110,7 +113,10 @@ export default { class="form-control" placeholder="/dir/file_name" /> -
{ -- cgit v1.2.1 From f8214f956883b44e9cc4835646b678ef1bc7a25c Mon Sep 17 00:00:00 2001 From: Tim Zallmann Date: Mon, 3 Sep 2018 18:05:36 +0200 Subject: Fixed Left side comments --- app/assets/javascripts/commons/vue.js | 2 -- app/assets/javascripts/diffs/store/actions.js | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/commons/vue.js b/app/assets/javascripts/commons/vue.js index 3b368243cc5..798623b94fb 100644 --- a/app/assets/javascripts/commons/vue.js +++ b/app/assets/javascripts/commons/vue.js @@ -1,8 +1,6 @@ import Vue from 'vue'; import '../vue_shared/vue_resource_interceptor'; -Vue.config.performance = true; - if (process.env.NODE_ENV !== 'production') { Vue.config.productionTip = false; } diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 2db08ebf728..365cf61d5eb 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -42,7 +42,11 @@ export const assignDiscussionsToDiff = ({ state }, allLineDiscussions) => { ); if (targetLine) { - Object.assign(targetLine.right, { discussions }); + if (targetLine.left && targetLine.left.lineCode === discussions[0].line_code) { + Object.assign(targetLine.left, { discussions }); + } else { + Object.assign(targetLine.right, { discussions }); + } } const targetInlineLine = selectedFile.highlightedDiffLines.find( -- cgit v1.2.1 From cee271ee3476fa357cbc8ba4414cad6118b04d7e Mon Sep 17 00:00:00 2001 From: Tim Zallmann Date: Mon, 3 Sep 2018 22:56:09 +0200 Subject: Fix for displaying left side comments when no discussion available --- .../diffs/components/parallel_diff_comment_row.vue | 4 +++- app/assets/javascripts/diffs/store/actions.js | 12 +++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/diffs/components/parallel_diff_comment_row.vue b/app/assets/javascripts/diffs/components/parallel_diff_comment_row.vue index 90f7fd22b5c..26417c350cb 100644 --- a/app/assets/javascripts/diffs/components/parallel_diff_comment_row.vue +++ b/app/assets/javascripts/diffs/components/parallel_diff_comment_row.vue @@ -57,7 +57,9 @@ export default { ); }, showRightSideCommentForm() { - return this.line.right.type && this.diffLineCommentForms[this.rightLineCode]; + return ( + this.line.right && this.line.right.type && this.diffLineCommentForms[this.rightLineCode] + ); }, className() { return (this.left && this.line.left.discussions.length > 0) || diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 365cf61d5eb..1838394422a 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -49,12 +49,14 @@ export const assignDiscussionsToDiff = ({ state }, allLineDiscussions) => { } } - const targetInlineLine = selectedFile.highlightedDiffLines.find( - line => line.lineCode === discussions[0].line_code, - ); + if (selectedFile.highlightedDiffLines) { + const targetInlineLine = selectedFile.highlightedDiffLines.find( + line => line.lineCode === discussions[0].line_code, + ); - if (targetInlineLine) { - Object.assign(targetInlineLine, { discussions }); + if (targetInlineLine) { + Object.assign(targetInlineLine, { discussions }); + } } } } -- cgit v1.2.1 From c9bacfd6823de77de6b60db39190190b502681e0 Mon Sep 17 00:00:00 2001 From: Tim Zallmann Date: Wed, 5 Sep 2018 10:28:49 +0200 Subject: Fixed Resolving, Loading more and Line Bugs --- .../components/resolve_discussion_btn.js | 20 ++++---- .../javascripts/diff_notes/services/resolve.js | 9 +--- app/assets/javascripts/diffs/components/app.vue | 18 ++++--- .../javascripts/diffs/components/diff_file.vue | 33 ++++++++----- .../diffs/components/diff_line_gutter_content.vue | 3 +- app/assets/javascripts/diffs/store/actions.js | 21 +++++--- .../javascripts/diffs/store/mutation_types.js | 2 + app/assets/javascripts/diffs/store/mutations.js | 57 ++++++---------------- app/assets/javascripts/diffs/store/utils.js | 39 +++++++++++++++ .../javascripts/notes/components/notes_app.vue | 1 + app/assets/javascripts/notes/stores/mutations.js | 11 +---- 11 files changed, 119 insertions(+), 95 deletions(-) diff --git a/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js b/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js index 5ed13488788..ae31005a2d2 100644 --- a/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js +++ b/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js @@ -25,44 +25,44 @@ const ResolveDiscussionBtn = Vue.extend({ }; }, computed: { - showButton: function () { + showButton: function() { if (this.discussion) { return this.discussion.isResolvable(); } else { return false; } }, - isDiscussionResolved: function () { + isDiscussionResolved: function() { if (this.discussion) { return this.discussion.isResolved(); } else { return false; } }, - buttonText: function () { + buttonText: function() { if (this.isDiscussionResolved) { - return "Unresolve discussion"; + return 'Unresolve discussion'; } else { - return "Resolve discussion"; + return 'Resolve discussion'; } }, - loading: function () { + loading: function() { if (this.discussion) { return this.discussion.loading; } else { return false; } - } + }, }, - created: function () { + created: function() { CommentsStore.createDiscussion(this.discussionId, this.canResolve); this.discussion = CommentsStore.state[this.discussionId]; }, methods: { - resolve: function () { + resolve: function() { ResolveService.toggleResolveForDiscussion(this.mergeRequestId, this.discussionId); - } + }, }, }); diff --git a/app/assets/javascripts/diff_notes/services/resolve.js b/app/assets/javascripts/diff_notes/services/resolve.js index 0b3568e432d..e69eaad4423 100644 --- a/app/assets/javascripts/diff_notes/services/resolve.js +++ b/app/assets/javascripts/diff_notes/services/resolve.js @@ -8,9 +8,7 @@ window.gl = window.gl || {}; class ResolveServiceClass { constructor(root) { - this.noteResource = Vue.resource( - `${root}/notes{/noteId}/resolve?html=true`, - ); + this.noteResource = Vue.resource(`${root}/notes{/noteId}/resolve?html=true`); this.discussionResource = Vue.resource( `${root}/merge_requests{/mergeRequestId}/discussions{/discussionId}/resolve?html=true`, ); @@ -51,10 +49,7 @@ class ResolveServiceClass { discussion.updateHeadline(data); }) .catch( - () => - new Flash( - 'An error occurred when trying to resolve a discussion. Please try again.', - ), + () => new Flash('An error occurred when trying to resolve a discussion. Please try again.'), ); } diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index 7ec7ee893af..13ff79029d0 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -112,6 +112,7 @@ export default { }, created() { this.adjustView(); + eventHub.$once('fetchedNotesData', this.setDiscussions); }, methods: { ...mapActions('diffs', [ @@ -128,12 +129,7 @@ export default { () => { this.startRenderDiffsQueue() .then(() => { - requestIdleCallback( - () => { - this.assignDiscussionsToDiff(this.discussionsStructuredByLineCode); - }, - { timeout: 1000 }, - ); + this.setDiscussions(); }) .catch(() => { createFlash(__('Something went wrong on our end. Please try again!')); @@ -150,6 +146,16 @@ export default { eventHub.$emit('fetchNotesData'); } }, + setDiscussions() { + if (this.isNotesFetched) { + requestIdleCallback( + () => { + this.assignDiscussionsToDiff(this.discussionsStructuredByLineCode); + }, + { timeout: 1000 }, + ); + } + }, adjustView() { if (this.shouldShow && this.isParallelView) { window.mrTabs.expandViewContainer(); diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue index 59e9ba08b8b..a0197e95456 100644 --- a/app/assets/javascripts/diffs/components/diff_file.vue +++ b/app/assets/javascripts/diffs/components/diff_file.vue @@ -1,5 +1,5 @@ + + diff --git a/app/assets/javascripts/ide/components/commit_sidebar/list.vue b/app/assets/javascripts/ide/components/commit_sidebar/list.vue index d0fb0e3d99e..9b4cea35538 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/list.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/list.vue @@ -56,6 +56,11 @@ export default { type: String, required: true, }, + emptyStateText: { + type: String, + required: false, + default: __('No changes'), + }, }, computed: { titleText() { @@ -91,17 +96,20 @@ export default { :name="iconName" :size="18" /> - {{ titleText }} + + {{ titleText }} +
- - {{ filesLength }} -
@@ -143,9 +143,9 @@ export default {

- {{ __('No changes') }} + {{ emptyStateText }}

diff --git a/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue b/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue index e6044401c9f..13e66e4bcf5 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue @@ -1,11 +1,14 @@ @@ -25,51 +39,48 @@ export default { diff --git a/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue b/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue index 9cec73ec00e..4a24cf65e5a 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue @@ -39,8 +39,8 @@ export default { @click="unstageChange(path)" > diff --git a/app/assets/javascripts/ide/components/ide.vue b/app/assets/javascripts/ide/components/ide.vue index 6a5ab35a16a..a3add3b778f 100644 --- a/app/assets/javascripts/ide/components/ide.vue +++ b/app/assets/javascripts/ide/components/ide.vue @@ -10,6 +10,7 @@ import RepoEditor from './repo_editor.vue'; import FindFile from './file_finder/index.vue'; import RightPane from './panes/right.vue'; import ErrorMessage from './error_message.vue'; +import CommitEditorHeader from './commit_sidebar/editor_header.vue'; const originalStopCallback = Mousetrap.stopCallback; @@ -23,6 +24,7 @@ export default { FindFile, RightPane, ErrorMessage, + CommitEditorHeader, }, computed: { ...mapState([ @@ -34,7 +36,7 @@ export default { 'currentProjectId', 'errorMessage', ]), - ...mapGetters(['activeFile', 'hasChanges', 'someUncommitedChanges']), + ...mapGetters(['activeFile', 'hasChanges', 'someUncommitedChanges', 'isCommitModeActive']), }, mounted() { window.onbeforeunload = e => this.onBeforeUnload(e); @@ -96,7 +98,12 @@ export default { diff --git a/app/assets/javascripts/ide/components/repo_commit_section.vue b/app/assets/javascripts/ide/components/repo_commit_section.vue index e24469f17ed..d3b24c5b793 100644 --- a/app/assets/javascripts/ide/components/repo_commit_section.vue +++ b/app/assets/javascripts/ide/components/repo_commit_section.vue @@ -97,7 +97,7 @@ export default { :active-file-key="activeFileKey" :empty-state-text="__('There are no unstaged changes')" action="stageAllChanges" - action-btn-icon="mobile-issue-close" + action-btn-icon="stage-all" item-action-component="stage-button" class="is-first" icon-name="unstaged" @@ -111,7 +111,7 @@ export default { :active-file-key="activeFileKey" :empty-state-text="__('There are no staged changes')" action="unstageAllChanges" - action-btn-icon="history" + action-btn-icon="unstage-all" item-action-component="unstage-button" icon-name="staged" /> diff --git a/app/assets/javascripts/ide/stores/actions/file.js b/app/assets/javascripts/ide/stores/actions/file.js index 28b9d0df201..30dcf7ef4df 100644 --- a/app/assets/javascripts/ide/stores/actions/file.js +++ b/app/assets/javascripts/ide/stores/actions/file.js @@ -5,7 +5,7 @@ import service from '../../services'; import * as types from '../mutation_types'; import router from '../../ide_router'; import { setPageTitle } from '../utils'; -import { viewerTypes } from '../../constants'; +import { viewerTypes, stageKeys } from '../../constants'; export const closeFile = ({ commit, state, dispatch }, file) => { const { path } = file; @@ -208,8 +208,9 @@ export const discardFileChanges = ({ dispatch, state, commit, getters }, path) = eventHub.$emit(`editor.update.model.dispose.unstaged-${file.key}`, file.content); }; -export const stageChange = ({ commit, state }, path) => { +export const stageChange = ({ commit, state, dispatch }, path) => { const stagedFile = state.stagedFiles.find(f => f.path === path); + const openFile = state.openFiles.find(f => f.path === path); commit(types.STAGE_CHANGE, path); commit(types.SET_LAST_COMMIT_MSG, ''); @@ -217,21 +218,39 @@ export const stageChange = ({ commit, state }, path) => { if (stagedFile) { eventHub.$emit(`editor.update.model.new.content.staged-${stagedFile.key}`, stagedFile.content); } + + if (openFile && openFile.active) { + const file = state.stagedFiles.find(f => f.path === path); + + dispatch('openPendingTab', { + file, + keyPrefix: stageKeys.staged, + }); + } }; -export const unstageChange = ({ commit }, path) => { +export const unstageChange = ({ commit, dispatch, state }, path) => { + const openFile = state.openFiles.find(f => f.path === path); + commit(types.UNSTAGE_CHANGE, path); + + if (openFile && openFile.active) { + const file = state.changedFiles.find(f => f.path === path); + + dispatch('openPendingTab', { + file, + keyPrefix: stageKeys.unstaged, + }); + } }; -export const openPendingTab = ({ commit, getters, dispatch, state }, { file, keyPrefix }) => { +export const openPendingTab = ({ commit, getters, state }, { file, keyPrefix }) => { if (getters.activeFile && getters.activeFile.key === `${keyPrefix}-${file.key}`) return false; state.openFiles.forEach(f => eventHub.$emit(`editor.update.model.dispose.${f.key}`)); commit(types.ADD_PENDING_TAB, { file, keyPrefix }); - dispatch('scrollToTab'); - router.push(`/project/${file.projectId}/tree/${state.currentBranchId}/`); return true; diff --git a/app/assets/stylesheets/page_bundles/ide.scss b/app/assets/stylesheets/page_bundles/ide.scss index 0f0890f9fb6..f4c99016696 100644 --- a/app/assets/stylesheets/page_bundles/ide.scss +++ b/app/assets/stylesheets/page_bundles/ide.scss @@ -574,17 +574,6 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; padding: 12px 0; } -.multi-file-commit-panel-header-title { - display: flex; - flex: 1; - align-items: center; - - svg { - margin-right: $gl-btn-padding; - color: $theme-gray-700; - } -} - .multi-file-commit-panel-collapse-btn { border-left: 1px solid $white-dark; margin-left: auto; diff --git a/package.json b/package.json index 7e6ddf0fca7..d5b747b4131 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "webpack-prod": "NODE_ENV=production webpack --config config/webpack.config.js" }, "dependencies": { - "@gitlab-org/gitlab-svgs": "^1.28.0", + "@gitlab-org/gitlab-svgs": "^1.29.0", "@gitlab-org/gitlab-ui": "1.0.5", "autosize": "^4.0.0", "axios": "^0.17.1", diff --git a/spec/javascripts/ide/components/commit_sidebar/stage_button_spec.js b/spec/javascripts/ide/components/commit_sidebar/stage_button_spec.js index a5b906da8a1..e09ccbe2a63 100644 --- a/spec/javascripts/ide/components/commit_sidebar/stage_button_spec.js +++ b/spec/javascripts/ide/components/commit_sidebar/stage_button_spec.js @@ -29,7 +29,7 @@ describe('IDE stage file button', () => { }); it('renders button to discard & stage', () => { - expect(vm.$el.querySelectorAll('.btn').length).toBe(2); + expect(vm.$el.querySelectorAll('.btn-blank').length).toBe(2); }); it('calls store with stage button', () => { @@ -39,7 +39,7 @@ describe('IDE stage file button', () => { }); it('calls store with discard button', () => { - vm.$el.querySelector('.dropdown-menu button').click(); + vm.$el.querySelector('.btn-danger').click(); expect(vm.discardFileChanges).toHaveBeenCalledWith(f.path); }); diff --git a/spec/javascripts/ide/components/repo_commit_section_spec.js b/spec/javascripts/ide/components/repo_commit_section_spec.js index 30cd92b2ca4..d09ccd7ac34 100644 --- a/spec/javascripts/ide/components/repo_commit_section_spec.js +++ b/spec/javascripts/ide/components/repo_commit_section_spec.js @@ -111,7 +111,7 @@ describe('RepoCommitSection', () => { .then(vm.$nextTick) .then(() => { expect(vm.$el.querySelector('.ide-commit-list-container').textContent).toContain( - 'No changes', + 'There are no unstaged changes', ); }) .then(done) @@ -133,7 +133,7 @@ describe('RepoCommitSection', () => { }); it('discards a single file', done => { - vm.$el.querySelector('.multi-file-discard-btn .dropdown-menu button').click(); + vm.$el.querySelector('.multi-file-commit-list li:first-child .js-modal-primary-action').click(); Vue.nextTick(() => { expect(vm.$el.querySelector('.ide-commit-list-container').textContent).not.toContain('file1'); diff --git a/yarn.lock b/yarn.lock index 6f96e5ff228..aa3ed1aa7eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,9 +82,9 @@ version "1.27.0" resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.27.0.tgz#638e70399ebd59e503732177316bb9a18bf7a13f" -"@gitlab-org/gitlab-svgs@^1.28.0": - version "1.28.0" - resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.28.0.tgz#f689dfd46504df0a75027d6dd4ea01a71cd46f88" +"@gitlab-org/gitlab-svgs@^1.29.0": + version "1.29.0" + resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.29.0.tgz#03b65b513f9099bbda6ecf94d673a2952f8c6c70" "@gitlab-org/gitlab-ui@1.0.5": version "1.0.5" -- cgit v1.2.1 From ebc15f4318ed23ccdfe7dc543721968ae92daae0 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 4 Sep 2018 09:00:25 +0100 Subject: design improvements --- .../ide/components/commit_sidebar/list.vue | 8 +++--- .../ide/components/commit_sidebar/list_item.vue | 29 ++++++++++++------- .../ide/components/commit_sidebar/stage_button.vue | 8 ++++-- .../components/commit_sidebar/unstage_button.vue | 3 +- app/assets/stylesheets/page_bundles/ide.scss | 33 ++++++++++++++++------ 5 files changed, 54 insertions(+), 27 deletions(-) diff --git a/app/assets/javascripts/ide/components/commit_sidebar/list.vue b/app/assets/javascripts/ide/components/commit_sidebar/list.vue index 92cd46e9385..a69df0956bc 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/list.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/list.vue @@ -97,7 +97,7 @@ export default { class="ide-commit-list-container" >
diff --git a/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue b/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue index 391004dcd3c..10c78a80302 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue @@ -2,6 +2,7 @@ import { mapActions } from 'vuex'; import tooltip from '~/vue_shared/directives/tooltip'; import Icon from '~/vue_shared/components/icon.vue'; +import FileIcon from '~/vue_shared/components/file_icon.vue'; import StageButton from './stage_button.vue'; import UnstageButton from './unstage_button.vue'; import { viewerTypes } from '../../constants'; @@ -12,6 +13,7 @@ export default { Icon, StageButton, UnstageButton, + FileIcon, }, directives: { tooltip, @@ -48,7 +50,7 @@ export default { return `${getCommitIconMap(this.file).icon}${suffix}`; }, iconClass() { - return `${getCommitIconMap(this.file).class} append-right-8`; + return `${getCommitIconMap(this.file).class} ml-auto mr-auto`; }, fullKey() { return `${this.keyPrefix}-${this.file.key}`; @@ -105,17 +107,24 @@ export default { @click="openFileInEditor" > - {{ file.name }} +
+
+ +
+ +
- diff --git a/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue b/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue index 13e66e4bcf5..fb8392d2e1b 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue @@ -46,15 +46,16 @@ export default { :aria-label="__('Stage changes')" :title="__('Stage changes')" type="button" - class="btn btn-blank append-right-8 d-flex align-items-center" + class="btn btn-blank d-flex align-items-center" data-container="body" data-boundary="viewport" data-placement="bottom" - @click="stageChange(path)" + @click.stop.prevent="stageChange(path)" > diff --git a/app/assets/stylesheets/page_bundles/ide.scss b/app/assets/stylesheets/page_bundles/ide.scss index f4c99016696..2eadc55bdfd 100644 --- a/app/assets/stylesheets/page_bundles/ide.scss +++ b/app/assets/stylesheets/page_bundles/ide.scss @@ -567,9 +567,7 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; } .multi-file-commit-panel-header { - display: flex; - align-items: center; - margin-bottom: 0; + height: 48px; border-bottom: 1px solid $white-dark; padding: 12px 0; } @@ -583,8 +581,6 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; flex: 1; overflow: auto; padding: $grid-size 0; - margin-left: -$grid-size; - margin-right: -$grid-size; min-height: 60px; &.form-text.text-muted { @@ -649,6 +645,8 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; .multi-file-commit-list-path { cursor: pointer; + height: 32px; + padding-right: 0; &.is-active { background-color: $white-normal; @@ -657,6 +655,10 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; &:hover, &:focus { outline: 0; + + .multi-file-discard-btn { + display: flex; + } } svg { @@ -676,13 +678,16 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; } .multi-file-discard-btn { - top: 4px; - right: 8px; - bottom: 4px; + display: none; svg { top: 0; } + + .btn { + width: 32px; + height: 32px; + } } .multi-file-commit-form { @@ -797,6 +802,10 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; } .ide-staged-action-btn { + width: 32px; + height: 32px; + color: inherit; + > svg { top: 0; } @@ -1443,7 +1452,13 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; } .ide-commit-editor-header { + height: 65px; padding: 8px 16px; - background-color: $white-normal; + background-color: $theme-gray-50; box-shadow: inset 0 -1px $white-dark; } + +.ide-commit-list-changed-icon { + width: 32px; + height: 32px; +} -- cgit v1.2.1 From 93e84c8f28f9bad8c09a720ce008dba1f50aadcd Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 4 Sep 2018 09:03:36 +0100 Subject: fixed tests --- locale/gitlab.pot | 6 ++++++ spec/javascripts/ide/stores/actions/file_spec.js | 15 --------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index a9b0d8a4662..0faad99ff11 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -2304,6 +2304,9 @@ msgstr "" msgid "Discard" msgstr "" +msgid "Discard all changes" +msgstr "" + msgid "Discard changes" msgstr "" @@ -6655,6 +6658,9 @@ msgstr "" msgid "You will loose all changes you've made to this file. This action cannot be undone." msgstr "" +msgid "You will loose all the unstaged changes you've made in this project. This action cannot be undone." +msgstr "" + msgid "You will not get any notifications via email" msgstr "" diff --git a/spec/javascripts/ide/stores/actions/file_spec.js b/spec/javascripts/ide/stores/actions/file_spec.js index bca2033ff97..1ca811e996b 100644 --- a/spec/javascripts/ide/stores/actions/file_spec.js +++ b/spec/javascripts/ide/stores/actions/file_spec.js @@ -692,21 +692,6 @@ describe('IDE store file actions', () => { .then(done) .catch(done.fail); }); - - it('calls scrollToTab', done => { - const scrollToTabSpy = jasmine.createSpy('scrollToTab'); - const oldScrollToTab = store._actions.scrollToTab; // eslint-disable-line - store._actions.scrollToTab = [scrollToTabSpy]; // eslint-disable-line - - store - .dispatch('openPendingTab', { file: f, keyPrefix: 'pending' }) - .then(() => { - expect(scrollToTabSpy).toHaveBeenCalled(); - store._actions.scrollToTab = oldScrollToTab; // eslint-disable-line - }) - .then(done) - .catch(done.fail); - }); }); describe('removePendingTab', () => { -- cgit v1.2.1 From cfb67193bf7cc9377d82cc6fa99d232627a64600 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 4 Sep 2018 09:30:46 +0100 Subject: fixed discard modal not showing --- .../ide/components/commit_sidebar/stage_button.vue | 4 ++-- .../ide/components/commit_sidebar/unstage_button.vue | 2 +- app/assets/stylesheets/page_bundles/ide.scss | 15 ++++++++------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue b/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue index fb8392d2e1b..62469e9f98a 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue @@ -46,7 +46,7 @@ export default { :aria-label="__('Stage changes')" :title="__('Stage changes')" type="button" - class="btn btn-blank d-flex align-items-center" + class="btn btn-blank align-items-center" data-container="body" data-boundary="viewport" data-placement="bottom" @@ -63,7 +63,7 @@ export default { :aria-label="__('Discard changes')" :title="__('Discard changes')" type="button" - class="btn btn-blank d-flex align-items-center" + class="btn btn-blank align-items-center" data-container="body" data-boundary="viewport" data-placement="bottom" diff --git a/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue b/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue index 95c80c31d41..18830ab81ff 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue @@ -32,7 +32,7 @@ export default { :aria-label="__('Unstage changes')" :title="__('Unstage changes')" type="button" - class="btn btn-blank d-flex align-items-center" + class="btn btn-blank align-items-center" data-container="body" data-boundary="viewport" data-placement="bottom" diff --git a/app/assets/stylesheets/page_bundles/ide.scss b/app/assets/stylesheets/page_bundles/ide.scss index 2eadc55bdfd..35ba1fca2b7 100644 --- a/app/assets/stylesheets/page_bundles/ide.scss +++ b/app/assets/stylesheets/page_bundles/ide.scss @@ -657,7 +657,9 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; outline: 0; .multi-file-discard-btn { - display: flex; + > .btn { + display: flex; + } } } @@ -678,16 +680,15 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; } .multi-file-discard-btn { - display: none; + > .btn { + display: none; + width: 32px; + height: 32px; + } svg { top: 0; } - - .btn { - width: 32px; - height: 32px; - } } .multi-file-commit-form { -- cgit v1.2.1 From 04f4b86826b27219b0384605e11d145ff0671682 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 4 Sep 2018 09:37:38 +0100 Subject: update state when staging/unstaging all --- .../ide/components/commit_sidebar/list.vue | 4 ++-- .../ide/components/commit_sidebar/stage_button.vue | 2 +- .../ide/components/commit_sidebar/unstage_button.vue | 2 +- app/assets/javascripts/ide/stores/actions.js | 19 +++++++++++++++++-- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/ide/components/commit_sidebar/list.vue b/app/assets/javascripts/ide/components/commit_sidebar/list.vue index a69df0956bc..daae3be7d44 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/list.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/list.vue @@ -137,8 +137,8 @@ export default {