Tooltip on icons (#3529)
* Step 3: Set up PostgreSQL Database * Tooltip on Icons * Cleaning icon tooltip code * Fix according to review --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -1,7 +1,9 @@
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
import { Tooltip } from 'react-tooltip';
|
||||||
import { useTheme } from '@emotion/react';
|
import { useTheme } from '@emotion/react';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
|
import kebabCase from 'lodash.kebabcase';
|
||||||
|
|
||||||
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
|
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
|
||||||
import { EllipsisDisplay } from '@/ui/field/display/components/EllipsisDisplay';
|
import { EllipsisDisplay } from '@/ui/field/display/components/EllipsisDisplay';
|
||||||
@ -69,6 +71,17 @@ const StyledInlineCellBaseContainer = styled.div`
|
|||||||
user-select: none;
|
user-select: none;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const StyledTooltip = styled(Tooltip)`
|
||||||
|
background-color: ${({ theme }) => theme.background.primary};
|
||||||
|
box-shadow: ${({ theme }) => theme.boxShadow.light};
|
||||||
|
|
||||||
|
color: ${({ theme }) => theme.font.color.primary};
|
||||||
|
|
||||||
|
font-size: ${({ theme }) => theme.font.size.sm};
|
||||||
|
font-weight: ${({ theme }) => theme.font.weight.regular};
|
||||||
|
padding: ${({ theme }) => theme.spacing(2)};
|
||||||
|
`;
|
||||||
|
|
||||||
type RecordInlineCellContainerProps = {
|
type RecordInlineCellContainerProps = {
|
||||||
IconLabel?: IconComponent;
|
IconLabel?: IconComponent;
|
||||||
label?: string;
|
label?: string;
|
||||||
@ -127,7 +140,7 @@ export const RecordInlineCellContainer = ({
|
|||||||
onMouseLeave={handleContainerMouseLeave}
|
onMouseLeave={handleContainerMouseLeave}
|
||||||
>
|
>
|
||||||
{(!!IconLabel || !!label) && (
|
{(!!IconLabel || !!label) && (
|
||||||
<StyledLabelAndIconContainer>
|
<StyledLabelAndIconContainer id={kebabCase(label)}>
|
||||||
{IconLabel && (
|
{IconLabel && (
|
||||||
<StyledIconContainer>
|
<StyledIconContainer>
|
||||||
<IconLabel stroke={theme.icon.stroke.sm} />
|
<IconLabel stroke={theme.icon.stroke.sm} />
|
||||||
@ -138,6 +151,16 @@ export const RecordInlineCellContainer = ({
|
|||||||
<EllipsisDisplay maxWidth={labelWidth}>{label}</EllipsisDisplay>
|
<EllipsisDisplay maxWidth={labelWidth}>{label}</EllipsisDisplay>
|
||||||
</StyledLabelContainer>
|
</StyledLabelContainer>
|
||||||
)}
|
)}
|
||||||
|
{!showLabel && (
|
||||||
|
<StyledTooltip
|
||||||
|
anchorSelect={`#${kebabCase(label)}`}
|
||||||
|
content={label}
|
||||||
|
clickable
|
||||||
|
noArrow
|
||||||
|
place="left"
|
||||||
|
positionStrategy="fixed"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</StyledLabelAndIconContainer>
|
</StyledLabelAndIconContainer>
|
||||||
)}
|
)}
|
||||||
<StyledValueContainer>
|
<StyledValueContainer>
|
||||||
|
|||||||
Reference in New Issue
Block a user