fix(team): prevent composer recipient overflow
This commit is contained in:
parent
a7606032fc
commit
7be9158eb3
17 changed files with 61 additions and 22 deletions
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Reused recent cross-team request",
|
||||
"teamOffline": "الفريق غير المباشر"
|
||||
"teamOffline": "غير متصل"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "جارٍ تعديل الرسالة السابقة",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "সম্প্রতি ব্যবহৃত ক্রস-টেম অনুরোধ",
|
||||
"teamOffline": "অফলাইন অবস্থায় ব্যবহারের জন্য প্রস্তুত করা হচ্ছে"
|
||||
"teamOffline": "অফলাইন"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "আগের বার্তা সম্পাদনা করা হচ্ছে",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Neuer Cross-Dampf-Antrag",
|
||||
"teamOffline": "Team offline"
|
||||
"teamOffline": "offline"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "Vorherige Nachricht wird bearbeitet",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Reused recent cross-team request",
|
||||
"teamOffline": "Team offline"
|
||||
"teamOffline": "offline"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "Editing previous message",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Reutilización reciente de la solicitud de equipo cruzado",
|
||||
"teamOffline": "Team offline"
|
||||
"teamOffline": "sin conexión"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "Editando mensaje anterior",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Réutilisée récente demande cross-team",
|
||||
"teamOffline": "Équipe hors ligne"
|
||||
"teamOffline": "hors ligne"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "Modification du message précédent",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "हाल के क्रॉस-टीम अनुरोध का पुन: उपयोग किया",
|
||||
"teamOffline": "टीम ऑफलाइन"
|
||||
"teamOffline": "ऑफलाइन"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "पिछला संदेश संपादित हो रहा है",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Mengulang permintaan tim-cross- baru-baru ini",
|
||||
"teamOffline": "Tim luring"
|
||||
"teamOffline": "offline"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "Mengedit pesan sebelumnya",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "最近のクロスチームリクエストを再利用",
|
||||
"teamOffline": "オフラインチーム"
|
||||
"teamOffline": "オフライン"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "前のメッセージを編集中",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "최근 Cross-team 요청 사용",
|
||||
"teamOffline": "팀 오프라인"
|
||||
"teamOffline": "오프라인"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "이전 메시지 편집 중",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Reutilizar o pedido de equipa cruzada recente",
|
||||
"teamOffline": "Equipa offline"
|
||||
"teamOffline": "offline"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "A editar a mensagem anterior",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "Повторно использован недавний cross-team request",
|
||||
"teamOffline": "Команда offline"
|
||||
"teamOffline": "оффлайн"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "Редактируется предыдущее сообщение",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "حالیہ صلیبی درخواست استعمال کریں",
|
||||
"teamOffline": "گروپ"
|
||||
"teamOffline": "آف لائن"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "پچھلا پیغام ترمیم ہو رہا ہے",
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@
|
|||
},
|
||||
"status": {
|
||||
"reusedCrossTeamRequest": "重新使用最近的跨小组请求",
|
||||
"teamOffline": "团队离线"
|
||||
"teamOffline": "离线"
|
||||
},
|
||||
"revision": {
|
||||
"editing": "正在编辑上一条消息",
|
||||
|
|
|
|||
|
|
@ -4236,7 +4236,7 @@ export default interface Resources {
|
|||
};
|
||||
status: {
|
||||
reusedCrossTeamRequest: 'Reused recent cross-team request';
|
||||
teamOffline: 'Team offline';
|
||||
teamOffline: 'offline';
|
||||
};
|
||||
teamSelector: {
|
||||
current: 'current';
|
||||
|
|
|
|||
|
|
@ -894,7 +894,7 @@ export const MessageComposer = ({
|
|||
isCompactLayout ? 'space-y-1.5' : 'space-y-2'
|
||||
)}
|
||||
>
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="flex min-w-0 items-center gap-2">
|
||||
{showAttachmentControl ? (
|
||||
<>
|
||||
<input
|
||||
|
|
@ -930,9 +930,12 @@ export const MessageComposer = ({
|
|||
</>
|
||||
) : null}
|
||||
|
||||
<div className="ml-auto flex shrink-0 items-center gap-2">
|
||||
<div className="ml-auto flex min-w-0 max-w-full items-center justify-end gap-2">
|
||||
{!isTeamAlive && !isLaunchBlocking && (
|
||||
<span className="text-[10px]" style={{ color: 'var(--warning-text)' }}>
|
||||
<span
|
||||
className="shrink-0 whitespace-nowrap text-[10px]"
|
||||
style={{ color: 'var(--warning-text)' }}
|
||||
>
|
||||
{t('messageComposer.status.teamOffline')}
|
||||
</span>
|
||||
)}
|
||||
|
|
@ -940,7 +943,7 @@ export const MessageComposer = ({
|
|||
{/* Combined team + member selector */}
|
||||
<div
|
||||
className={cn(
|
||||
'mr-[15px] inline-flex items-center border text-xs transition-colors',
|
||||
'mr-[15px] inline-flex min-w-0 max-w-[calc(100%_-_15px)] items-center overflow-hidden border text-xs transition-colors',
|
||||
shouldDockRecipientSelector
|
||||
? 'relative z-[1] -mb-px overflow-hidden rounded-b-none rounded-t-[1.35rem] border-b-0 bg-[var(--color-surface-raised)]'
|
||||
: 'rounded-full',
|
||||
|
|
@ -952,7 +955,7 @@ export const MessageComposer = ({
|
|||
<button
|
||||
type="button"
|
||||
className={cn(
|
||||
'inline-flex items-center gap-1.5 border-r border-r-[var(--color-border)] px-2.5 py-1 text-xs transition-colors',
|
||||
'inline-flex min-w-0 max-w-[160px] items-center gap-1.5 border-r border-r-[var(--color-border)] px-2.5 py-1 text-xs transition-colors',
|
||||
shouldDockRecipientSelector
|
||||
? 'rounded-bl-none rounded-tl-[1.35rem]'
|
||||
: 'rounded-l-full',
|
||||
|
|
@ -988,7 +991,7 @@ export const MessageComposer = ({
|
|||
style={{ backgroundColor: currentTeamColor }}
|
||||
/>
|
||||
) : null}
|
||||
<span className="text-[var(--color-text-secondary)]">
|
||||
<span className="min-w-0 truncate text-[var(--color-text-secondary)]">
|
||||
{t('messageComposer.teamSelector.thisTeam')}
|
||||
</span>
|
||||
</>
|
||||
|
|
@ -1111,7 +1114,7 @@ export const MessageComposer = ({
|
|||
<button
|
||||
type="button"
|
||||
className={cn(
|
||||
'inline-flex items-center gap-1.5 px-2.5 py-1 text-xs transition-colors',
|
||||
'inline-flex min-w-0 max-w-[150px] items-center gap-1.5 px-2.5 py-1 text-xs transition-colors',
|
||||
shouldDockRecipientSelector
|
||||
? 'rounded-br-none rounded-tr-[1.35rem]'
|
||||
: 'rounded-r-full',
|
||||
|
|
|
|||
|
|
@ -1552,10 +1552,34 @@ a[href],
|
|||
.message-composer-orbit-path,
|
||||
.message-composer-orbit-glow {
|
||||
stroke-dasharray: 9 91;
|
||||
animation: message-composer-orbit-dash 9.6s linear infinite;
|
||||
stroke-linecap: butt;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
|
||||
.message-composer-orbit-path-secondary,
|
||||
.message-composer-orbit-glow-secondary {
|
||||
animation-name: message-composer-orbit-dash-secondary;
|
||||
}
|
||||
|
||||
@keyframes message-composer-orbit-dash {
|
||||
from {
|
||||
stroke-dashoffset: 0;
|
||||
}
|
||||
to {
|
||||
stroke-dashoffset: -100;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes message-composer-orbit-dash-secondary {
|
||||
from {
|
||||
stroke-dashoffset: 50;
|
||||
}
|
||||
to {
|
||||
stroke-dashoffset: -50;
|
||||
}
|
||||
}
|
||||
|
||||
.message-composer-orbit-path {
|
||||
stroke-width: 1.35px;
|
||||
stroke: var(--message-composer-orbit-stroke);
|
||||
|
|
@ -1576,6 +1600,18 @@ a[href],
|
|||
opacity: 0.36;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.message-composer-orbit-path,
|
||||
.message-composer-orbit-glow {
|
||||
animation: none;
|
||||
}
|
||||
|
||||
.message-composer-orbit-path-secondary,
|
||||
.message-composer-orbit-glow-secondary {
|
||||
stroke-dashoffset: 50;
|
||||
}
|
||||
}
|
||||
|
||||
:root.light .message-composer-shell {
|
||||
background-color: #dfdbd4;
|
||||
box-shadow:
|
||||
|
|
|
|||
Loading…
Reference in a new issue