Skip to content
Snippets Groups Projects
account-select.tsx 2.59 KiB
Newer Older
Niklas P's avatar
Niklas P committed
import { useContext } from 'react';
Niklas P's avatar
Niklas P committed
import Identicon from '@polkadot/react-identicon';
import 'primereact/resources/themes/md-dark-indigo/theme.css'
import 'primereact/resources/primereact.min.css'    
import { Dropdown } from 'primereact/dropdown'
import styles from '@/styles/Home.module.css'
Niklas P's avatar
Niklas P committed
import { PolkadotExtensionContext } from '@/context/polkadotExtensionContext';
Niklas P's avatar
Niklas P committed

export const accountValueTemplate = (option: any, props: any) => {
Niklas P's avatar
Niklas P committed
    if ( option ) {
    return (
        <div className={ styles.accountOption }>
            <div>
                <Identicon
                    value={option?.address}
                    size={32}
                    theme='polkadot'
                />
                {option?.meta?.name }
Niklas P's avatar
Niklas P committed
            </div>
Niklas P's avatar
Niklas P committed
        </div>
    );
    }

    return <span>{props.placeholder}</span>;
};
Niklas P's avatar
Niklas P committed

export const accountOptionTemplate = (option: any) => {
    return (
        <div className={ styles.accountOption }>
            <div>
                <Identicon
                    value={option?.address}
                    size={32}
                    theme='polkadot'
                />
                {option?.meta?.name }
Niklas P's avatar
Niklas P committed
export default function AccountSelector( ) {
Niklas P's avatar
Niklas P committed
    const { accounts, actingAccountIdx, setActingAccountByAddress } = useContext(PolkadotExtensionContext)
    const actingAccount = actingAccountIdx !== undefined ? accounts?.[actingAccountIdx] : undefined
Niklas P's avatar
Niklas P committed

    return (
        <Dropdown 
            options={ accounts }
            optionLabel="address" 
            placeholder="Select Account"
            className={ styles.dropdown }
Niklas P's avatar
Niklas P committed
            value={ actingAccount }
Niklas P's avatar
Niklas P committed
            itemTemplate={ accountOptionTemplate }
            valueTemplate={ accountValueTemplate }
Niklas P's avatar
Niklas P committed
            onChange={(event) => {
Niklas P's avatar
Niklas P committed
                setActingAccountByAddress(event.target.value.address)
Niklas P's avatar
Niklas P committed
            }}
        />
    )
    

    // return (
    //     <>
    //         <label for="select-polkadot-account">
    //             Select the account you want to use
    //         </label>
    //         <select
    //             id="select-polkadot-account"
    //             className="p-3 m-3 border-2 border-green-500"
    //             onChange={(event) => {
    //             console.log(event);
    //             onSelectAccount(event.target.value);
    //             }}
    //         >
    //             {accounts.map((a) => (
    //             <option key={a.address} value={a.address}>
    //                 {a.address} [{a.meta.name}]
    //             </option>
    //             ))}
    //         </select>
    //     </>
    // )
}