471888563e
* WIP Item Popover * Hide user on ItemSumarry to avoid infinite popovers * Introduce HoverablePopover * Delete itempopover & userpopover css * Fix excess bottom padding on the ItemPopover * Fix ItemSummary: Use text for itens that doesn't have a title * Handling #itemid/something links + Tweaks for rendering comment summary * refine hoverable popover --------- Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com> Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
29 lines
814 B
JavaScript
29 lines
814 B
JavaScript
import { ITEM } from '@/fragments/items'
|
|
import errorStyles from '@/styles/error.module.css'
|
|
import { useLazyQuery } from '@apollo/client'
|
|
import classNames from 'classnames'
|
|
import HoverablePopover from './hoverable-popover'
|
|
import { ItemSkeleton, ItemSummary } from './item'
|
|
|
|
export default function ItemPopover ({ id, children }) {
|
|
const [getItem, { loading, data }] = useLazyQuery(
|
|
ITEM,
|
|
{
|
|
variables: { id },
|
|
fetchPolicy: 'cache-first'
|
|
}
|
|
)
|
|
|
|
return (
|
|
<HoverablePopover
|
|
onShow={getItem}
|
|
trigger={children}
|
|
body={!data || loading
|
|
? <ItemSkeleton showUpvote={false} />
|
|
: !data.item
|
|
? <h1 className={classNames(errorStyles.status, errorStyles.describe)}>ITEM NOT FOUND</h1>
|
|
: <ItemSummary item={data.item} />}
|
|
/>
|
|
)
|
|
}
|