import { useId, useRef, useState, useContext } from 'react'; import { type Position, money, positionAmount } from './api'; import { t as tr } from './i18n'; import { iconUrl } from './IconLibrary'; import { GroupOrderContext } from './GroupOrderContext'; import { orderedGroups } from './group-order'; 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 order = useContext(GroupOrderContext); const groups = grouped ? orderedGroups( rows.map((p) => p.groupName || ''), order, ) : ['全部账户']; return (

{tr('选择账户')}

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

{grouped ? group || tr('未分组') : tr('全部账户')}

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

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

}
); }