Commit 669f6281 authored by Max Alekseenko's avatar Max Alekseenko

fix tooltip

parent e0e02202
import type { ButtonProps } from '@chakra-ui/react'; import type { ButtonProps } from '@chakra-ui/react';
import { Popover, PopoverContent, PopoverBody, PopoverTrigger, Button, Box, useBoolean, Tooltip } from '@chakra-ui/react'; import { Popover, PopoverContent, PopoverBody, PopoverTrigger, Button, Box, useBoolean } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon'; import AddressIdenticon from 'ui/shared/entities/address/AddressIdenticon';
...@@ -8,6 +8,7 @@ import useWallet from 'ui/snippets/walletMenu/useWallet'; ...@@ -8,6 +8,7 @@ import useWallet from 'ui/snippets/walletMenu/useWallet';
import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent'; import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent';
import useMenuButtonColors from '../useMenuButtonColors'; import useMenuButtonColors from '../useMenuButtonColors';
import WalletTooltip from './WalletTooltip';
type Props = { type Props = {
isHomePage?: boolean; isHomePage?: boolean;
...@@ -17,15 +18,6 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => { ...@@ -17,15 +18,6 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => {
const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet(); const { isWalletConnected, address, connect, disconnect, isModalOpening, isModalOpen } = useWallet();
const { themedBackground, themedBorderColor, themedColor } = useMenuButtonColors(); const { themedBackground, themedBorderColor, themedColor } = useMenuButtonColors();
const [ isPopoverOpen, setIsPopoverOpen ] = useBoolean(false); const [ isPopoverOpen, setIsPopoverOpen ] = useBoolean(false);
const [ isTooltipShown, setIsTooltipShown ] = useBoolean(false);
React.useEffect(() => {
const wasShown = window.localStorage.getItem('wallet-connect-tooltip-shown');
if (!wasShown) {
setIsTooltipShown.on();
window.localStorage.setItem('wallet-connect-tooltip-shown', 'true');
}
}, [ setIsTooltipShown ]);
const variant = React.useMemo(() => { const variant = React.useMemo(() => {
if (isWalletConnected) { if (isWalletConnected) {
...@@ -63,16 +55,7 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => { ...@@ -63,16 +55,7 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => {
isOpen={ isPopoverOpen } isOpen={ isPopoverOpen }
onClose={ setIsPopoverOpen.off } onClose={ setIsPopoverOpen.off }
> >
<Tooltip <WalletTooltip isDisabled={ isWalletConnected }>
label={ <span>Your wallet is used to interact with<br/>apps and contracts in the explorer</span> }
textAlign="center"
padding={ 2 }
isDisabled={ isWalletConnected }
openDelay={ 300 }
isOpen={ isTooltipShown || undefined }
onClose={ setIsTooltipShown.off }
display={{ base: 'none', lg: 'flex' }}
>
<Box ml={ 2 }> <Box ml={ 2 }>
<PopoverTrigger> <PopoverTrigger>
<Button <Button
...@@ -96,7 +79,7 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => { ...@@ -96,7 +79,7 @@ const WalletMenuDesktop = ({ isHomePage }: Props) => {
</Button> </Button>
</PopoverTrigger> </PopoverTrigger>
</Box> </Box>
</Tooltip> </WalletTooltip>
{ isWalletConnected && ( { isWalletConnected && (
<PopoverContent w="235px"> <PopoverContent w="235px">
<PopoverBody padding="24px 16px 16px 16px"> <PopoverBody padding="24px 16px 16px 16px">
......
...@@ -7,6 +7,7 @@ import useWallet from 'ui/snippets/walletMenu/useWallet'; ...@@ -7,6 +7,7 @@ import useWallet from 'ui/snippets/walletMenu/useWallet';
import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent'; import WalletMenuContent from 'ui/snippets/walletMenu/WalletMenuContent';
import useMenuButtonColors from '../useMenuButtonColors'; import useMenuButtonColors from '../useMenuButtonColors';
import WalletTooltip from './WalletTooltip';
const WalletMenuMobile = () => { const WalletMenuMobile = () => {
const { isOpen, onOpen, onClose } = useDisclosure(); const { isOpen, onOpen, onClose } = useDisclosure();
...@@ -15,22 +16,24 @@ const WalletMenuMobile = () => { ...@@ -15,22 +16,24 @@ const WalletMenuMobile = () => {
return ( return (
<> <>
<IconButton <WalletTooltip isDisabled={ isWalletConnected } isMobile>
aria-label="wallet menu" <IconButton
icon={ isWalletConnected ? aria-label="wallet menu"
<AddressIdenticon size={ 20 } hash={ address }/> : icon={ isWalletConnected ?
<Icon as={ walletIcon } boxSize={ 6 }/> <AddressIdenticon size={ 20 } hash={ address }/> :
} <Icon as={ walletIcon } boxSize={ 6 }/>
variant={ isWalletConnected ? 'subtle' : 'outline' } }
colorScheme="gray" variant={ isWalletConnected ? 'subtle' : 'outline' }
boxSize="40px" colorScheme="gray"
flexShrink={ 0 } boxSize="40px"
bg={ isWalletConnected ? themedBackground : undefined } flexShrink={ 0 }
color={ themedColor } bg={ isWalletConnected ? themedBackground : undefined }
borderColor={ !isWalletConnected ? themedBorderColor : undefined } color={ themedColor }
onClick={ isWalletConnected ? onOpen : connect } borderColor={ !isWalletConnected ? themedBorderColor : undefined }
isLoading={ isModalOpening || isModalOpen } onClick={ isWalletConnected ? onOpen : connect }
/> isLoading={ isModalOpening || isModalOpen }
/>
</WalletTooltip>
{ isWalletConnected && ( { isWalletConnected && (
<Drawer <Drawer
isOpen={ isOpen } isOpen={ isOpen }
......
import { Tooltip, useBoolean } from '@chakra-ui/react';
import React from 'react';
type Props = {
children: React.ReactNode;
isDisabled?: boolean;
isMobile?: boolean;
};
const WalletTooltip = ({ children, isDisabled, isMobile }: Props) => {
const [ isTooltipShown, setIsTooltipShown ] = useBoolean(false);
React.useEffect(() => {
const key = `wallet-connect-tooltip-shown-${ isMobile ? 'mobile' : 'desktop' }`;
const wasShown = window.localStorage.getItem(key);
if (!wasShown) {
setIsTooltipShown.on();
window.localStorage.setItem(key, 'true');
}
}, [ setIsTooltipShown, isMobile ]);
return (
<Tooltip
label={ <span>Your wallet is used to interact with<br/>apps and contracts in the explorer</span> }
textAlign="center"
padding={ 2 }
isDisabled={ isDisabled }
openDelay={ 300 }
isOpen={ isTooltipShown || (isMobile ? false : undefined) }
onClose={ setIsTooltipShown.off }
display={ isMobile ? { base: 'flex', lg: 'none' } : { base: 'none', lg: 'flex' } }
>
{ children }
</Tooltip>
);
};
export default WalletTooltip;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment