ConceptPortal-public/rsconcept/frontend/src/components/Common/ConceptTooltip.tsx

42 lines
875 B
TypeScript
Raw Normal View History

'use client';
import clsx from 'clsx';
2023-12-07 01:33:34 +03:00
import { createPortal } from 'react-dom';
2023-07-30 16:48:25 +03:00
import { ITooltip, Tooltip } from 'react-tooltip';
import { useConceptTheme } from '@/context/ThemeContext';
2023-07-30 16:48:25 +03:00
interface ConceptTooltipProps
extends Omit<ITooltip, 'variant'> {
2023-09-05 23:18:21 +03:00
layer?: string
2023-07-30 16:48:25 +03:00
}
2023-11-05 16:31:49 +03:00
function ConceptTooltip({
className,
layer='z-tooltip',
place='bottom',
2023-11-24 18:03:10 +03:00
style,
...restProps
2023-11-05 16:31:49 +03:00
}: ConceptTooltipProps) {
2023-07-30 16:48:25 +03:00
const { darkMode } = useConceptTheme();
if (typeof window === 'undefined') {
return null;
}
2023-12-07 01:33:34 +03:00
return createPortal(
2023-07-30 16:48:25 +03:00
<Tooltip
opacity={0.97}
2023-11-24 18:03:10 +03:00
style={{...{ paddingTop: '2px', paddingBottom: '2px'}, ...style}}
className={clsx(
'overflow-auto',
'border shadow-md',
layer,
className
)}
2023-07-30 16:48:25 +03:00
variant={(darkMode ? 'dark' : 'light')}
place={place}
{...restProps}
2023-12-07 01:33:34 +03:00
/>, document.body);
2023-07-30 16:48:25 +03:00
}
export default ConceptTooltip;