feat: hoverable tooltip

This commit is contained in:
Sérgio Salgado 2020-12-03 19:07:16 +00:00 committed by Josh Harvey
parent 6170624be0
commit c1d781d488
9 changed files with 57 additions and 24 deletions

View file

@ -51,4 +51,35 @@ const Tooltip = memo(({ children, width, Icon = HelpIcon }) => {
)
})
export default Tooltip
const HoverableTooltip = memo(({ parentElements, children, width }) => {
const classes = useStyles({ width })
const [helpPopperAnchorEl, setHelpPopperAnchorEl] = useState(null)
const handleOpenHelpPopper = event => {
setHelpPopperAnchorEl(helpPopperAnchorEl ? null : event.currentTarget)
}
const handleCloseHelpPopper = () => {
setHelpPopperAnchorEl(null)
}
const helpPopperOpen = Boolean(helpPopperAnchorEl)
return (
<div>
<div
onMouseEnter={handleOpenHelpPopper}
onMouseLeave={handleCloseHelpPopper}>
{parentElements}
</div>
<Popper
open={helpPopperOpen}
anchorEl={helpPopperAnchorEl}
placement="bottom">
<div className={classes.popoverContent}>{children}</div>
</Popper>
</div>
)
})
export { Tooltip, HoverableTooltip }

View file

@ -6,7 +6,7 @@ import gql from 'graphql-tag'
import * as R from 'ramda'
import React, { useState } from 'react'
import Tooltip from 'src/components/Tooltip'
import { Tooltip } from 'src/components/Tooltip'
import { Link } from 'src/components/buttons'
import { Switch } from 'src/components/inputs'
import Sidebar from 'src/components/layout/Sidebar'

View file

@ -4,7 +4,7 @@ import gql from 'graphql-tag'
import * as R from 'ramda'
import React, { useState } from 'react'
import Tooltip from 'src/components/Tooltip'
import { Tooltip } from 'src/components/Tooltip'
import { NamespacedTable as EditableTable } from 'src/components/editableTable'
import { Switch } from 'src/components/inputs'
import TitleSection from 'src/components/layout/TitleSection'

View file

@ -3,7 +3,7 @@ import { makeStyles } from '@material-ui/core/styles'
import gql from 'graphql-tag'
import React, { memo } from 'react'
import Tooltip from 'src/components/Tooltip'
import { Tooltip } from 'src/components/Tooltip'
import { Switch } from 'src/components/inputs'
import { H4, P, Label2 } from 'src/components/typography'
import { fromNamespace, toNamespace, namespaces } from 'src/utils/config'

View file

@ -1,10 +1,11 @@
import { makeStyles, Box, Tooltip } from '@material-ui/core'
import { makeStyles, Box } from '@material-ui/core'
import BigNumber from 'bignumber.js'
import moment from 'moment'
import React, { memo } from 'react'
import { HoverableTooltip } from 'src/components/Tooltip'
import { IDButton } from 'src/components/buttons'
import { Label1 } from 'src/components/typography'
import { P, Label1 } from 'src/components/typography'
import { ReactComponent as CardIdInverseIcon } from 'src/styling/icons/ID/card/white.svg'
import { ReactComponent as CardIdIcon } from 'src/styling/icons/ID/card/zodiac.svg'
import { ReactComponent as PhoneIdInverseIcon } from 'src/styling/icons/ID/phone/white.svg'
@ -53,7 +54,12 @@ const DetailsRow = ({ it: tx }) => {
)
}
console.log(tx)
const errorElements = (
<>
<Label>Transaction status</Label>
<span className={classes.bold}>{getStatus(tx)}</span>
</>
)
return (
<div className={classes.wrapper}>
@ -82,7 +88,7 @@ const DetailsRow = ({ it: tx }) => {
)}
{tx.customerIdCardPhotoPath && !tx.customerIdCardData && (
<IDButton
popoverClassname={classes.popover}
popoverClassname={classes.clipboardPopover}
className={classes.idButton}
name="card"
Icon={CardIdIcon}
@ -186,10 +192,13 @@ const DetailsRow = ({ it: tx }) => {
</div>
<div className={classes.lastRow}>
<div>
<Label>Transaction status</Label>
<Tooltip disableFocusListener title={getStatusDetails(tx)}>
<span className={classes.bold}>{getStatus(tx)}</span>
</Tooltip>
{getStatusDetails(tx) ? (
<HoverableTooltip parentElements={errorElements} width={200}>
<P>{getStatusDetails(tx)}</P>
</HoverableTooltip>
) : (
errorElements
)}
</div>
</div>
</div>

View file

@ -32,7 +32,7 @@ export default {
txIcon: {
marginRight: 10
},
popover: {
clipboardPopover: {
height: 164,
width: 215
},

View file

@ -6,10 +6,7 @@ const getCashOutStatus = it => {
}
const getCashOutStatusDetails = it => {
if (it.hasError) return it.hasError
if (it.dispense) return ''
if (it.expired) return ''
return 'Pending'
return it.hasError ? it.hasError : null
}
const getCashInStatus = it => {
@ -21,11 +18,7 @@ const getCashInStatus = it => {
}
const getCashInStatusDetails = it => {
if (it.operatorCompleted) return ''
if (it.hasError) return it.hasError
if (it.sendConfirmed) return ''
if (it.expired) return ''
return 'Pending'
return it.hasError ? it.hasError : null
}
const getStatus = it => {

View file

@ -5,7 +5,7 @@ import * as R from 'ramda'
import React, { useState } from 'react'
import { v4 } from 'uuid'
import Tooltip from 'src/components/Tooltip'
import { Tooltip } from 'src/components/Tooltip'
import { Link, Button } from 'src/components/buttons'
import { Table as EditableTable } from 'src/components/editableTable'
import { Switch } from 'src/components/inputs'

View file

@ -5,7 +5,7 @@ import gql from 'graphql-tag'
import React, { useState } from 'react'
import InfoMessage from 'src/components/InfoMessage'
import Tooltip from 'src/components/Tooltip'
import { Tooltip } from 'src/components/Tooltip'
import { Button, SupportLinkButton } from 'src/components/buttons'
import { RadioGroup } from 'src/components/inputs'
import { H1, H4, P } from 'src/components/typography'