import { useId, useRef, useState } from 'react'; import { type Position, money, positionAmount } from './api'; import { t as tr } from './i18n'; import { iconUrl } from './IconLibrary'; export function AccountPicker({ name, accounts, value, onChange, excludeId, }: { name: string; accounts: Position[]; value: string; onChange: (id: string) => void; excludeId?: string; }) { const dialog = useRef(null), title = useId(); const [grouped, setGrouped] = useState(true), [query, setQuery] = useState(''); const selected = accounts.find((p) => p.id === value); const rows = accounts.filter( (p) => p.id !== excludeId && `${p.name} ${p.groupName || ''} ${p.currency}`.toLowerCase().includes(query.toLowerCase()), ); const groups = grouped ? [...new Set(rows.map((p) => p.groupName || '未分组'))] : ['全部账户']; return (

{tr('选择账户')}

setQuery(e.target.value)} />
{groups.map((group) => (

{tr(group)}

{rows .filter((p) => !grouped || (p.groupName || '未分组') === group) .map((p) => ( ))}
))} {!rows.length &&

{tr('没有符合条件的账户')}

}
); }