@trackunit/react-components 1.17.33-alpha-3fb17ca5f15.0 → 1.17.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.js +17 -12
- package/index.esm.js +18 -13
- package/package.json +5 -5
- package/src/components/Popover/PopoverTypes.d.ts +22 -1
- package/src/components/Tooltip/Tooltip.d.ts +15 -1
package/index.cjs.js
CHANGED
|
@@ -2875,7 +2875,7 @@ function createGrid() {
|
|
|
2875
2875
|
layout(config) {
|
|
2876
2876
|
// At runtime, config properties are always valid arrays (error types only exist at compile-time)
|
|
2877
2877
|
// We need to cast and copy readonly arrays to mutable arrays for storage
|
|
2878
|
-
// eslint-disable-next-line
|
|
2878
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion -- Error tuple types only exist at compile-time; runtime values are always valid arrays
|
|
2879
2879
|
const runtimeConfig = config;
|
|
2880
2880
|
layouts.push({
|
|
2881
2881
|
layout: runtimeConfig.layout.map(row => [...row]),
|
|
@@ -2987,7 +2987,7 @@ function GridAreas({ slots, css, containerProps, validationRef, className, child
|
|
|
2987
2987
|
*
|
|
2988
2988
|
* @see https://tailwindcss.com/docs/responsive-design#container-queries
|
|
2989
2989
|
*/
|
|
2990
|
-
// eslint-disable-next-line
|
|
2990
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
2991
2991
|
const CONTAINER_BREAKPOINTS = Object.fromEntries(Object.entries(uiDesignTokens.themeContainerSize).map(([key, value]) => [`@${key}`, value]));
|
|
2992
2992
|
|
|
2993
2993
|
/**
|
|
@@ -3060,7 +3060,7 @@ function isContainerBreakpoint(value) {
|
|
|
3060
3060
|
* Each slot contains a data-slot attribute and gridArea style.
|
|
3061
3061
|
*/
|
|
3062
3062
|
function createSlots(areas) {
|
|
3063
|
-
// eslint-disable-next-line
|
|
3063
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion -- Object.fromEntries loses key type information
|
|
3064
3064
|
return Object.fromEntries(areas.map(area => [area, { "data-slot": area, style: { gridArea: area } }]));
|
|
3065
3065
|
}
|
|
3066
3066
|
/**
|
|
@@ -4226,8 +4226,13 @@ const usePopover = ({ initialOpen = false, placement = "bottom", isModal, isOpen
|
|
|
4226
4226
|
keyboardHandlers: resolvedActivation.keyboardHandlers,
|
|
4227
4227
|
});
|
|
4228
4228
|
const dismissInteraction = react$1.useDismiss(popoverContext, resolvedDismissal);
|
|
4229
|
+
const hoverOptions = typeof resolvedActivation.hover === "object" ? resolvedActivation.hover : undefined;
|
|
4230
|
+
const hoverEnabled = hoverOptions ? (hoverOptions.active ?? true) : resolvedActivation.hover === true;
|
|
4231
|
+
const hoverInteractable = hoverOptions?.interactable ?? true;
|
|
4229
4232
|
const hoverInteraction = react$1.useHover(popoverContext, {
|
|
4230
|
-
enabled:
|
|
4233
|
+
enabled: hoverEnabled,
|
|
4234
|
+
delay: hoverOptions?.delayed === true ? { open: 400 } : undefined,
|
|
4235
|
+
handleClose: hoverEnabled === true && hoverInteractable === true ? react$1.safePolygon() : undefined,
|
|
4231
4236
|
});
|
|
4232
4237
|
const roleInteraction = react$1.useRole(popoverContext);
|
|
4233
4238
|
const combinedInteractions = react$1.useInteractions([
|
|
@@ -4507,7 +4512,7 @@ const cvaTooltipIcon = cssClassVarianceUtilities.cvaMerge(["text-neutral-300", "
|
|
|
4507
4512
|
},
|
|
4508
4513
|
},
|
|
4509
4514
|
});
|
|
4510
|
-
const cvaTooltipPopover = cssClassVarianceUtilities.cvaMerge(["
|
|
4515
|
+
const cvaTooltipPopover = cssClassVarianceUtilities.cvaMerge(["origin-center"]);
|
|
4511
4516
|
const cvaTooltipPopoverTail = cssClassVarianceUtilities.cvaMerge("", {
|
|
4512
4517
|
variants: {
|
|
4513
4518
|
placement: {
|
|
@@ -4596,7 +4601,7 @@ const FloatingArrowContainer = ({ arrowRef, mode = "dark", }) => {
|
|
|
4596
4601
|
* @param {TooltipProps} props - The props for the Tooltip component
|
|
4597
4602
|
* @returns {ReactElement} Tooltip component
|
|
4598
4603
|
*/
|
|
4599
|
-
const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label, placement = "auto", mode = "dark", iconProps, id, style, }) => {
|
|
4604
|
+
const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label, placement = "auto", mode = "dark", iconProps, id, style, delayed = false, interactable = true, }) => {
|
|
4600
4605
|
const [isOpen, setIsOpen] = react.useState(false);
|
|
4601
4606
|
const arrowRef = react.useRef(null);
|
|
4602
4607
|
const { refs, floatingStyles, context } = react$1.useFloating({
|
|
@@ -4614,12 +4619,12 @@ const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label,
|
|
|
4614
4619
|
whileElementsMounted: react$1.autoUpdate,
|
|
4615
4620
|
});
|
|
4616
4621
|
const { isMounted } = react$1.useTransitionStatus(context);
|
|
4617
|
-
// Please don't
|
|
4618
|
-
// I tried and it caused infinite re-renders some places
|
|
4622
|
+
// Please don't move this into the component body directly without testing it first
|
|
4623
|
+
// I tried and it caused infinite re-renders some places
|
|
4619
4624
|
const wrappedChildren = react.useMemo(() => {
|
|
4620
4625
|
return jsxRuntime.jsx(reactSlot.Slot, { children: children });
|
|
4621
4626
|
}, [children]);
|
|
4622
|
-
return (jsxRuntime.jsxs(Popover, { activation: { hover:
|
|
4627
|
+
return (jsxRuntime.jsxs(Popover, { activation: { hover: { delayed, interactable } }, className: cvaTooltipPopover(), "data-testid": dataTestId, id: id, onOpenStateChange: setIsOpen, placement: placement === "auto" ? "bottom" : placement, children: [jsxRuntime.jsx(PopoverTrigger, { "data-testid": dataTestId ? `${dataTestId}-trigger` : null, ref: refs.setReference, style: style, children: children === undefined ? (jsxRuntime.jsx(Icon, { className: cvaTooltipIcon({ color: mode }), "data-testid": dataTestId ? `${dataTestId}-icon` : undefined, name: "QuestionMarkCircle", size: "small", ...iconProps })) : (wrappedChildren) }), isMounted ? (jsxRuntime.jsx("div", { ref: refs.setFloating, style: floatingStyles, children: jsxRuntime.jsx(PopoverContent, { children: jsxRuntime.jsxs("div", { "aria-label": typeof label === "string" ? label : undefined, className: cvaTooltipPopoverContent({ color: mode }), "data-testid": dataTestId ? `${dataTestId}-content` : undefined, children: [jsxRuntime.jsx(Text, { "data-testid": dataTestId ? `${dataTestId}-text` : undefined, inverted: mode === "dark", size: "small", type: typeof label === "string" ? "p" : "span", children: label }), placement !== "auto" && jsxRuntime.jsx(FloatingArrowContainer, { arrowRef: arrowRef, mode: mode })] }) }) })) : null] }));
|
|
4623
4628
|
};
|
|
4624
4629
|
|
|
4625
4630
|
const cvaIndicator = cssClassVarianceUtilities.cvaMerge(["inline-flex", "items-center"]);
|
|
@@ -6181,7 +6186,7 @@ const MenuItem = ({ className, "data-testid": dataTestId, label, children, selec
|
|
|
6181
6186
|
if (stopPropagation) {
|
|
6182
6187
|
e.stopPropagation();
|
|
6183
6188
|
}
|
|
6184
|
-
// eslint-disable-next-line
|
|
6189
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
6185
6190
|
onClick(e);
|
|
6186
6191
|
}
|
|
6187
6192
|
};
|
|
@@ -8024,7 +8029,7 @@ const ToggleGroup = ({ list, selected, setSelected, onChange, disabled = false,
|
|
|
8024
8029
|
setSlidingWidth(width);
|
|
8025
8030
|
}, [validIndex]);
|
|
8026
8031
|
return (jsxRuntime.jsx("div", { className: tailwindMerge.twMerge(cvaToggleGroup({ className }), cvaToggleGroupWithSlidingBackground({ isMounted })), "data-testid": dataTestId, ref: ref, style:
|
|
8027
|
-
// eslint-disable-next-line
|
|
8032
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
8028
8033
|
{
|
|
8029
8034
|
"--sliding-left": `${slidingLeft}px`,
|
|
8030
8035
|
"--sliding-width": `${slidingWidth}px`,
|
|
@@ -8409,7 +8414,7 @@ const useClickOutside = (el, options) => {
|
|
|
8409
8414
|
const els = Array.isArray(el) ? el : [el];
|
|
8410
8415
|
const active = options.active !== undefined ? options.active : true;
|
|
8411
8416
|
const handler = (ev) => {
|
|
8412
|
-
// eslint-disable-next-line
|
|
8417
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
8413
8418
|
const target = ev.target;
|
|
8414
8419
|
if (els.every(ref => !ref.current || !ref.current.contains(target))) {
|
|
8415
8420
|
options.onClick(ev);
|
package/index.esm.js
CHANGED
|
@@ -13,7 +13,7 @@ import { Slot, Slottable } from '@radix-ui/react-slot';
|
|
|
13
13
|
import { Link, useBlocker } from '@tanstack/react-router';
|
|
14
14
|
import { isEqual, omit } from 'es-toolkit';
|
|
15
15
|
import { twMerge } from 'tailwind-merge';
|
|
16
|
-
import { useFloating, offset, flip, shift, size, autoUpdate, useClick, useDismiss, useHover as useHover$1, useRole, useInteractions, FloatingPortal, useMergeRefs as useMergeRefs$1, FloatingFocusManager, arrow, useTransitionStatus, FloatingArrow } from '@floating-ui/react';
|
|
16
|
+
import { useFloating, offset, flip, shift, size, autoUpdate, useClick, useDismiss, useHover as useHover$1, safePolygon, useRole, useInteractions, FloatingPortal, useMergeRefs as useMergeRefs$1, FloatingFocusManager, arrow, useTransitionStatus, FloatingArrow } from '@floating-ui/react';
|
|
17
17
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
18
18
|
import { HelmetProvider, Helmet } from 'react-helmet-async';
|
|
19
19
|
import { Trigger, Content, List as List$1, Root } from '@radix-ui/react-tabs';
|
|
@@ -2873,7 +2873,7 @@ function createGrid() {
|
|
|
2873
2873
|
layout(config) {
|
|
2874
2874
|
// At runtime, config properties are always valid arrays (error types only exist at compile-time)
|
|
2875
2875
|
// We need to cast and copy readonly arrays to mutable arrays for storage
|
|
2876
|
-
// eslint-disable-next-line
|
|
2876
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion -- Error tuple types only exist at compile-time; runtime values are always valid arrays
|
|
2877
2877
|
const runtimeConfig = config;
|
|
2878
2878
|
layouts.push({
|
|
2879
2879
|
layout: runtimeConfig.layout.map(row => [...row]),
|
|
@@ -2985,7 +2985,7 @@ function GridAreas({ slots, css, containerProps, validationRef, className, child
|
|
|
2985
2985
|
*
|
|
2986
2986
|
* @see https://tailwindcss.com/docs/responsive-design#container-queries
|
|
2987
2987
|
*/
|
|
2988
|
-
// eslint-disable-next-line
|
|
2988
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
2989
2989
|
const CONTAINER_BREAKPOINTS = Object.fromEntries(Object.entries(themeContainerSize).map(([key, value]) => [`@${key}`, value]));
|
|
2990
2990
|
|
|
2991
2991
|
/**
|
|
@@ -3058,7 +3058,7 @@ function isContainerBreakpoint(value) {
|
|
|
3058
3058
|
* Each slot contains a data-slot attribute and gridArea style.
|
|
3059
3059
|
*/
|
|
3060
3060
|
function createSlots(areas) {
|
|
3061
|
-
// eslint-disable-next-line
|
|
3061
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion -- Object.fromEntries loses key type information
|
|
3062
3062
|
return Object.fromEntries(areas.map(area => [area, { "data-slot": area, style: { gridArea: area } }]));
|
|
3063
3063
|
}
|
|
3064
3064
|
/**
|
|
@@ -4224,8 +4224,13 @@ const usePopover = ({ initialOpen = false, placement = "bottom", isModal, isOpen
|
|
|
4224
4224
|
keyboardHandlers: resolvedActivation.keyboardHandlers,
|
|
4225
4225
|
});
|
|
4226
4226
|
const dismissInteraction = useDismiss(popoverContext, resolvedDismissal);
|
|
4227
|
+
const hoverOptions = typeof resolvedActivation.hover === "object" ? resolvedActivation.hover : undefined;
|
|
4228
|
+
const hoverEnabled = hoverOptions ? (hoverOptions.active ?? true) : resolvedActivation.hover === true;
|
|
4229
|
+
const hoverInteractable = hoverOptions?.interactable ?? true;
|
|
4227
4230
|
const hoverInteraction = useHover$1(popoverContext, {
|
|
4228
|
-
enabled:
|
|
4231
|
+
enabled: hoverEnabled,
|
|
4232
|
+
delay: hoverOptions?.delayed === true ? { open: 400 } : undefined,
|
|
4233
|
+
handleClose: hoverEnabled === true && hoverInteractable === true ? safePolygon() : undefined,
|
|
4229
4234
|
});
|
|
4230
4235
|
const roleInteraction = useRole(popoverContext);
|
|
4231
4236
|
const combinedInteractions = useInteractions([
|
|
@@ -4505,7 +4510,7 @@ const cvaTooltipIcon = cvaMerge(["text-neutral-300", "transition", "hover:cursor
|
|
|
4505
4510
|
},
|
|
4506
4511
|
},
|
|
4507
4512
|
});
|
|
4508
|
-
const cvaTooltipPopover = cvaMerge(["
|
|
4513
|
+
const cvaTooltipPopover = cvaMerge(["origin-center"]);
|
|
4509
4514
|
const cvaTooltipPopoverTail = cvaMerge("", {
|
|
4510
4515
|
variants: {
|
|
4511
4516
|
placement: {
|
|
@@ -4594,7 +4599,7 @@ const FloatingArrowContainer = ({ arrowRef, mode = "dark", }) => {
|
|
|
4594
4599
|
* @param {TooltipProps} props - The props for the Tooltip component
|
|
4595
4600
|
* @returns {ReactElement} Tooltip component
|
|
4596
4601
|
*/
|
|
4597
|
-
const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label, placement = "auto", mode = "dark", iconProps, id, style, }) => {
|
|
4602
|
+
const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label, placement = "auto", mode = "dark", iconProps, id, style, delayed = false, interactable = true, }) => {
|
|
4598
4603
|
const [isOpen, setIsOpen] = useState(false);
|
|
4599
4604
|
const arrowRef = useRef(null);
|
|
4600
4605
|
const { refs, floatingStyles, context } = useFloating({
|
|
@@ -4612,12 +4617,12 @@ const Tooltip = ({ children, "data-testid": dataTestId, disabled = false, label,
|
|
|
4612
4617
|
whileElementsMounted: autoUpdate,
|
|
4613
4618
|
});
|
|
4614
4619
|
const { isMounted } = useTransitionStatus(context);
|
|
4615
|
-
// Please don't
|
|
4616
|
-
// I tried and it caused infinite re-renders some places
|
|
4620
|
+
// Please don't move this into the component body directly without testing it first
|
|
4621
|
+
// I tried and it caused infinite re-renders some places
|
|
4617
4622
|
const wrappedChildren = useMemo(() => {
|
|
4618
4623
|
return jsx(Slot, { children: children });
|
|
4619
4624
|
}, [children]);
|
|
4620
|
-
return (jsxs(Popover, { activation: { hover:
|
|
4625
|
+
return (jsxs(Popover, { activation: { hover: { delayed, interactable } }, className: cvaTooltipPopover(), "data-testid": dataTestId, id: id, onOpenStateChange: setIsOpen, placement: placement === "auto" ? "bottom" : placement, children: [jsx(PopoverTrigger, { "data-testid": dataTestId ? `${dataTestId}-trigger` : null, ref: refs.setReference, style: style, children: children === undefined ? (jsx(Icon, { className: cvaTooltipIcon({ color: mode }), "data-testid": dataTestId ? `${dataTestId}-icon` : undefined, name: "QuestionMarkCircle", size: "small", ...iconProps })) : (wrappedChildren) }), isMounted ? (jsx("div", { ref: refs.setFloating, style: floatingStyles, children: jsx(PopoverContent, { children: jsxs("div", { "aria-label": typeof label === "string" ? label : undefined, className: cvaTooltipPopoverContent({ color: mode }), "data-testid": dataTestId ? `${dataTestId}-content` : undefined, children: [jsx(Text, { "data-testid": dataTestId ? `${dataTestId}-text` : undefined, inverted: mode === "dark", size: "small", type: typeof label === "string" ? "p" : "span", children: label }), placement !== "auto" && jsx(FloatingArrowContainer, { arrowRef: arrowRef, mode: mode })] }) }) })) : null] }));
|
|
4621
4626
|
};
|
|
4622
4627
|
|
|
4623
4628
|
const cvaIndicator = cvaMerge(["inline-flex", "items-center"]);
|
|
@@ -6179,7 +6184,7 @@ const MenuItem = ({ className, "data-testid": dataTestId, label, children, selec
|
|
|
6179
6184
|
if (stopPropagation) {
|
|
6180
6185
|
e.stopPropagation();
|
|
6181
6186
|
}
|
|
6182
|
-
// eslint-disable-next-line
|
|
6187
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
6183
6188
|
onClick(e);
|
|
6184
6189
|
}
|
|
6185
6190
|
};
|
|
@@ -8022,7 +8027,7 @@ const ToggleGroup = ({ list, selected, setSelected, onChange, disabled = false,
|
|
|
8022
8027
|
setSlidingWidth(width);
|
|
8023
8028
|
}, [validIndex]);
|
|
8024
8029
|
return (jsx("div", { className: twMerge(cvaToggleGroup({ className }), cvaToggleGroupWithSlidingBackground({ isMounted })), "data-testid": dataTestId, ref: ref, style:
|
|
8025
|
-
// eslint-disable-next-line
|
|
8030
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
8026
8031
|
{
|
|
8027
8032
|
"--sliding-left": `${slidingLeft}px`,
|
|
8028
8033
|
"--sliding-width": `${slidingWidth}px`,
|
|
@@ -8407,7 +8412,7 @@ const useClickOutside = (el, options) => {
|
|
|
8407
8412
|
const els = Array.isArray(el) ? el : [el];
|
|
8408
8413
|
const active = options.active !== undefined ? options.active : true;
|
|
8409
8414
|
const handler = (ev) => {
|
|
8410
|
-
// eslint-disable-next-line
|
|
8415
|
+
// eslint-disable-next-line @trackunit/no-typescript-assertion
|
|
8411
8416
|
const target = ev.target;
|
|
8412
8417
|
if (els.every(ref => !ref.current || !ref.current.contains(target))) {
|
|
8413
8418
|
options.onClick(ev);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/react-components",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.34",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"@floating-ui/react": "^0.26.25",
|
|
15
15
|
"string-ts": "^2.0.0",
|
|
16
16
|
"tailwind-merge": "^2.0.0",
|
|
17
|
-
"@trackunit/ui-design-tokens": "1.11.49
|
|
18
|
-
"@trackunit/css-class-variance-utilities": "1.11.49
|
|
19
|
-
"@trackunit/shared-utils": "1.13.49
|
|
20
|
-
"@trackunit/ui-icons": "1.11.48
|
|
17
|
+
"@trackunit/ui-design-tokens": "1.11.49",
|
|
18
|
+
"@trackunit/css-class-variance-utilities": "1.11.49",
|
|
19
|
+
"@trackunit/shared-utils": "1.13.49",
|
|
20
|
+
"@trackunit/ui-icons": "1.11.48",
|
|
21
21
|
"@tanstack/react-router": "1.114.29",
|
|
22
22
|
"es-toolkit": "^1.39.10",
|
|
23
23
|
"@tanstack/react-virtual": "3.13.12",
|
|
@@ -1,9 +1,30 @@
|
|
|
1
1
|
import { ExtendedRefs, ReferenceType, UseDismissProps, UseFloatingReturn } from "@floating-ui/react";
|
|
2
2
|
import { Dispatch, HTMLProps, SetStateAction } from "react";
|
|
3
3
|
import { CommonProps } from "../../common/CommonProps";
|
|
4
|
+
export type PopoverHoverOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Whether hover activation is enabled.
|
|
7
|
+
*
|
|
8
|
+
* @default true
|
|
9
|
+
*/
|
|
10
|
+
active?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Whether to add a 400ms delay before the floating element opens on hover.
|
|
13
|
+
*
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
delayed?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the cursor can reach and interact with the floating element.
|
|
19
|
+
* Enables safePolygon so the element stays open while the cursor moves toward it.
|
|
20
|
+
*
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
interactable?: boolean;
|
|
24
|
+
};
|
|
4
25
|
export type PopoverActivation = {
|
|
5
26
|
click?: boolean;
|
|
6
|
-
hover?: boolean;
|
|
27
|
+
hover?: boolean | PopoverHoverOptions;
|
|
7
28
|
keyboardHandlers?: boolean;
|
|
8
29
|
};
|
|
9
30
|
export type PopoverDismissal = Pick<UseDismissProps, "ancestorScroll" | "enabled" | "outsidePress">;
|
|
@@ -3,6 +3,7 @@ import { ReactElement, ReactNode } from "react";
|
|
|
3
3
|
import { CommonProps } from "../../common/CommonProps";
|
|
4
4
|
import { Styleable } from "../../common/Styleable";
|
|
5
5
|
import { IconProps } from "../Icon/Icon";
|
|
6
|
+
import { PopoverHoverOptions } from "../Popover/PopoverTypes";
|
|
6
7
|
export type TooltipPlacement = Placement | "auto";
|
|
7
8
|
export interface TooltipProps extends Omit<CommonProps, "className">, Styleable {
|
|
8
9
|
/**
|
|
@@ -33,6 +34,19 @@ export interface TooltipProps extends Omit<CommonProps, "className">, Styleable
|
|
|
33
34
|
* Ihe id of the html element
|
|
34
35
|
*/
|
|
35
36
|
id?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Whether to add a 400ms delay before the tooltip opens on hover.
|
|
39
|
+
*
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
delayed?: Pick<PopoverHoverOptions, "delayed">["delayed"];
|
|
43
|
+
/**
|
|
44
|
+
* Whether the cursor can reach and interact with the tooltip content.
|
|
45
|
+
* Enables safePolygon so the tooltip stays open while the cursor moves toward it.
|
|
46
|
+
*
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
interactable?: Pick<PopoverHoverOptions, "interactable">["interactable"];
|
|
36
50
|
}
|
|
37
51
|
/**
|
|
38
52
|
* Tooltips display additional information upon hover. The information included should be contextual, helpful, and nonessential while providing that extra ability to communicate and give clarity to a user.
|
|
@@ -75,4 +89,4 @@ export interface TooltipProps extends Omit<CommonProps, "className">, Styleable
|
|
|
75
89
|
* @param {TooltipProps} props - The props for the Tooltip component
|
|
76
90
|
* @returns {ReactElement} Tooltip component
|
|
77
91
|
*/
|
|
78
|
-
export declare const Tooltip: ({ children, "data-testid": dataTestId, disabled, label, placement, mode, iconProps, id, style, }: TooltipProps) => ReactElement;
|
|
92
|
+
export declare const Tooltip: ({ children, "data-testid": dataTestId, disabled, label, placement, mode, iconProps, id, style, delayed, interactable, }: TooltipProps) => ReactElement;
|