mirror of
https://github.com/stablyai/orca.git
synced 2026-10-20 16:03:20 +00:00
Address PR #12128 review feedback
- Make Select all / Clear real DropdownMenuItems so Radix roving focus reaches them by keyboard. - Rename the zero-agent empty state to a neutral "No agents selected" now that zero agents is a valid filter. - Use 모두 해제 for the Korean Clear label instead of 지우기 (erase). Co-authored-by: Orca <help@stably.ai>
This commit is contained in:
@@ -5043,9 +5043,9 @@
|
||||
"ko": "모두 선택"
|
||||
},
|
||||
"auto.components.right.sidebar.AiVaultPanelControls.clearAgents": {
|
||||
"ko": "지우기"
|
||||
"ko": "모두 해제"
|
||||
},
|
||||
"auto.components.right.sidebar.AiVaultPanel.selectAtLeastOneAgent": {
|
||||
"ko": "에이전트를 하나 이상 선택하세요"
|
||||
"auto.components.right.sidebar.AiVaultPanel.noAgentsSelected": {
|
||||
"ko": "선택된 에이전트가 없습니다"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,9 @@ import type { AiVaultHostScopeOption } from './ai-vault-host-scope'
|
||||
|
||||
const VAULT_HEADER_CONTROL_CLASS = 'size-6 shrink-0'
|
||||
|
||||
const AGENT_BULK_ACTION_CLASS =
|
||||
'rounded-full px-2 py-0.5 text-[11px] font-normal text-muted-foreground focus:text-foreground'
|
||||
|
||||
// Why: match ToggleGroup's spacing+outline qualifiers so selected edges out-specify its border-l-0 collapse.
|
||||
const VAULT_SCOPE_SELECTED_EDGE_CLASS =
|
||||
'data-[spacing=0]:data-[variant=outline]:aria-[checked=true]:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-l'
|
||||
@@ -294,30 +297,32 @@ export function VaultViewMenu({
|
||||
<span className="text-[11px] font-semibold text-muted-foreground">
|
||||
{translate('auto.components.right.sidebar.AiVaultPanelControls.agents', 'Agents')}
|
||||
</span>
|
||||
{/* Why: real menu items so arrow keys reach them; plain buttons are skipped by Radix roving focus. */}
|
||||
<div className="flex items-center gap-1">
|
||||
<button
|
||||
type="button"
|
||||
// Why: prevent focus move so Radix does not dismiss the menu mid multi-select.
|
||||
onPointerDown={(event) => event.preventDefault()}
|
||||
onClick={() => onAllAgentsEnabledChange(true)}
|
||||
className="rounded-full px-2 py-0.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-40 disabled:hover:bg-transparent"
|
||||
<DropdownMenuItem
|
||||
disabled={allAgentsSelected}
|
||||
// Why: preventDefault keeps the menu open for further multi-select.
|
||||
onSelect={(event) => {
|
||||
event.preventDefault()
|
||||
onAllAgentsEnabledChange(true)
|
||||
}}
|
||||
className={AGENT_BULK_ACTION_CLASS}
|
||||
>
|
||||
{translate(
|
||||
'auto.components.right.sidebar.AiVaultPanelControls.selectAllAgents',
|
||||
'Select all'
|
||||
)}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
// Why: prevent focus move so Radix does not dismiss the menu mid multi-select.
|
||||
onPointerDown={(event) => event.preventDefault()}
|
||||
onClick={() => onAllAgentsEnabledChange(false)}
|
||||
className="rounded-full px-2 py-0.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-40 disabled:hover:bg-transparent"
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
disabled={noAgentsSelected}
|
||||
onSelect={(event) => {
|
||||
event.preventDefault()
|
||||
onAllAgentsEnabledChange(false)
|
||||
}}
|
||||
className={AGENT_BULK_ACTION_CLASS}
|
||||
>
|
||||
{translate('auto.components.right.sidebar.AiVaultPanelControls.clearAgents', 'Clear')}
|
||||
</button>
|
||||
</DropdownMenuItem>
|
||||
</div>
|
||||
</div>
|
||||
{AI_VAULT_AGENTS.map((agent) => (
|
||||
|
||||
@@ -186,8 +186,8 @@ export function AiVaultSessionVirtualList({
|
||||
title={
|
||||
noAgentsSelected
|
||||
? translate(
|
||||
'auto.components.right.sidebar.AiVaultPanel.selectAtLeastOneAgent',
|
||||
'Select at least one agent'
|
||||
'auto.components.right.sidebar.AiVaultPanel.noAgentsSelected',
|
||||
'No agents selected'
|
||||
)
|
||||
: translate(
|
||||
'auto.components.right.sidebar.AiVaultPanel.noSessionsMatchFilters',
|
||||
|
||||
@@ -11202,7 +11202,7 @@
|
||||
"transcriptsSkipped": "{{count}} transcript skipped",
|
||||
"noAgentSessionsFound": "No agent sessions found",
|
||||
"noSessionsMatchFilters": "No sessions match the current filters",
|
||||
"selectAtLeastOneAgent": "Select at least one agent",
|
||||
"noAgentsSelected": "No agents selected",
|
||||
"sessionId": "Session ID",
|
||||
"logPath": "Log path",
|
||||
"originalPaneUnavailable": "Original pane is no longer available.",
|
||||
|
||||
@@ -11091,7 +11091,7 @@
|
||||
"transcriptsSkipped": "{{count}} transcripciones omitidas",
|
||||
"noAgentSessionsFound": "No se encontraron sesiones de agentes",
|
||||
"noSessionsMatchFilters": "Ninguna sesión coincide con los filtros actuales",
|
||||
"selectAtLeastOneAgent": "Selecciona al menos un agente",
|
||||
"noAgentsSelected": "Ningún agente seleccionado",
|
||||
"sessionId": "ID de sesión",
|
||||
"logPath": "Ruta del log",
|
||||
"agents": "Agentes",
|
||||
|
||||
@@ -11091,7 +11091,7 @@
|
||||
"transcriptsSkipped": "{{count}} transcript skipped",
|
||||
"noAgentSessionsFound": "No agent sessions found",
|
||||
"noSessionsMatchFilters": "No sessions match the current filters",
|
||||
"selectAtLeastOneAgent": "エージェントを1つ以上選択してください",
|
||||
"noAgentsSelected": "エージェントが選択されていません",
|
||||
"sessionId": "セッション ID",
|
||||
"logPath": "ログパス",
|
||||
"agents": "エージェント",
|
||||
|
||||
@@ -11091,7 +11091,7 @@
|
||||
"transcriptsSkipped": "대화 기록 {{count}}개 건너뜀",
|
||||
"noAgentSessionsFound": "agent 세션을 찾을 수 없습니다",
|
||||
"noSessionsMatchFilters": "현재 필터와 일치하는 세션이 없습니다",
|
||||
"selectAtLeastOneAgent": "에이전트를 하나 이상 선택하세요",
|
||||
"noAgentsSelected": "선택된 에이전트가 없습니다",
|
||||
"sessionId": "세션 ID",
|
||||
"logPath": "로그 경로",
|
||||
"agents": "에이전트",
|
||||
@@ -11118,7 +11118,7 @@
|
||||
"viewOptions": "보기 옵션",
|
||||
"agents": "에이전트",
|
||||
"selectAllAgents": "모두 선택",
|
||||
"clearAgents": "지우기",
|
||||
"clearAgents": "모두 해제",
|
||||
"sort": "정렬",
|
||||
"lastUpdated": "마지막 업데이트",
|
||||
"created": "생성됨",
|
||||
|
||||
@@ -11091,7 +11091,7 @@
|
||||
"transcriptsSkipped": "跳过了 {{count}} 个记录",
|
||||
"noAgentSessionsFound": "未找到智能体会话",
|
||||
"noSessionsMatchFilters": "没有会话符合当前筛选条件",
|
||||
"selectAtLeastOneAgent": "请至少选择一个智能体",
|
||||
"noAgentsSelected": "未选择任何智能体",
|
||||
"sessionId": "会话 ID",
|
||||
"logPath": "日志路径",
|
||||
"agents": "智能体",
|
||||
|
||||
Reference in New Issue
Block a user