fix: expand all-mailbox selector
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
Docker Release / Create GitHub release (push) Blocked by required conditions
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
Docker Release / Create GitHub release (push) Blocked by required conditions
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
## 本次更新
|
||||||
|
|
||||||
|
### 优化邮箱选择器动态宽度
|
||||||
|
|
||||||
|
- 选择“全部邮箱”、正在加载或尚未注册邮箱时,邮箱选择框占满侧栏整行,不再为隐藏按钮预留空白。
|
||||||
|
- 选择具体邮箱后,选择框自动向左收窄,并在右侧显示复制邮箱地址按钮。
|
||||||
|
- 邮箱下拉菜单始终与当前选择框等宽,避免展开前后宽度不一致。
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
|
||||||
|
- 已通过前端 TypeScript 检查、生产构建和 shadcn/ui 检查。
|
||||||
|
|
||||||
|
**完整更新日志**:[v1.2.9...v1.2.10](https://github.com/zxyszx/NewSzxcn-Email/compare/v1.2.9...v1.2.10)
|
||||||
@@ -205,6 +205,7 @@ export function MailPage() {
|
|||||||
const activeMailboxId = selectedMailboxId === "all" ? "all" : selectedMailbox?.id || ""
|
const activeMailboxId = selectedMailboxId === "all" ? "all" : selectedMailbox?.id || ""
|
||||||
const selectedComposeMailbox = selectedMailbox || (isAllMailboxSelected ? mailboxList.data?.items?.[0] : undefined)
|
const selectedComposeMailbox = selectedMailbox || (isAllMailboxSelected ? mailboxList.data?.items?.[0] : undefined)
|
||||||
const hasMailboxes = (mailboxList.data?.items.length || 0) > 0
|
const hasMailboxes = (mailboxList.data?.items.length || 0) > 0
|
||||||
|
const showMailboxCopy = !!selectedMailbox && !isAllMailboxSelected
|
||||||
const folders = useQuery({ queryKey: ["folders", activeMailboxId], queryFn: () => api.folders(activeMailboxId), enabled: !!activeMailboxId && canReadMail })
|
const folders = useQuery({ queryKey: ["folders", activeMailboxId], queryFn: () => api.folders(activeMailboxId), enabled: !!activeMailboxId && canReadMail })
|
||||||
const labels = useQuery({ queryKey: ["labels", activeMailboxId], queryFn: () => api.labels(activeMailboxId), enabled: !!activeMailboxId && (canReadMail || canManageLabels) })
|
const labels = useQuery({ queryKey: ["labels", activeMailboxId], queryFn: () => api.labels(activeMailboxId), enabled: !!activeMailboxId && (canReadMail || canManageLabels) })
|
||||||
const mailStats = useQuery({ queryKey: ["mail-stats", activeMailboxId], queryFn: () => api.mailStats(activeMailboxId), enabled: !!activeMailboxId && hasPermission(user, "mail.stats.view") })
|
const mailStats = useQuery({ queryKey: ["mail-stats", activeMailboxId], queryFn: () => api.mailStats(activeMailboxId), enabled: !!activeMailboxId && hasPermission(user, "mail.stats.view") })
|
||||||
@@ -1216,7 +1217,7 @@ export function MailPage() {
|
|||||||
onLanguageChange={setLanguage}
|
onLanguageChange={setLanguage}
|
||||||
onSettings={openSettings}
|
onSettings={openSettings}
|
||||||
/>
|
/>
|
||||||
<div className={cn("mt-2 gap-1.5", sidebarCollapsed ? "flex justify-center" : "grid grid-cols-[minmax(0,1fr)_2rem]")}>
|
<div className={cn("mt-2 gap-1.5", sidebarCollapsed ? "flex justify-center" : showMailboxCopy ? "grid grid-cols-[minmax(0,1fr)_2rem]" : "grid grid-cols-1")}>
|
||||||
<MailboxSwitcher
|
<MailboxSwitcher
|
||||||
collapsed={sidebarCollapsed}
|
collapsed={sidebarCollapsed}
|
||||||
mailboxes={mailboxList.data?.items || []}
|
mailboxes={mailboxList.data?.items || []}
|
||||||
@@ -1226,17 +1227,15 @@ export function MailPage() {
|
|||||||
unreadCount={mailboxUnreadCount}
|
unreadCount={mailboxUnreadCount}
|
||||||
onSelect={switchMailbox}
|
onSelect={switchMailbox}
|
||||||
/>
|
/>
|
||||||
{!sidebarCollapsed && (
|
{!sidebarCollapsed && showMailboxCopy && (
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
size="icon"
|
size="icon"
|
||||||
className={cn("h-8 w-8 shrink-0 rounded-md bg-background shadow-none hover:bg-background", isAllMailboxSelected && "invisible pointer-events-none")}
|
className="h-8 w-8 shrink-0 rounded-md bg-background shadow-none hover:bg-background"
|
||||||
onClick={copyCurrentMailbox}
|
onClick={copyCurrentMailbox}
|
||||||
disabled={!selectedMailbox || isAllMailboxSelected}
|
disabled={!selectedMailbox}
|
||||||
aria-label="复制邮箱地址"
|
aria-label="复制邮箱地址"
|
||||||
aria-hidden={isAllMailboxSelected}
|
|
||||||
tabIndex={isAllMailboxSelected ? -1 : 0}
|
|
||||||
title="复制邮箱地址"
|
title="复制邮箱地址"
|
||||||
>
|
>
|
||||||
<Copy className="h-3.5 w-3.5" />
|
<Copy className="h-3.5 w-3.5" />
|
||||||
|
|||||||
Reference in New Issue
Block a user