12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Copyright 2017-2020 @polkadot/app-democracy authors & contributors
- // This software may be modified and distributed under the terms
- // of the Apache-2.0 license. See the LICENSE file for details.
- import { DeriveElectionsInfo } from '@polkadot/api-derive/types';
- import { AccountId } from '@polkadot/types/interfaces';
- import React, { useMemo } from 'react';
- import { Table } from '@polkadot/react-components';
- import { useTranslation } from '../translate';
- import Candidate from './Candidate';
- interface Props {
- allVotes?: Record<string, AccountId[]>;
- className?: string;
- electionsInfo?: DeriveElectionsInfo;
- prime?: AccountId | null;
- }
- function Members ({ allVotes = {}, className = '', electionsInfo, prime }: Props): React.ReactElement<Props> {
- const { t } = useTranslation();
- const header = useMemo(() => [
- [t('members'), 'start', 2],
- [t('backing')],
- [t('votes')]
- ], [t]);
- return (
- <Table
- className={className}
- empty={electionsInfo && t<string>('No members found')}
- header={header}
- >
- {electionsInfo?.members.map(([accountId, balance]): React.ReactNode => (
- <Candidate
- address={accountId}
- balance={balance}
- isPrime={prime?.eq(accountId)}
- key={accountId.toString()}
- voters={allVotes[accountId.toString()]}
- />
- ))}
- </Table>
- );
- }
- export default React.memo(Members);
|