diff --git a/apps/comments/css/comments.scss b/apps/comments/css/comments.scss index a26649c1aa085..84d328ca6f58d 100644 --- a/apps/comments/css/comments.scss +++ b/apps/comments/css/comments.scss @@ -133,7 +133,7 @@ adding this brings them closer to the element**/ margin-top: 5px; } -#commentsTabView .comments li .message .avatar-name-wrapper, + .atwho-view-ul * .avatar-name-wrapper, #commentsTabView .comment .authorRow { position: relative; @@ -144,24 +144,34 @@ #commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser), #commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar, +#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img, #commentsTabView .comment .authorRow .avatar:not(.currentUser), #commentsTabView .comment .authorRow .author:not(.currentUser) { cursor: pointer; } .atwho-view-ul .avatar-name-wrapper, -.atwho-view-ul .avatar-name-wrapper .avatar { +.atwho-view-ul .avatar-name-wrapper .avatar, +.atwho-view-ul .avatar-name-wrapper .avatar img { cursor: pointer; } #commentsTabView .comments li .message .atwho-inserted, #commentsTabView .newCommentForm .atwho-inserted { .avatar-name-wrapper { + /* Make the wrapper the positioning context of its child contacts + * menu. */ + position: relative; + display: inline; vertical-align: top; background-color: var(--color-background-dark); border-radius: 50vh; padding: 1px 7px 1px 1px; + + /* Ensure that the avatar and the user name will be kept together. */ + white-space: nowrap; + .avatar { img { vertical-align: top; @@ -174,6 +184,15 @@ margin-left: 0; margin-right: 2px; } + strong { + /* Ensure that the user name is shown in bold, as different browsers + * use different font weights for strong elements. */ + font-weight: bold; + } + } + .avatar-name-wrapper.currentUser { + background-color: var(--color-primary); + color: var(--color-primary-text); } } @@ -234,4 +253,4 @@ .app-files .action-comment { padding: 16px 14px; -} \ No newline at end of file +} diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js index 8b20bac571b01..3c428fe86a62e 100644 --- a/apps/comments/js/commentstabview.js +++ b/apps/comments/js/commentstabview.js @@ -196,24 +196,26 @@ sorter: function (q, items) { return items; } }, displayTpl: function (item) { - return '
  • ' - + '' - + '
    ' - + ' ' + escapeHTML(item.label) + '' - + '
  • '; + return '
  • ' + + '' + + '' + + '' + + '' + escapeHTML(item.label) + '' + + '
  • '; }, insertTpl: function (item) { - return '' - + '' - + '
    ' - + ' ' + escapeHTML(item.label) + '' - + '
    '; + return '' + + '' + + '' + + '' + + '' + escapeHTML(item.label) + '' + + ''; }, searchKey: "label" }); @@ -224,7 +226,7 @@ // passing the whole comments form would re-apply and request // avatars from the server $(je.target).find( - 'div[data-username="' + $el.find('[data-username]').data('username') + '"]' + 'span[data-username="' + $el.find('[data-username]').data('username') + '"]' ).parent(), editionMode ); @@ -486,20 +488,22 @@ }, _composeHTMLMention: function(uid, displayName) { - var avatar = '
    '; + var avatar = '' + + '' + + ''; var isCurrentUser = (uid === OC.getCurrentUser().uid); - return '' - + '' - + '' - + avatar + ' '+ _.escape(displayName)+'' - + '' - + ''; + return '' + + '' + + '' + + avatar + + '' + _.escape(displayName) + '' + + '' + + ''; }, nextPage: function() { diff --git a/apps/comments/tests/js/commentstabviewSpec.js b/apps/comments/tests/js/commentstabviewSpec.js index c90ad04e4191c..bd1353cc43df6 100644 --- a/apps/comments/tests/js/commentstabviewSpec.js +++ b/apps/comments/tests/js/commentstabviewSpec.js @@ -309,7 +309,7 @@ describe('OCA.Comments.CommentsTabView tests', function() { expect(createStub.calledOnce).toEqual(false); expect($newCommentForm.find('.message').html()).toContain('Mention to User Name'); expect($newCommentForm.find('.message').text()).not.toContain('@'); // In this case the default behaviour is prevented by the