From 46a88990a35076879740b6298e8eabe8c0ae354c Mon Sep 17 00:00:00 2001 From: William Grant Date: Mon, 3 Apr 2023 14:09:05 +0200 Subject: [PATCH] feat: improved styling between states --- stylesheets/_modules.scss | 1 - .../conversation/ConversationHeader.tsx | 66 ++++++++++++------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index 348979368..7ec7ec1fa 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -328,7 +328,6 @@ display: inline-flex; flex-direction: row; align-items: center; - height: 48px; max-width: 100%; } diff --git a/ts/components/conversation/ConversationHeader.tsx b/ts/components/conversation/ConversationHeader.tsx index d96f29833..f59e4e90e 100644 --- a/ts/components/conversation/ConversationHeader.tsx +++ b/ts/components/conversation/ConversationHeader.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { Avatar, AvatarSize } from '../avatar/Avatar'; @@ -230,7 +230,8 @@ const CallButton = () => { iconType="phone" iconSize="large" iconPadding="2px" - margin="0 10px 0 0" + // negative margin to keep conversation header title centered + margin="0 10px 0 -32px" onClick={() => { void callRecipient(selectedConvoKey, canCall); }} @@ -243,6 +244,7 @@ export const StyledSubtitleContainer = styled.div` flex-direction: column; align-items: center; justify-content: center; + margin: 0 auto; min-width: 230px; div:first-child { @@ -257,9 +259,9 @@ const StyledSubtitleDot = styled.span<{ active: boolean }>` background-color: ${props => props.active ? 'var(--text-primary-color)' : 'var(--text-secondary-color)'}; - height: 6px; - width: 6px; - margin: 0 3px; + height: 5px; + width: 5px; + margin: 0 2px; `; const SubtitleDotMenu = ({ @@ -327,6 +329,7 @@ const ConversationHeaderTitle = () => { const { i18n } = window; + const subtitles: Array = []; const notificationSubtitle = notificationSetting ? i18n('notificationSubtitle', [notificationSetting]) : null; @@ -339,36 +342,38 @@ const ConversationHeaderTitle = () => { memberCount = members.length; } } + if (notificationSubtitle) { + subtitles.push(notificationSubtitle); + } let memberCountSubtitle = null; if (isGroup && memberCount > 0 && !isKickedFromGroup) { const count = String(memberCount); memberCountSubtitle = isPublic ? i18n('activeMembers', [count]) : i18n('members', [count]); } + if (memberCountSubtitle) { + subtitles.push(memberCountSubtitle); + } const disappearingMessageSettingText = expirationType === 'off' - ? window.i18n('disappearingMessagesModeOff') + ? null : expirationType === 'deleteAfterRead' ? window.i18n('disappearingMessagesModeAfterRead') : window.i18n('disappearingMessagesModeAfterSend'); const abbreviatedExpireTime = Boolean(expireTimer) ? ExpirationTimerOptions.getAbbreviated(expireTimer) : null; - const disappearingMessageSubtitle = `${disappearingMessageSettingText}${ - abbreviatedExpireTime ? ` - ${abbreviatedExpireTime}` : '' - }`; - - const subtitles = [ - notificationSubtitle && notificationSubtitle, - memberCountSubtitle && memberCountSubtitle, - disappearingMessageSubtitle && disappearingMessageSubtitle, - ]; - window.log.info(`WIP: subtitles`, subtitles); + const disappearingMessageSubtitle = disappearingMessageSettingText + ? `${disappearingMessageSettingText}${ + abbreviatedExpireTime ? ` - ${abbreviatedExpireTime}` : '' + }` + : null; + if (disappearingMessageSubtitle) { + subtitles.push(disappearingMessageSubtitle); + } - // const fullTextSubtitle = memberCountText - // ? `${memberCountText} ● ${notificationSubtitle}` - // : `${notificationSubtitle}`; + window.log.info(`WIP: subtitles`, subtitles, visibleTitleIndex); const handleTitleCycle = (direction: 1 | -1) => { let newIndex = visibleTitleIndex + direction; @@ -385,6 +390,10 @@ const ConversationHeaderTitle = () => { } }; + useEffect(() => { + setVisibleTitleIndex(0); + }, [convoName]); + if (isMe) { // TODO customise for new disappearing message system return
{i18n('noteToSelf')}
; @@ -407,15 +416,22 @@ const ConversationHeaderTitle = () => { }} role="button" > - + 1 ? '-5px' : undefined, + }} + > {convoName} - {subtitles && ( + {subtitles && subtitles[visibleTitleIndex] && ( @@ -428,8 +444,9 @@ const ConversationHeaderTitle = () => { onClick={() => { handleTitleCycle(-1); }} + isHidden={subtitles.length < 2} /> - {visibleTitleIndex === 2 && ( + {visibleTitleIndex === 2 && expirationType !== 'off' && ( { onClick={() => { handleTitleCycle(1); }} + isHidden={subtitles.length < 2} /> )}