feat: hoverable tooltip
This commit is contained in:
parent
6170624be0
commit
c1d781d488
9 changed files with 57 additions and 24 deletions
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ export default {
|
|||
txIcon: {
|
||||
marginRight: 10
|
||||
},
|
||||
popover: {
|
||||
clipboardPopover: {
|
||||
height: 164,
|
||||
width: 215
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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 => {
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue