From 5d57965a0b4e0a103145a0a264c06c98790247ce Mon Sep 17 00:00:00 2001 From: Bryce Johnson Date: Sat, 15 Apr 2017 19:38:07 -0400 Subject: [PATCH 1/4] Consolidate user avatar Vue logic --- .../boards/components/issue_card_inner.js | 27 +++---- .../components/stage_code_component.js | 7 +- .../components/stage_issue_component.js | 8 +- .../components/stage_plan_component.js | 9 ++- .../components/stage_production_component.js | 8 +- .../components/stage_review_component.js | 8 +- .../components/stage_staging_component.js | 7 +- .../components/diff_note_avatars.js | 28 ++++--- .../components/environment_item.vue | 19 ++--- .../pipelines/components/pipeline_url.js | 22 ++--- .../vue_shared/components/commit.js | 20 ++--- .../user_avatar/user_avatar_image.vue | 79 ++++++++++++++++++ .../user_avatar/user_avatar_link.vue | 80 +++++++++++++++++++ .../user_avatar/user_avatar_size_mixin.js | 13 +++ .../user_avatar/user_avatar_svg.vue | 42 ++++++++++ app/assets/stylesheets/framework/icons.scss | 4 + .../stylesheets/pages/environments.scss | 4 - config/webpack.config.js | 5 +- .../merge_requests/diff_notes_avatars_spec.rb | 2 +- spec/javascripts/boards/issue_card_spec.js | 2 +- .../pipelines/pipeline_url_spec.js | 2 +- .../vue_shared/components/commit_spec.js | 2 +- .../components/pipelines_table_row_spec.js | 43 +++++++++- .../components/user_avatar_image_spec.js | 60 ++++++++++++++ .../components/user_avatar_link_spec.js | 58 ++++++++++++++ .../components/user_avatar_size_mixin_spec.js | 37 +++++++++ .../components/user_avatar_svg_spec.js | 35 ++++++++ 27 files changed, 554 insertions(+), 77 deletions(-) create mode 100644 app/assets/javascripts/vue_shared/components/user_avatar/user_avatar_image.vue create mode 100644 app/assets/javascripts/vue_shared/components/user_avatar/user_avatar_link.vue create mode 100644 app/assets/javascripts/vue_shared/components/user_avatar/user_avatar_size_mixin.js create mode 100644 app/assets/javascripts/vue_shared/components/user_avatar/user_avatar_svg.vue create mode 100644 spec/javascripts/vue_shared/components/user_avatar_image_spec.js create mode 100644 spec/javascripts/vue_shared/components/user_avatar_link_spec.js create mode 100644 spec/javascripts/vue_shared/components/user_avatar_size_mixin_spec.js create mode 100644 spec/javascripts/vue_shared/components/user_avatar_svg_spec.js diff --git a/app/assets/javascripts/boards/components/issue_card_inner.js b/app/assets/javascripts/boards/components/issue_card_inner.js index 710207db0c7416..4699ef5a51c7b6 100644 --- a/app/assets/javascripts/boards/components/issue_card_inner.js +++ b/app/assets/javascripts/boards/components/issue_card_inner.js @@ -1,4 +1,5 @@ import Vue from 'vue'; +import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue'; import eventHub from '../eventhub'; const Store = gl.issueBoards.BoardsStore; @@ -38,6 +39,9 @@ gl.issueBoards.IssueCardInner = Vue.extend({ maxCounter: 99, }; }, + components: { + userAvatarLink, + }, computed: { numberOverLimit() { return this.issue.assignees.length - this.limitBeforeCounter; @@ -146,23 +150,16 @@ gl.issueBoards.IssueCardInner = Vue.extend({
- - - + class="js-no-trigger" + :link-href="assigneeUrl(assignee)" + :img-alt="avatarUrlTitle(assignee)" + :img-src="assignee.avatar" + :tooltip-text="assigneeUrlTitle(assignee)" + tooltip-placement="bottom" + />
@@ -19,7 +23,8 @@ global.cycleAnalytics.StageCodeComponent = Vue.extend({