Skip to content

Show the profile hover card for users in a user column - #3026

Open
a1rwulf wants to merge 1 commit into
nextcloud:mainfrom
SEADEV-Studios:feat_usergroup-profile-hover-card
Open

a1rwulf wants to merge 1 commit into
nextcloud:mainfrom
SEADEV-Studios:feat_usergroup-profile-hover-card

Conversation

@a1rwulf

@a1rwulf a1rwulf commented Sep 23, 2026

Copy link
Copy Markdown

Wraps user bubbles in a hover/focus popover that renders the profile hover card from @nextcloud/vue, so the profile of a referenced user can be viewed without leaving the table. Clicking the cell still starts editing. Groups and teams are unchanged.

🖼️ Screenshots

image

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔙 Backport requests are created or not needed: /backport to stableX.X
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

Out of scope

While testing the implementation I found that the hover dialog could be improved when a user profile has multiple emails.
See the screenshot, it is impossible to know which icon is which mailto action.
You need to hover it and check the mailto action in the left bottom of the browser window.
However that should be it's own improvment PR if wanted.

@enjeck enjeck left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to think about this. We once had this popover, but it was removed for some reason I don't remember. Not sure if that reason is still valid

@a1rwulf

a1rwulf commented Sep 28, 2026

Copy link
Copy Markdown
Author

I need to think about this. We once had this popover, but it was removed for some reason I don't remember. Not sure if that reason is still valid

If there was a reason to not have it, what about a setting in the dialog where you chose the datatype, so one can enable it while it's disabled by default?

@samin-z
samin-z self-requested a review September 29, 2026 08:50
@a1rwulf

a1rwulf commented Oct 7, 2026

Copy link
Copy Markdown
Author

Is there anything I can do to get this rolling?

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

@samin-z

samin-z commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Is there anything I can do to get this rolling?

@a1rwulf i'll absolutely have more updates in regard to this pr today.

@samin-z

samin-z commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

@enjeck
i believe you mean this pr as this functionality was removed as part of it
#1254

@enjeck

enjeck commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

@enjeck i believe you mean this pr as this functionality was removed as part of it #1254

Yes, that was it, thank you! Seems like there's nothing stopping this PR then, lemme see...

@enjeck enjeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this approach seems too complicated. What's stopping us from just using the component like I mentioned at #1254 (comment) ?

@a1rwulf
a1rwulf force-pushed the feat_usergroup-profile-hover-card branch from 2ad9fd0 to 8db20c2 Compare October 12, 2026 07:21
@a1rwulf

a1rwulf commented Oct 12, 2026

Copy link
Copy Markdown
Author

this approach seems too complicated. What's stopping us from just using the component like I mentioned at #1254 (comment) ?

Thanks for the review.
Your suggested approach is indeed more straight forward.
Can you have a look at the updated implementation?
Thanks.

@enjeck

enjeck commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

this approach seems too complicated. What's stopping us from just using the component like I mentioned at #1254 (comment) ?

Thanks for the review. Your suggested approach is indeed more straight forward. Can you have a look at the updated implementation? Thanks.

please show screenshot of what it looks like

@enjeck

enjeck commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

we don't need too many changes btw. Including the tests, not necessary

@a1rwulf

a1rwulf commented Oct 12, 2026

Copy link
Copy Markdown
Author
image

@a1rwulf

a1rwulf commented Oct 12, 2026

Copy link
Copy Markdown
Author

Ok reducing to the bare minimum brings up a bunch of questions that need to be answered.
My initial approach rendered the avatar and the name inside a bubble (so it matches how groups are rendered) and imho a user would expect hovering the bubble will bring up the profile dialog.

However changing to the Avatar and not applying custom styling results in this:
image

If I apply style so it matches the bubble, you still need to hover the avatar icon to get the profile dialog, hovering the name does nothing.
If we want the whole bubble to bring the dialog, we need to go back to my initial approach and place the popover over the whole bubble.

Can you let me know which approach you prefer?

@a1rwulf

a1rwulf commented Oct 14, 2026

Copy link
Copy Markdown
Author

@enjeck can you let me know which way you prefer?

  1. Render like in the last screenshot, so it's clear only hovering the Avatar brings up the dialog
  2. Render a pill, but still only hovering the Avatar brings up the dialog
  3. Render a pill, hovering works over whole pill (would need the old more complicated implementation)

@enjeck

enjeck commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

2. Render a pill, but still only hovering the Avatar brings up the dialog

i like option 2

class="usergroup-user"
:class="{ 'usergroup-user--current': isCurrentUser(item) }"
:style="{ height: `${entrySize}px` }">
<span class="usergroup-user__avatar" data-cy="usergroupUserAvatar" @click.stop>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you stop the click only when it hits an avatar with a menu? For example, call a method that checks event.target.closest() before calling event.stopPropagation().

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Comment on lines +15 to +16
<NcAvatar :user="item.id"
:display-name="item.displayName ?? item.id"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets disable the menu when the table is shown through a public token.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Comment on lines +245 to +247
&--current {
background-color: var(--color-primary-element-light);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old bubble marked the current user with primary. It would be nice to keep that

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need the tests

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the tests.

@a1rwulf
a1rwulf force-pushed the feat_usergroup-profile-hover-card branch from 8db20c2 to ad695ac Compare October 18, 2026 18:51
@a1rwulf

a1rwulf commented Oct 18, 2026

Copy link
Copy Markdown
Author
  1. Render a pill, but still only hovering the Avatar brings up the dialog

i like option 2

I have implemented it like this.
Regarding public tables I had to add a fix that crashed on my own tests.
If needed I could split this out.

@enjeck enjeck left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

failing tests are related. Pls fix

Renders users in a user column with NcAvatar and its built-in menu
next to the display name, so the profile of a referenced user can be
viewed without leaving the table. A click on an avatar with a menu
opens the menu instead of starting inline editing, the current user is
highlighted as before, and the menu is disabled on public shares.
Groups and teams keep the user bubble.

Assisted-by: ClaudeCode:claude-fable-5-1
Signed-off-by: Wolfgang Haupt <wolfgang@seadev-studios.com>
@a1rwulf
a1rwulf force-pushed the feat_usergroup-profile-hover-card branch from ad695ac to c6328b1 Compare October 25, 2026 15:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants