@mui/material#ButtonProps TypeScript Examples
The following examples show how to use
@mui/material#ButtonProps.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ExternalLinkButton.tsx From frontend with MIT License | 6 votes |
export default function ExternalLinkButton({
children,
href,
...props
}: PropsWithChildren<ButtonProps<'a'> & { href: string }>) {
return (
<Button href={href} target="_blank" rel="noreferrer noopener" {...props}>
{children}
</Button>
)
}
Example #2
Source File: WalletDialogButton.tsx From wallet-adapter with Apache License 2.0 | 6 votes |
WalletDialogButton: FC<ButtonProps> = ({
children = 'Select Wallet',
color = 'primary',
variant = 'contained',
type = 'button',
onClick,
...props
}) => {
const { setOpen } = useWalletDialog();
const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(
(event) => {
if (onClick) onClick(event);
if (!event.defaultPrevented) setOpen(true);
},
[onClick, setOpen]
);
return (
<Button color={color} variant={variant} type={type} onClick={handleClick} {...props}>
{children}
</Button>
);
}
Example #3
Source File: CustomNumberInput.tsx From genshin-optimizer with MIT License | 5 votes |
// wrap the Input with this when using the input in a buttongroup
export function CustomNumberInputButtonGroupWrapper({ children, disableRipple, disableFocusRipple, disableTouchRipple, ...props }: ButtonProps) {
return <Wrapper disableRipple disableFocusRipple disableTouchRipple {...props}>{children}</Wrapper>
}
Example #4
Source File: TextButton.tsx From genshin-optimizer with MIT License | 5 votes |
export default function TextButton({ children, disabled, ...props }: ButtonProps) {
return <DisabledButton {...props} disabled >
{children}
</DisabledButton>
}
Example #5
Source File: WalletConnectButton.tsx From wallet-adapter with Apache License 2.0 | 5 votes |
WalletConnectButton: FC<ButtonProps> = ({
color = 'primary',
variant = 'contained',
type = 'button',
children,
disabled,
onClick,
...props
}) => {
const { wallet, connect, connecting, connected } = useWallet();
const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(
(event) => {
if (onClick) onClick(event);
// eslint-disable-next-line @typescript-eslint/no-empty-function
if (!event.defaultPrevented)
connect().catch(() => {
// Silently catch because any errors are caught by the context `onError` handler
});
},
[onClick, connect]
);
const content = useMemo(() => {
if (children) return children;
if (connecting) return 'Connecting ...';
if (connected) return 'Connected';
if (wallet) return 'Connect';
return 'Connect Wallet';
}, [children, connecting, connected, wallet]);
return (
<Button
color={color}
variant={variant}
type={type}
onClick={handleClick}
disabled={disabled || !wallet || connecting || connected}
startIcon={<WalletIcon wallet={wallet} />}
{...props}
>
{content}
</Button>
);
}
Example #6
Source File: WalletDisconnectButton.tsx From wallet-adapter with Apache License 2.0 | 5 votes |
WalletDisconnectButton: FC<ButtonProps> = ({
color = 'primary',
variant = 'contained',
type = 'button',
children,
disabled,
onClick,
...props
}) => {
const { wallet, disconnect, disconnecting } = useWallet();
const handleClick: MouseEventHandler<HTMLButtonElement> = useCallback(
(event) => {
if (onClick) onClick(event);
// eslint-disable-next-line @typescript-eslint/no-empty-function
if (!event.defaultPrevented)
disconnect().catch(() => {
// Silently catch because any errors are caught by the context `onError` handler
});
},
[onClick, disconnect]
);
const content = useMemo(() => {
if (children) return children;
if (disconnecting) return 'Disconnecting ...';
if (wallet) return 'Disconnect';
return 'Disconnect Wallet';
}, [children, disconnecting, wallet]);
return (
<Button
color={color}
variant={variant}
type={type}
onClick={handleClick}
disabled={disabled || !wallet}
startIcon={<WalletIcon wallet={wallet} />}
{...props}
>
{content}
</Button>
);
}
Example #7
Source File: WalletMultiButton.tsx From wallet-adapter with Apache License 2.0 | 4 votes |
WalletMultiButton: FC<ButtonProps> = ({
color = 'primary',
variant = 'contained',
type = 'button',
children,
...props
}) => {
const { publicKey, wallet, disconnect } = useWallet();
const { setOpen } = useWalletDialog();
const [anchor, setAnchor] = useState<HTMLElement>();
const base58 = useMemo(() => publicKey?.toBase58(), [publicKey]);
const content = useMemo(() => {
if (children) return children;
if (!wallet || !base58) return null;
return base58.slice(0, 4) + '..' + base58.slice(-4);
}, [children, wallet, base58]);
if (!wallet) {
return (
<WalletDialogButton color={color} variant={variant} type={type} {...props}>
{children}
</WalletDialogButton>
);
}
if (!base58) {
return (
<WalletConnectButton color={color} variant={variant} type={type} {...props}>
{children}
</WalletConnectButton>
);
}
return (
<>
<Button
color={color}
variant={variant}
type={type}
startIcon={<WalletIcon wallet={wallet} />}
onClick={(event) => setAnchor(event.currentTarget)}
aria-controls="wallet-menu"
aria-haspopup="true"
{...props}
>
{content}
</Button>
<StyledMenu
id="wallet-menu"
anchorEl={anchor}
open={!!anchor}
onClose={() => setAnchor(undefined)}
marginThreshold={0}
TransitionComponent={Fade}
transitionDuration={250}
keepMounted
anchorOrigin={{
vertical: 'top',
horizontal: 'left',
}}
>
<WalletMenuItem onClick={() => setAnchor(undefined)}>
<Button
color={color}
variant={variant}
type={type}
startIcon={<WalletIcon wallet={wallet} />}
onClick={(event) => setAnchor(undefined)}
fullWidth
{...props}
>
{wallet.adapter.name}
</Button>
</WalletMenuItem>
<Collapse in={!!anchor}>
<WalletActionMenuItem
onClick={async () => {
setAnchor(undefined);
await navigator.clipboard.writeText(base58);
}}
>
<ListItemIcon>
<CopyIcon />
</ListItemIcon>
Copy address
</WalletActionMenuItem>
<WalletActionMenuItem
onClick={() => {
setAnchor(undefined);
setOpen(true);
}}
>
<ListItemIcon>
<SwitchIcon />
</ListItemIcon>
Change wallet
</WalletActionMenuItem>
<WalletActionMenuItem
onClick={() => {
setAnchor(undefined);
// eslint-disable-next-line @typescript-eslint/no-empty-function
disconnect().catch(() => {
// Silently catch because any errors are caught by the context `onError` handler
});
}}
>
<ListItemIcon>
<DisconnectIcon />
</ListItemIcon>
Disconnect
</WalletActionMenuItem>
</Collapse>
</StyledMenu>
</>
);
}