diff --git a/app/gabsocial/features/status/components/status_interaction_bar.js b/app/gabsocial/features/status/components/status_interaction_bar.js index bb276dd84..9b1cb4c3b 100644 --- a/app/gabsocial/features/status/components/status_interaction_bar.js +++ b/app/gabsocial/features/status/components/status_interaction_bar.js @@ -9,22 +9,37 @@ export class StatusInteractionBar extends React.Component { status: ImmutablePropTypes.map, } - render() { + getNormalizedReacts = () => { const { status } = this.props; const emojiReacts = status.getIn(['pleroma', 'emoji_reactions']); const favouritesCount = status.get('favourites_count'); + return reduceEmoji(emojiReacts, favouritesCount).reverse(); + } + + render() { + const emojiReacts = this.getNormalizedReacts(); + const count = emojiReacts.reduce((acc, cur) => ( + acc + cur.get('count') + ), 0); + + if (count < 1) return null; return ( -
- {reduceEmoji(emojiReacts, favouritesCount).map((e, i) => ( - - - {e.get('count')} - - ))} +
+
+ {emojiReacts.map((e, i) => ( + + + {e.get('count')} + + ))} +
+
+ {count} +
); } diff --git a/app/styles/application.scss b/app/styles/application.scss index a57193533..3b267a4bd 100644 --- a/app/styles/application.scss +++ b/app/styles/application.scss @@ -32,6 +32,7 @@ @import 'gabsocial/components/group-sidebar-panel'; @import 'gabsocial/components/sidebar-menu'; @import 'gabsocial/components/hotkeys-modal'; +@import 'gabsocial/components/emoji-reacts'; @import 'gabsocial/polls'; @import 'gabsocial/introduction'; diff --git a/app/styles/gabsocial/components/emoji-reacts.scss b/app/styles/gabsocial/components/emoji-reacts.scss new file mode 100644 index 000000000..71a5c18e1 --- /dev/null +++ b/app/styles/gabsocial/components/emoji-reacts.scss @@ -0,0 +1,49 @@ +.emoji-react { + display: inline-block; + transition: 0.1s; + + &__emoji { + img { + width: 20px; + height: 20px; + filter: drop-shadow(2px 0 0 #fff); // FIXME: Use theme color + } + } + + &__count { + display: none; + } + + + .emoji-react { + margin-right: -8px; + } +} + +.emoji-reacts { + display: inline-flex; + flex-direction: row-reverse; +} + +.emoji-reacts-container { + display: inline-flex; + + &:hover { + .emoji-react { + margin: 0; + + &__count { + display: inline; + } + } + + .emoji-reacts__count { + display: none; + } + } +} + +.emoji-reacts__count, +.emoji-react__count { + font-size: 12px; + font-weight: bold; +}