Last Seen: Fix adaptive width (#3547)

This commit is contained in:
Alexander Zinchuk 2023-07-20 15:58:09 +02:00
parent 7dd9c2e677
commit 9c994773b9
3 changed files with 32 additions and 43 deletions

View File

@ -14,17 +14,19 @@ import styles from './AvatarList.module.scss';
type OwnProps = { type OwnProps = {
size: AvatarSize; size: AvatarSize;
peers?: (ApiUser | ApiChat)[]; peers?: (ApiUser | ApiChat)[];
className?: string;
}; };
const AvatarList: FC<OwnProps> = ({ const AvatarList: FC<OwnProps> = ({
peers, peers,
size, size,
className,
}) => { }) => {
const lang = useLang(); const lang = useLang();
return ( return (
<div <div
className={buildClassName(styles.root, styles[`size-${size}`])} className={buildClassName(className, styles.root, styles[`size-${size}`])}
dir={lang.isRtl ? 'rtl' : 'ltr'} dir={lang.isRtl ? 'rtl' : 'ltr'}
> >
{peers?.map((peer) => <Avatar size={size} peer={peer} className={styles.avatar} />)} {peers?.map((peer) => <Avatar size={size} peer={peer} className={styles.avatar} />)}

View File

@ -46,31 +46,24 @@
touch-action: none; touch-action: none;
} }
&--seen-by { &--seen-by-label-wrapper {
width: 14rem !important; position: relative;
flex-grow: 1;
} }
&--seen-by-label { &--seen-by-label {
max-width: 100%; position: absolute;
top: 50%;
transform: translateY(-50%);
left: 0;
right: 0;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
text-align: initial;
} }
.avatars { .avatars {
display: flex;
align-self: center;
margin-inline-start: auto;
padding-inline-start: 1rem; padding-inline-start: 1rem;
.Avatar {
border: 0.0625rem solid var(--color-background);
margin-right: 0;
box-sizing: content-box;
&:not(:first-child) {
margin-left: -0.1875rem;
}
}
} }
} }

View File

@ -33,8 +33,8 @@ import Menu from '../../ui/Menu';
import MenuItem from '../../ui/MenuItem'; import MenuItem from '../../ui/MenuItem';
import MenuSeparator from '../../ui/MenuSeparator'; import MenuSeparator from '../../ui/MenuSeparator';
import Skeleton from '../../ui/Skeleton'; import Skeleton from '../../ui/Skeleton';
import Avatar from '../../common/Avatar';
import ReactionSelector from './ReactionSelector'; import ReactionSelector from './ReactionSelector';
import AvatarList from '../../common/AvatarList';
import './MessageContextMenu.scss'; import './MessageContextMenu.scss';
@ -389,12 +389,12 @@ const MessageContextMenu: FC<OwnProps> = ({
{canReport && <MenuItem icon="flag" onClick={onReport}>{lang('lng_context_report_msg')}</MenuItem>} {canReport && <MenuItem icon="flag" onClick={onReport}>{lang('lng_context_report_msg')}</MenuItem>}
{(canShowSeenBy || canShowReactionsCount) && !isSponsoredMessage && ( {(canShowSeenBy || canShowReactionsCount) && !isSponsoredMessage && (
<MenuItem <MenuItem
className="MessageContextMenu--seen-by"
icon={canShowReactionsCount ? 'heart-outline' : 'group'} icon={canShowReactionsCount ? 'heart-outline' : 'group'}
onClick={canShowReactionsCount ? onShowReactors : onShowSeenBy} onClick={canShowReactionsCount ? onShowReactors : onShowSeenBy}
disabled={!canShowReactionsCount && !seenByDatesCount} disabled={!canShowReactionsCount && !seenByDatesCount}
> >
<span className="MessageContextMenu--seen-by-label"> <span className="MessageContextMenu--seen-by-label-wrapper">
<span className="MessageContextMenu--seen-by-label" dir={lang.isRtl ? 'rtl' : undefined}>
{canShowReactionsCount && message.reactors?.count ? ( {canShowReactionsCount && message.reactors?.count ? (
canShowSeenBy && seenByDatesCount canShowSeenBy && seenByDatesCount
? lang( ? lang(
@ -404,21 +404,15 @@ const MessageContextMenu: FC<OwnProps> = ({
: lang('Chat.ContextReactionCount', message.reactors.count, 'i') : lang('Chat.ContextReactionCount', message.reactors.count, 'i')
) : ( ) : (
seenByDatesCount === 1 && seenByRecentUsers seenByDatesCount === 1 && seenByRecentUsers
? renderText(getUserFullName(seenByRecentUsers[0])!) ? renderText(getUserFullName(seenByRecentUsers[0] as ApiUser)!) : (
: (seenByDatesCount seenByDatesCount
? lang('Conversation.ContextMenuSeen', seenByDatesCount, 'i') ? lang('Conversation.ContextMenuSeen', seenByDatesCount, 'i')
: lang('Conversation.ContextMenuNoViews') : lang('Conversation.ContextMenuNoViews')
) )
)} )}
</span> </span>
<div className="avatars"> </span>
{seenByRecentUsers?.map((user) => ( <AvatarList className="avatars" size="micro" peers={seenByRecentUsers} />
<Avatar
size="micro"
peer={user}
/>
))}
</div>
</MenuItem> </MenuItem>
)} )}
{canDelete && <MenuItem destructive icon="delete" onClick={onDelete}>{lang('Delete')}</MenuItem>} {canDelete && <MenuItem destructive icon="delete" onClick={onDelete}>{lang('Delete')}</MenuItem>}