Commit bb482389 authored by Kushal Pandya's avatar Kushal Pandya

Merge branch '54981-extended-user-centric-tooltips-add-missing-cases' into 'master'

Resolve "Extended user centric tooltips: Add missing cases"

Closes #54981

See merge request gitlab-org/gitlab-ce!24132
parents fca17472 33cfeea1
...@@ -5,6 +5,7 @@ import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; ...@@ -5,6 +5,7 @@ import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import CIIcon from '~/vue_shared/components/ci_icon.vue'; import CIIcon from '~/vue_shared/components/ci_icon.vue';
import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
import CommitPipelineStatus from '~/projects/tree/components/commit_pipeline_status_component.vue'; import CommitPipelineStatus from '~/projects/tree/components/commit_pipeline_status_component.vue';
import initUserPopovers from '../../user_popovers';
/** /**
* CommitItem * CommitItem
...@@ -35,20 +36,30 @@ export default { ...@@ -35,20 +36,30 @@ export default {
}, },
}, },
computed: { computed: {
author() {
return this.commit.author || {};
},
authorName() { authorName() {
return (this.commit.author && this.commit.author.name) || this.commit.author_name; return this.author.name || this.commit.author_name;
},
authorClass() {
return this.author.name ? 'js-user-link' : '';
},
authorId() {
return this.author.id ? this.author.id : '';
}, },
authorUrl() { authorUrl() {
return ( return this.author.web_url || `mailto:${this.commit.author_email}`;
(this.commit.author && this.commit.author.web_url) || `mailto:${this.commit.author_email}`
);
}, },
authorAvatar() { authorAvatar() {
return ( return this.author.avatar_url || this.commit.author_gravatar_url;
(this.commit.author && this.commit.author.avatar_url) || this.commit.author_gravatar_url
);
}, },
}, },
created() {
this.$nextTick(() => {
initUserPopovers(this.$el.querySelectorAll('.js-user-link'));
});
},
}; };
</script> </script>
...@@ -81,7 +92,13 @@ export default { ...@@ -81,7 +92,13 @@ export default {
</button> </button>
<div class="commiter"> <div class="commiter">
<a :href="authorUrl" v-text="authorName"></a> {{ s__('CommitWidget|authored') }} <a
:href="authorUrl"
:class="authorClass"
:data-user-id="authorId"
v-text="authorName"
></a>
{{ s__('CommitWidget|authored') }}
<time-ago-tooltip :time="commit.authored_date" /> <time-ago-tooltip :time="commit.authored_date" />
</div> </div>
......
...@@ -154,7 +154,7 @@ module CommitsHelper ...@@ -154,7 +154,7 @@ module CommitsHelper
if user.nil? if user.nil?
mail_to(source_email, text, link_options) mail_to(source_email, text, link_options)
else else
link_to(text, user_path(user), link_options) link_to(text, user_path(user), { class: "commit-#{options[:source]}-link js-user-link", data: { user_id: user.id } })
end end
end end
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
= image_tag avatar_icon_for_user(user), class: "avatar", alt: '' = image_tag avatar_icon_for_user(user), class: "avatar", alt: ''
.row-main-content .row-main-content
.user-name.row-title.str-truncated-100 .user-name.row-title.str-truncated-100
= link_to user.name, [:admin, user] = link_to user.name, [:admin, user], class: "js-user-link", data: { user_id: user.id }
- if user.blocked? - if user.blocked?
%span.badge.badge-danger blocked %span.badge.badge-danger blocked
- if user.admin? - if user.admin?
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
- if user - if user
= image_tag avatar_icon_for_user(user, 40), class: "avatar s40", alt: '' = image_tag avatar_icon_for_user(user, 40), class: "avatar s40", alt: ''
.user-info .user-info
= link_to user.name, user_path(user), class: 'member' = link_to user.name, user_path(user), class: 'member js-user-link', data: { user_id: user.id }
= user_status(user) = user_status(user)
%span.cgray= user.to_reference %span.cgray= user.to_reference
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#{snippet.to_reference} &middot; #{snippet.to_reference} &middot;
authored #{time_ago_with_tooltip(snippet.created_at, placement: 'bottom', html_class: 'snippet-created-ago')} authored #{time_ago_with_tooltip(snippet.created_at, placement: 'bottom', html_class: 'snippet-created-ago')}
by by
= link_to user_snippets_path(snippet.author) do = link_to user_snippets_path(snippet.author), class: "js-user-link", data: { user_id: snippet.author.id } do
= snippet.author_name = snippet.author_name
- if link_project && snippet.project_id? - if link_project && snippet.project_id?
%span.d-none.d-sm-inline-block %span.d-none.d-sm-inline-block
......
---
title: User Popovers for Commit Infos, Member Lists and Snippets
merge_request: 24132
author:
type: added
...@@ -21,7 +21,7 @@ describe CommitsHelper do ...@@ -21,7 +21,7 @@ describe CommitsHelper do
expect(helper.commit_author_link(commit)) expect(helper.commit_author_link(commit))
.to include('Foo &lt;script&gt;') .to include('Foo &lt;script&gt;')
expect(helper.commit_author_link(commit, avatar: true)) expect(helper.commit_author_link(commit, avatar: true))
.to include('commit-author-name', 'Foo &lt;script&gt;') .to include('commit-author-name', 'js-user-link', 'Foo &lt;script&gt;')
end end
end end
......
...@@ -80,6 +80,8 @@ describe('diffs/components/commit_item', () => { ...@@ -80,6 +80,8 @@ describe('diffs/components/commit_item', () => {
expect(trimText(committerElement.textContent)).toEqual(expectedText); expect(trimText(committerElement.textContent)).toEqual(expectedText);
expect(nameElement).toHaveAttr('href', commit.author.web_url); expect(nameElement).toHaveAttr('href', commit.author.web_url);
expect(nameElement).toHaveText(commit.author.name); expect(nameElement).toHaveText(commit.author.name);
expect(nameElement).toHaveClass('js-user-link');
expect(nameElement.dataset.userId).toEqual(commit.author.id.toString());
}); });
describe('without commit description', () => { describe('without commit description', () => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment