Skip to content

Commit 91b2343

Browse files
authored
Tooltip refactored and other minor fixes with placement and positioning (#782)
1 parent 2508d9f commit 91b2343

File tree

4 files changed

+40
-132
lines changed

4 files changed

+40
-132
lines changed

src/components/tools/Popper/Popper.tsx

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState, useRef } from 'react';
22
import { customClassSwitcher } from '~/core';
33
import { clsx } from 'clsx';
44

5-
import { useFloating, useInteractions, useHover, FloatingArrow, arrow, offset, flip, autoPlacement, hide, shift, autoUpdate, useRole, useDismiss, FloatingPortal } from '@floating-ui/react';
5+
import { useFloating, useInteractions, useHover, FloatingArrow, arrow, offset, flip, autoPlacement, hide, shift, autoUpdate, useRole, useDismiss, FloatingPortal, Placement } from '@floating-ui/react';
66

77
// TODO : Use Floating Portal?
88
// TODO : Collisions dont seem to be working as expected, need to investigate
@@ -22,19 +22,7 @@ export type PopperProps = {
2222
customRootClass?: string;
2323
activationStrategy?: 'hover';
2424
className?: string;
25-
placement?:
26-
| 'top'
27-
| 'bottom'
28-
| 'left'
29-
| 'right'
30-
| 'top-start'
31-
| 'top-end'
32-
| 'bottom-start'
33-
| 'bottom-end'
34-
| 'left-start'
35-
| 'left-end'
36-
| 'right-start'
37-
| 'right-end';
25+
placement?:Placement;
3826
children?: React.ReactNode; // TODO: fix
3927
open?: boolean;
4028
hoverDelay?: number;
@@ -101,7 +89,7 @@ const Popper = ({
10189
dismiss
10290
]);
10391

104-
return <span>
92+
return <>
10593
<span
10694
className={clsx('rad-ui-popper', `${rootClass}-reference-element`, className)} ref={refs.setReference} {...getReferenceProps(
10795
{
@@ -116,7 +104,7 @@ const Popper = ({
116104
{pop}</div>
117105
</FloatingPortal>
118106
}
119-
</span>;
107+
</>;
120108
};
121109

122110
export default Popper;

src/components/ui/Tooltip/Tooltip.tsx

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
11
import React from 'react';
2-
import Popper from '~/components/tools/Popper/Popper';
2+
import Popper, { PopperProps } from '~/components/tools/Popper/Popper';
33

44
const COMPONENT_NAME = 'Tooltip';
55

66
type TooltipProps = {
7-
children: React.ReactNode;
8-
label?: string;
9-
placement?:
10-
| 'top'
11-
| 'bottom'
12-
| 'left'
13-
| 'right'
14-
| 'top-start'
15-
| 'top-end'
16-
| 'bottom-start'
17-
| 'bottom-end'
18-
| 'left-start'
19-
| 'left-end'
20-
| 'right-start'
21-
| 'right-end';
22-
[key: string]: any;
23-
};
7+
children: React.ReactNode;
8+
label?: string;
9+
placement?: PopperProps['placement'];
10+
} & JSX.IntrinsicElements['span'];
2411

2512
const Tooltip = ({ children, label = '', placement = 'top', ...props }: TooltipProps) => {
2613
return (

src/components/ui/Tooltip/stories/Tooltip.stories.js

Lines changed: 0 additions & 98 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import React from 'react';
2+
import type { Meta, StoryObj } from '@storybook/react';
3+
4+
import Tooltip from '../Tooltip';
5+
import SandboxEditor from '~/components/tools/SandboxEditor/SandboxEditor';
6+
import { Placement } from '@floating-ui/react';
7+
8+
const placement = ['top', 'right', 'bottom', 'left', 'top-start', 'top-end', 'right-start', 'right-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end'] satisfies Placement[];
9+
10+
const meta: Meta<typeof Tooltip> = {
11+
title: 'Components/Tooltip',
12+
component: Tooltip
13+
};
14+
15+
export default meta;
16+
17+
type Story = StoryObj<typeof Tooltip>;
18+
19+
export const Basic: Story = {
20+
render: () => (
21+
<SandboxEditor>
22+
<div className="grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] justify-center gap-3">
23+
{placement.map((p) => (
24+
<Tooltip label={p} placement={p} key={p} className='capitalize border border-neutral-600 p-4 rounded-md'>
25+
<span>{p}</span>
26+
</Tooltip>
27+
))}
28+
</div>
29+
</SandboxEditor>
30+
)
31+
};

0 commit comments

Comments
 (0)