@tamagui/tooltip 1.0.1-beta.99 → 1.0.1-rc.0
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/dist/cjs/Tooltip.js +110 -163
- package/dist/cjs/Tooltip.js.map +3 -3
- package/dist/cjs/Tooltip.native.js +3 -5
- package/dist/cjs/Tooltip.native.js.map +2 -2
- package/dist/cjs/TooltipSimple.js +92 -0
- package/dist/cjs/TooltipSimple.js.map +7 -0
- package/dist/cjs/TooltipSimple.native.js +32 -0
- package/dist/cjs/TooltipSimple.native.js.map +7 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/esm/Tooltip.js +105 -163
- package/dist/esm/Tooltip.js.map +3 -3
- package/dist/esm/Tooltip.native.js +1 -3
- package/dist/esm/Tooltip.native.js.map +2 -2
- package/dist/esm/TooltipSimple.js +68 -0
- package/dist/esm/TooltipSimple.js.map +7 -0
- package/dist/esm/TooltipSimple.native.js +8 -0
- package/dist/esm/TooltipSimple.native.js.map +7 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/jsx/Tooltip.js +67 -89
- package/dist/jsx/Tooltip.js.map +3 -3
- package/dist/jsx/Tooltip.native.js +1 -3
- package/dist/jsx/Tooltip.native.js.map +2 -2
- package/dist/jsx/TooltipSimple.js +39 -0
- package/dist/jsx/TooltipSimple.js.map +7 -0
- package/dist/jsx/TooltipSimple.native.js +8 -0
- package/dist/jsx/TooltipSimple.native.js.map +7 -0
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/index.js.map +2 -2
- package/package.json +19 -17
- package/src/Tooltip.native.tsx +0 -2
- package/src/Tooltip.tsx +33 -76
- package/src/TooltipSimple.native.tsx +5 -0
- package/src/TooltipSimple.tsx +68 -0
- package/src/index.tsx +1 -0
- package/types/Tooltip.d.ts +17 -22
- package/types/Tooltip.native.d.ts +0 -1
- package/types/TooltipSimple.d.ts +10 -0
- package/types/TooltipSimple.native.d.ts +2 -0
- package/types/index.d.ts +1 -0
- package/types/Tooltip.d.ts.map +0 -1
- package/types/Tooltip.native.d.ts.map +0 -1
- package/types/index.d.ts.map +0 -1
package/dist/jsx/Tooltip.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
useInteractions,
|
|
11
11
|
useRole
|
|
12
12
|
} from "@floating-ui/react-dom-interactions";
|
|
13
|
-
import { useId, withStaticProperties } from "@tamagui/core";
|
|
13
|
+
import { useEvent, useId, withStaticProperties } from "@tamagui/core";
|
|
14
14
|
import {
|
|
15
15
|
PopoverAnchor,
|
|
16
16
|
PopoverArrow,
|
|
@@ -24,103 +24,81 @@ import {
|
|
|
24
24
|
Popper,
|
|
25
25
|
usePopperContext
|
|
26
26
|
} from "@tamagui/popper";
|
|
27
|
-
import { Paragraph } from "@tamagui/text";
|
|
28
27
|
import * as React from "react";
|
|
29
|
-
const TooltipContent = React.forwardRef(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
28
|
+
const TooltipContent = React.forwardRef(
|
|
29
|
+
({ __scopePopover, ...props }, ref) => {
|
|
30
|
+
const popperScope = usePopoverScope(__scopePopover);
|
|
31
|
+
const popper = usePopperContext("PopperContent", popperScope["__scopePopper"]);
|
|
32
|
+
return <PopoverContent componentName="TooltipContent" disableRemoveScroll trapFocus={false} padding={props.size || popper.size || "$2"} pointerEvents="none" ref={ref} {...props} />;
|
|
33
|
+
}
|
|
34
|
+
);
|
|
34
35
|
const TooltipArrow = React.forwardRef((props, ref) => {
|
|
35
36
|
return <PopoverArrow componentName="TooltipArrow" ref={ref} {...props} />;
|
|
36
37
|
});
|
|
37
|
-
const TooltipGroup =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
setOpen(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
...props2,
|
|
64
|
-
open,
|
|
65
|
-
onOpenChange
|
|
38
|
+
const TooltipGroup = ({ children, delay }) => {
|
|
39
|
+
return <FloatingDelayGroup delay={React.useMemo(() => delay, [JSON.stringify(delay)])}>{children}</FloatingDelayGroup>;
|
|
40
|
+
};
|
|
41
|
+
const Tooltip = withStaticProperties(
|
|
42
|
+
(props) => {
|
|
43
|
+
const {
|
|
44
|
+
__scopePopover,
|
|
45
|
+
children,
|
|
46
|
+
restMs = 500,
|
|
47
|
+
delay: delayProp,
|
|
48
|
+
onOpenChange: onOpenChangeProp,
|
|
49
|
+
...restProps
|
|
50
|
+
} = props;
|
|
51
|
+
const popperScope = usePopoverScope(__scopePopover);
|
|
52
|
+
const triggerRef = React.useRef(null);
|
|
53
|
+
const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);
|
|
54
|
+
const { delay: delayGroup, setCurrentId } = useDelayGroupContext();
|
|
55
|
+
const delay = delayProp ?? delayGroup;
|
|
56
|
+
const [open, setOpen] = React.useState(false);
|
|
57
|
+
const id = props.groupId;
|
|
58
|
+
const onOpenChange = useEvent((open2) => {
|
|
59
|
+
setOpen(open2);
|
|
60
|
+
if (open2) {
|
|
61
|
+
setCurrentId(id);
|
|
62
|
+
}
|
|
63
|
+
onOpenChangeProp?.(open2);
|
|
66
64
|
});
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
65
|
+
const useFloatingFn = (props2) => {
|
|
66
|
+
const floating = useFloating({
|
|
67
|
+
...props2,
|
|
68
|
+
open,
|
|
69
|
+
onOpenChange
|
|
70
|
+
});
|
|
71
|
+
const { getReferenceProps, getFloatingProps } = useInteractions([
|
|
72
|
+
useHover(floating.context, { delay, restMs }),
|
|
73
|
+
useFocus(floating.context),
|
|
74
|
+
useRole(floating.context, { role: "tooltip" }),
|
|
75
|
+
useDismiss(floating.context),
|
|
76
|
+
useDelayGroup(floating.context, { id })
|
|
77
|
+
]);
|
|
78
|
+
return {
|
|
79
|
+
...floating,
|
|
80
|
+
getReferenceProps,
|
|
81
|
+
getFloatingProps
|
|
82
|
+
};
|
|
78
83
|
};
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
Tooltip.displayName = "Tooltip";
|
|
91
|
-
const TooltipSimple = ({
|
|
92
|
-
label,
|
|
93
|
-
children,
|
|
94
|
-
contentProps,
|
|
95
|
-
...tooltipProps
|
|
96
|
-
}) => {
|
|
97
|
-
let context;
|
|
98
|
-
try {
|
|
99
|
-
context = useDelayGroupContext();
|
|
100
|
-
} catch {
|
|
101
|
-
}
|
|
102
|
-
const contents = <Tooltip {...tooltipProps}>
|
|
103
|
-
<Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
|
|
104
|
-
<Tooltip.Content enterStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }} exitStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }} x={0} scale={1} y={0} elevation="$1" opacity={1} animation={[
|
|
105
|
-
"bouncy",
|
|
106
|
-
{
|
|
107
|
-
opacity: {
|
|
108
|
-
overshootClamping: true
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
]} {...contentProps}>
|
|
112
|
-
<Tooltip.Arrow />
|
|
113
|
-
<Paragraph size="$2" lineHeight="$1">{label}</Paragraph>
|
|
114
|
-
</Tooltip.Content>
|
|
115
|
-
</Tooltip>;
|
|
116
|
-
if (!context) {
|
|
117
|
-
return <TooltipGroup delay={{ open: 3e3, close: 100 }}>{contents}</TooltipGroup>;
|
|
84
|
+
const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open]);
|
|
85
|
+
const onCustomAnchorAdd = React.useCallback(() => setHasCustomAnchor(true), []);
|
|
86
|
+
const onCustomAnchorRemove = React.useCallback(() => setHasCustomAnchor(false), []);
|
|
87
|
+
const contentId = useId();
|
|
88
|
+
return <FloatingOverrideContext.Provider value={useFloatingContext}><Popper size="$2" {...popperScope} {...restProps}><__PopoverProviderInternal scope={__scopePopover} contentId={contentId} triggerRef={triggerRef} sheetBreakpoint={false} scopeKey="" open={open} onOpenChange={setOpen} onOpenToggle={voidFn} hasCustomAnchor={hasCustomAnchor} onCustomAnchorAdd={onCustomAnchorAdd} onCustomAnchorRemove={onCustomAnchorRemove}>{children}</__PopoverProviderInternal></Popper></FloatingOverrideContext.Provider>;
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
Anchor: PopoverAnchor,
|
|
92
|
+
Arrow: TooltipArrow,
|
|
93
|
+
Content: TooltipContent,
|
|
94
|
+
Trigger: PopoverTrigger
|
|
118
95
|
}
|
|
119
|
-
|
|
96
|
+
);
|
|
97
|
+
Tooltip.displayName = "Tooltip";
|
|
98
|
+
const voidFn = () => {
|
|
120
99
|
};
|
|
121
100
|
export {
|
|
122
101
|
Tooltip,
|
|
123
|
-
TooltipGroup
|
|
124
|
-
TooltipSimple
|
|
102
|
+
TooltipGroup
|
|
125
103
|
};
|
|
126
104
|
//# sourceMappingURL=Tooltip.js.map
|
package/dist/jsx/Tooltip.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Tooltip.tsx"],
|
|
4
|
-
"sourcesContent": ["import '@tamagui/polyfill-dev'\n\nimport {\n FloatingDelayGroup,\n useDelayGroup,\n useDelayGroupContext,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react-dom-interactions'\nimport { useId, withStaticProperties } from '@tamagui/core'\nimport { ScopedProps } from '@tamagui/create-context'\nimport {\n PopoverAnchor,\n PopoverArrow,\n PopoverArrowProps,\n PopoverContent,\n PopoverContentProps,\n PopoverTrigger,\n __PopoverProviderInternal,\n usePopoverScope,\n} from '@tamagui/popover'\nimport {\n FloatingOverrideContext,\n Popper,\n PopperProps,\n UseFloatingFn,\n usePopperContext,\n} from '@tamagui/popper'\nimport
|
|
5
|
-
"mappings": "AAAA;
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import '@tamagui/polyfill-dev'\n\nimport {\n FloatingDelayGroup,\n useDelayGroup,\n useDelayGroupContext,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react-dom-interactions'\nimport { useEvent, useId, withStaticProperties } from '@tamagui/core'\nimport { ScopedProps } from '@tamagui/create-context'\nimport {\n PopoverAnchor,\n PopoverArrow,\n PopoverArrowProps,\n PopoverContent,\n PopoverContentProps,\n PopoverTrigger,\n __PopoverProviderInternal,\n usePopoverScope,\n} from '@tamagui/popover'\nimport {\n FloatingOverrideContext,\n Popper,\n PopperProps,\n UseFloatingFn,\n usePopperContext,\n} from '@tamagui/popper'\nimport * as React from 'react'\n\nconst TooltipContent = React.forwardRef(\n ({ __scopePopover, ...props }: ScopedProps<PopoverContentProps, 'Popover'>, ref: any) => {\n const popperScope = usePopoverScope(__scopePopover)\n const popper = usePopperContext('PopperContent', popperScope['__scopePopper'])\n return (\n <PopoverContent\n componentName=\"TooltipContent\"\n disableRemoveScroll\n trapFocus={false}\n padding={props.size || popper.size || '$2'}\n pointerEvents=\"none\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nconst TooltipArrow = React.forwardRef((props: PopoverArrowProps, ref: any) => {\n return <PopoverArrow componentName=\"TooltipArrow\" ref={ref} {...props} />\n})\n\nexport type TooltipProps = PopperProps & {\n children?: React.ReactNode\n onOpenChange?: (open: boolean) => void\n groupId?: string\n restMs?: number\n delay?:\n | number\n | {\n open?: number\n close?: number\n }\n}\n\ntype Delay =\n | number\n | Partial<{\n open: number\n close: number\n }>\n\nexport const TooltipGroup = ({ children, delay }: { children?: any; delay: Delay }) => {\n return (\n <FloatingDelayGroup delay={React.useMemo(() => delay, [JSON.stringify(delay)])}>\n {children}\n </FloatingDelayGroup>\n )\n}\n\nexport const Tooltip = withStaticProperties(\n ((props: ScopedProps<TooltipProps, 'Popover'>) => {\n const {\n __scopePopover,\n children,\n restMs = 500,\n delay: delayProp,\n onOpenChange: onOpenChangeProp,\n ...restProps\n } = props\n const popperScope = usePopoverScope(__scopePopover)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false)\n const { delay: delayGroup, setCurrentId } = useDelayGroupContext()\n const delay = delayProp ?? delayGroup\n const [open, setOpen] = React.useState(false)\n const id = props.groupId\n\n const onOpenChange = useEvent((open) => {\n setOpen(open)\n if (open) {\n setCurrentId(id)\n }\n onOpenChangeProp?.(open)\n })\n\n const useFloatingFn: UseFloatingFn = (props) => {\n // @ts-ignore\n const floating = useFloating({\n ...props,\n open,\n onOpenChange,\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(floating.context, { delay, restMs }),\n useFocus(floating.context),\n useRole(floating.context, { role: 'tooltip' }),\n useDismiss(floating.context),\n useDelayGroup(floating.context, { id }),\n ])\n return {\n ...floating,\n getReferenceProps,\n getFloatingProps,\n } as any\n }\n\n const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open])\n const onCustomAnchorAdd = React.useCallback(() => setHasCustomAnchor(true), [])\n const onCustomAnchorRemove = React.useCallback(() => setHasCustomAnchor(false), [])\n const contentId = useId()\n\n return (\n <FloatingOverrideContext.Provider value={useFloatingContext}>\n {/* default tooltip to a smaller size */}\n <Popper size=\"$2\" {...popperScope} {...restProps}>\n <__PopoverProviderInternal\n scope={__scopePopover}\n contentId={contentId}\n triggerRef={triggerRef}\n sheetBreakpoint={false}\n scopeKey=\"\"\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={voidFn}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={onCustomAnchorAdd}\n onCustomAnchorRemove={onCustomAnchorRemove}\n >\n {children}\n </__PopoverProviderInternal>\n </Popper>\n </FloatingOverrideContext.Provider>\n )\n }) as React.FC<TooltipProps>,\n {\n Anchor: PopoverAnchor,\n Arrow: TooltipArrow,\n Content: TooltipContent,\n Trigger: PopoverTrigger,\n }\n)\n\nTooltip.displayName = 'Tooltip'\n\nconst voidFn = () => {}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,UAAU,OAAO,4BAA4B;AAEtD;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,OACK;AACP,YAAY,WAAW;AAEvB,MAAM,iBAAiB,MAAM;AAAA,EAC3B,CAAC,EAAE,mBAAmB,MAAM,GAAgD,QAAa;AACvF,UAAM,cAAc,gBAAgB,cAAc;AAClD,UAAM,SAAS,iBAAiB,iBAAiB,YAAY,gBAAgB;AAC7E,WACE,CAAC,eACC,cAAc,iBACd,oBACA,WAAW,OACX,SAAS,MAAM,QAAQ,OAAO,QAAQ,MACtC,cAAc,OACd,KAAK,SACD,OACN;AAAA,EAEJ;AACF;AAEA,MAAM,eAAe,MAAM,WAAW,CAAC,OAA0B,QAAa;AAC5E,SAAO,CAAC,aAAa,cAAc,eAAe,KAAK,SAAS,OAAO;AACzE,CAAC;AAsBM,MAAM,eAAe,CAAC,EAAE,UAAU,MAAM,MAAwC;AACrF,SACE,CAAC,mBAAmB,OAAO,MAAM,QAAQ,MAAM,OAAO,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC,IAC1E,SACH,EAFC;AAIL;AAEO,MAAM,UAAU;AAAA,EACpB,CAAC,UAAgD;AAChD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA,MACP,cAAc;AAAA,SACX;AAAA,IACL,IAAI;AACJ,UAAM,cAAc,gBAAgB,cAAc;AAClD,UAAM,aAAa,MAAM,OAA0B,IAAI;AACvD,UAAM,CAAC,iBAAiB,kBAAkB,IAAI,MAAM,SAAS,KAAK;AAClE,UAAM,EAAE,OAAO,YAAY,aAAa,IAAI,qBAAqB;AACjE,UAAM,QAAQ,aAAa;AAC3B,UAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,UAAM,KAAK,MAAM;AAEjB,UAAM,eAAe,SAAS,CAACA,UAAS;AACtC,cAAQA,KAAI;AACZ,UAAIA,OAAM;AACR,qBAAa,EAAE;AAAA,MACjB;AACA,yBAAmBA,KAAI;AAAA,IACzB,CAAC;AAED,UAAM,gBAA+B,CAACC,WAAU;AAE9C,YAAM,WAAW,YAAY;AAAA,QAC3B,GAAGA;AAAA,QACH;AAAA,QACA;AAAA,MACF,CAAC;AACD,YAAM,EAAE,mBAAmB,iBAAiB,IAAI,gBAAgB;AAAA,QAC9D,SAAS,SAAS,SAAS,EAAE,OAAO,OAAO,CAAC;AAAA,QAC5C,SAAS,SAAS,OAAO;AAAA,QACzB,QAAQ,SAAS,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA,QAC7C,WAAW,SAAS,OAAO;AAAA,QAC3B,cAAc,SAAS,SAAS,EAAE,GAAG,CAAC;AAAA,MACxC,CAAC;AACD,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,qBAAqB,MAAM,YAAY,eAAe,CAAC,IAAI,OAAO,IAAI,CAAC;AAC7E,UAAM,oBAAoB,MAAM,YAAY,MAAM,mBAAmB,IAAI,GAAG,CAAC,CAAC;AAC9E,UAAM,uBAAuB,MAAM,YAAY,MAAM,mBAAmB,KAAK,GAAG,CAAC,CAAC;AAClF,UAAM,YAAY,MAAM;AAExB,WACE,CAAC,wBAAwB,SAAS,OAAO,oBAEvC,CAAC,OAAO,KAAK,SAAS,iBAAiB,WACrC,CAAC,0BACC,OAAO,gBACP,WAAW,WACX,YAAY,YACZ,iBAAiB,OACjB,SAAS,GACT,MAAM,MACN,cAAc,SACd,cAAc,QACd,iBAAiB,iBACjB,mBAAmB,mBACnB,sBAAsB,uBAErB,SACH,EAdC,0BAeH,EAhBC,OAiBH,EAnBC,wBAAwB;AAAA,EAqB7B;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEA,QAAQ,cAAc;AAEtB,MAAM,SAAS,MAAM;AAAC;",
|
|
6
|
+
"names": ["open", "props"]
|
|
7
7
|
}
|
|
@@ -12,9 +12,7 @@ const Tooltip = withStaticProperties(RenderChildren, {
|
|
|
12
12
|
Content: RenderNull,
|
|
13
13
|
Trigger: RenderChildren
|
|
14
14
|
});
|
|
15
|
-
const TooltipSimple = RenderChildren;
|
|
16
15
|
export {
|
|
17
|
-
Tooltip
|
|
18
|
-
TooltipSimple
|
|
16
|
+
Tooltip
|
|
19
17
|
};
|
|
20
18
|
//# sourceMappingURL=Tooltip.native.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Tooltip.native.tsx"],
|
|
4
|
-
"sourcesContent": ["import { withStaticProperties } from '@tamagui/core'\n\n// no output on native for now\n// could have an option to long-press or similar to show in a context menu/drawer\n\nconst RenderChildren = (props: any) => {\n return props.children\n}\n\nconst RenderNull = (props: any) => {\n return null\n}\n\nexport const Tooltip = withStaticProperties(RenderChildren, {\n Anchor: RenderChildren,\n Arrow: RenderNull,\n Close: RenderNull,\n Content: RenderNull,\n Trigger: RenderChildren,\n})\n
|
|
5
|
-
"mappings": "AAAA;
|
|
4
|
+
"sourcesContent": ["import { withStaticProperties } from '@tamagui/core'\n\n// no output on native for now\n// could have an option to long-press or similar to show in a context menu/drawer\n\nconst RenderChildren = (props: any) => {\n return props.children\n}\n\nconst RenderNull = (props: any) => {\n return null\n}\n\nexport const Tooltip = withStaticProperties(RenderChildren, {\n Anchor: RenderChildren,\n Arrow: RenderNull,\n Close: RenderNull,\n Content: RenderNull,\n Trigger: RenderChildren,\n})\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,4BAA4B;AAKrC,MAAM,iBAAiB,CAAC,UAAe;AACrC,SAAO,MAAM;AACf;AAEA,MAAM,aAAa,CAAC,UAAe;AACjC,SAAO;AACT;AAEO,MAAM,UAAU,qBAAqB,gBAAgB;AAAA,EAC1D,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useDelayGroupContext } from "@floating-ui/react-dom-interactions";
|
|
2
|
+
import { Theme } from "@tamagui/core";
|
|
3
|
+
import { Paragraph } from "@tamagui/text";
|
|
4
|
+
import { Tooltip, TooltipGroup } from "./Tooltip";
|
|
5
|
+
const TooltipSimple = ({
|
|
6
|
+
label,
|
|
7
|
+
children,
|
|
8
|
+
contentProps,
|
|
9
|
+
...tooltipProps
|
|
10
|
+
}) => {
|
|
11
|
+
let context;
|
|
12
|
+
try {
|
|
13
|
+
context = useDelayGroupContext();
|
|
14
|
+
} catch {
|
|
15
|
+
}
|
|
16
|
+
const contents = <Tooltip {...tooltipProps}>
|
|
17
|
+
<Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
|
|
18
|
+
<Theme inverse><Tooltip.Content zIndex={1e5} enterStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }} exitStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }} x={0} scale={1} y={0} elevation="$0.5" opacity={1} animation={[
|
|
19
|
+
"quick",
|
|
20
|
+
{
|
|
21
|
+
opacity: {
|
|
22
|
+
overshootClamping: true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]} {...contentProps}>
|
|
26
|
+
<Tooltip.Arrow />
|
|
27
|
+
<Paragraph size="$2" lineHeight="$0">{label}</Paragraph>
|
|
28
|
+
</Tooltip.Content></Theme>
|
|
29
|
+
</Tooltip>;
|
|
30
|
+
if (!context) {
|
|
31
|
+
return <TooltipGroup delay={defaultTooltipDelay}>{contents}</TooltipGroup>;
|
|
32
|
+
}
|
|
33
|
+
return contents;
|
|
34
|
+
};
|
|
35
|
+
const defaultTooltipDelay = { open: 3e3, close: 100 };
|
|
36
|
+
export {
|
|
37
|
+
TooltipSimple
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=TooltipSimple.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TooltipSimple.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useDelayGroupContext } from '@floating-ui/react-dom-interactions'\nimport { Theme } from '@tamagui/core'\nimport { SizableStackProps } from '@tamagui/stacks'\nimport { Paragraph } from '@tamagui/text'\nimport * as React from 'react'\n\nimport { Tooltip, TooltipGroup, TooltipProps } from './Tooltip'\n\nexport type TooltipSimpleProps = TooltipProps & {\n label?: React.ReactNode\n children?: React.ReactNode\n contentProps?: SizableStackProps\n}\n\nexport const TooltipSimple: React.FC<TooltipSimpleProps> = ({\n label,\n children,\n contentProps,\n ...tooltipProps\n}) => {\n let context\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n context = useDelayGroupContext()\n } catch {\n // ok\n }\n\n const contents = (\n <Tooltip {...tooltipProps}>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Theme inverse>\n <Tooltip.Content\n zIndex={100_000}\n enterStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }}\n exitStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }}\n x={0}\n scale={1}\n y={0}\n elevation=\"$0.5\"\n opacity={1}\n animation={[\n 'quick',\n {\n opacity: {\n overshootClamping: true,\n },\n },\n ]}\n {...contentProps}\n >\n <Tooltip.Arrow />\n <Paragraph size=\"$2\" lineHeight=\"$0\">\n {label}\n </Paragraph>\n </Tooltip.Content>\n </Theme>\n </Tooltip>\n )\n\n if (!context) {\n return <TooltipGroup delay={defaultTooltipDelay}>{contents}</TooltipGroup>\n }\n\n return contents\n}\n\nconst defaultTooltipDelay = { open: 3000, close: 100 }\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAS,aAAa;AAEtB,SAAS,iBAAiB;AAG1B,SAAS,SAAS,oBAAkC;AAQ7C,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACL,MAAM;AACJ,MAAI;AACJ,MAAI;AAEF,cAAU,qBAAqB;AAAA,EACjC,QAAE;AAAA,EAEF;AAEA,QAAM,WACJ,CAAC,YAAY;AAAA,IACX,CAAC,QAAQ,QAAQ,SAAS,SAAS,EAAlC,QAAQ;AAAA,IACT,CAAC,MAAM,QACL,CAAC,QAAQ,QACP,QAAQ,KACR,YAAY,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,GAAG,OAAO,KAAK,GACnD,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,GAAG,OAAO,KAAK,GAClD,GAAG,GACH,OAAO,GACP,GAAG,GACH,UAAU,OACV,SAAS,GACT,WAAW;AAAA,MACT;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,IACF,OACI;AAAA,MAEJ,CAAC,QAAQ,MAAM;AAAA,MACf,CAAC,UAAU,KAAK,KAAK,WAAW,MAC7B,MACH,EAFC;AAAA,IAGH,EAvBC,QAAQ,QAwBX,EAzBC;AAAA,EA0BH,EA5BC;AA+BH,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC,aAAa,OAAO,sBAAsB,SAAS,EAAnD;AAAA,EACV;AAEA,SAAO;AACT;AAEA,MAAM,sBAAsB,EAAE,MAAM,KAAM,OAAO,IAAI;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TooltipSimple.native.tsx"],
|
|
4
|
+
"sourcesContent": ["const RenderChildren = (props: any) => {\n return props.children\n}\n\nexport const TooltipSimple = RenderChildren\n"],
|
|
5
|
+
"mappings": "AAAA,MAAM,iBAAiB,CAAC,UAAe;AACrC,SAAO,MAAM;AACf;AAEO,MAAM,gBAAgB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/jsx/index.js
CHANGED
package/dist/jsx/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx"],
|
|
4
|
-
"sourcesContent": ["export * from './Tooltip'\n"],
|
|
5
|
-
"mappings": "AAAA;",
|
|
4
|
+
"sourcesContent": ["export * from './Tooltip'\nexport * from './TooltipSimple'\n"],
|
|
5
|
+
"mappings": "AAAA,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/tooltip",
|
|
3
|
-
"version": "1.0.1-
|
|
3
|
+
"version": "1.0.1-rc.0",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"*.css"
|
|
6
6
|
],
|
|
@@ -17,32 +17,34 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "tamagui-build",
|
|
19
19
|
"watch": "tamagui-build --watch",
|
|
20
|
+
"lint": "eslint src",
|
|
21
|
+
"lint:fix": "yarn lint --fix",
|
|
20
22
|
"clean": "tamagui-build clean",
|
|
21
23
|
"clean:build": "tamagui-build clean:build"
|
|
22
24
|
},
|
|
23
25
|
"dependencies": {
|
|
24
|
-
"@floating-ui/react-dom-interactions": "^0.
|
|
25
|
-
"@tamagui/compose-refs": "^1.0.1-
|
|
26
|
-
"@tamagui/core": "^1.0.1-
|
|
27
|
-
"@tamagui/create-context": "^1.0.1-
|
|
28
|
-
"@tamagui/polyfill-dev": "^1.0.1-
|
|
29
|
-
"@tamagui/popover": "^1.0.1-
|
|
30
|
-
"@tamagui/popper": "^1.0.1-
|
|
31
|
-
"@tamagui/stacks": "^1.0.1-
|
|
32
|
-
"@tamagui/text": "^1.0.1-
|
|
33
|
-
"@tamagui/use-controllable-state": "^1.0.1-
|
|
26
|
+
"@floating-ui/react-dom-interactions": "^0.10.3",
|
|
27
|
+
"@tamagui/compose-refs": "^1.0.1-rc.0",
|
|
28
|
+
"@tamagui/core": "^1.0.1-rc.0",
|
|
29
|
+
"@tamagui/create-context": "^1.0.1-rc.0",
|
|
30
|
+
"@tamagui/polyfill-dev": "^1.0.1-rc.0",
|
|
31
|
+
"@tamagui/popover": "^1.0.1-rc.0",
|
|
32
|
+
"@tamagui/popper": "^1.0.1-rc.0",
|
|
33
|
+
"@tamagui/stacks": "^1.0.1-rc.0",
|
|
34
|
+
"@tamagui/text": "^1.0.1-rc.0",
|
|
35
|
+
"@tamagui/use-controllable-state": "^1.0.1-rc.0"
|
|
34
36
|
},
|
|
35
37
|
"peerDependencies": {
|
|
36
|
-
"react": "
|
|
37
|
-
"react-dom": "
|
|
38
|
+
"react": ">=18",
|
|
39
|
+
"react-dom": ">=18",
|
|
38
40
|
"react-native": "*"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
|
41
|
-
"@tamagui/build": "^1.0.1-
|
|
43
|
+
"@tamagui/build": "^1.0.1-rc.0",
|
|
42
44
|
"@types/react-dom": "^18.0.3",
|
|
43
|
-
"@types/react-native": "^0.
|
|
44
|
-
"react": "
|
|
45
|
-
"react-dom": "
|
|
45
|
+
"@types/react-native": "^0.69.2",
|
|
46
|
+
"react": ">=18",
|
|
47
|
+
"react-dom": ">=18",
|
|
46
48
|
"react-native": "*"
|
|
47
49
|
},
|
|
48
50
|
"publishConfig": {
|
package/src/Tooltip.native.tsx
CHANGED
package/src/Tooltip.tsx
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
useInteractions,
|
|
12
12
|
useRole,
|
|
13
13
|
} from '@floating-ui/react-dom-interactions'
|
|
14
|
-
import { useId, withStaticProperties } from '@tamagui/core'
|
|
14
|
+
import { useEvent, useId, withStaticProperties } from '@tamagui/core'
|
|
15
15
|
import { ScopedProps } from '@tamagui/create-context'
|
|
16
16
|
import {
|
|
17
17
|
PopoverAnchor,
|
|
@@ -30,8 +30,6 @@ import {
|
|
|
30
30
|
UseFloatingFn,
|
|
31
31
|
usePopperContext,
|
|
32
32
|
} from '@tamagui/popper'
|
|
33
|
-
import { SizableStackProps } from '@tamagui/stacks'
|
|
34
|
-
import { Paragraph } from '@tamagui/text'
|
|
35
33
|
import * as React from 'react'
|
|
36
34
|
|
|
37
35
|
const TooltipContent = React.forwardRef(
|
|
@@ -40,10 +38,10 @@ const TooltipContent = React.forwardRef(
|
|
|
40
38
|
const popper = usePopperContext('PopperContent', popperScope['__scopePopper'])
|
|
41
39
|
return (
|
|
42
40
|
<PopoverContent
|
|
41
|
+
componentName="TooltipContent"
|
|
43
42
|
disableRemoveScroll
|
|
44
43
|
trapFocus={false}
|
|
45
44
|
padding={props.size || popper.size || '$2'}
|
|
46
|
-
componentName="TooltipContent"
|
|
47
45
|
pointerEvents="none"
|
|
48
46
|
ref={ref}
|
|
49
47
|
{...props}
|
|
@@ -69,7 +67,20 @@ export type TooltipProps = PopperProps & {
|
|
|
69
67
|
}
|
|
70
68
|
}
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
type Delay =
|
|
71
|
+
| number
|
|
72
|
+
| Partial<{
|
|
73
|
+
open: number
|
|
74
|
+
close: number
|
|
75
|
+
}>
|
|
76
|
+
|
|
77
|
+
export const TooltipGroup = ({ children, delay }: { children?: any; delay: Delay }) => {
|
|
78
|
+
return (
|
|
79
|
+
<FloatingDelayGroup delay={React.useMemo(() => delay, [JSON.stringify(delay)])}>
|
|
80
|
+
{children}
|
|
81
|
+
</FloatingDelayGroup>
|
|
82
|
+
)
|
|
83
|
+
}
|
|
73
84
|
|
|
74
85
|
export const Tooltip = withStaticProperties(
|
|
75
86
|
((props: ScopedProps<TooltipProps, 'Popover'>) => {
|
|
@@ -89,19 +100,16 @@ export const Tooltip = withStaticProperties(
|
|
|
89
100
|
const [open, setOpen] = React.useState(false)
|
|
90
101
|
const id = props.groupId
|
|
91
102
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
(open)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
onOpenChangeProp?.(open)
|
|
100
|
-
},
|
|
101
|
-
[id, setCurrentId, onOpenChangeProp]
|
|
102
|
-
)
|
|
103
|
+
const onOpenChange = useEvent((open) => {
|
|
104
|
+
setOpen(open)
|
|
105
|
+
if (open) {
|
|
106
|
+
setCurrentId(id)
|
|
107
|
+
}
|
|
108
|
+
onOpenChangeProp?.(open)
|
|
109
|
+
})
|
|
103
110
|
|
|
104
111
|
const useFloatingFn: UseFloatingFn = (props) => {
|
|
112
|
+
// @ts-ignore
|
|
105
113
|
const floating = useFloating({
|
|
106
114
|
...props,
|
|
107
115
|
open,
|
|
@@ -122,8 +130,9 @@ export const Tooltip = withStaticProperties(
|
|
|
122
130
|
}
|
|
123
131
|
|
|
124
132
|
const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open])
|
|
125
|
-
|
|
126
|
-
const
|
|
133
|
+
const onCustomAnchorAdd = React.useCallback(() => setHasCustomAnchor(true), [])
|
|
134
|
+
const onCustomAnchorRemove = React.useCallback(() => setHasCustomAnchor(false), [])
|
|
135
|
+
const contentId = useId()
|
|
127
136
|
|
|
128
137
|
return (
|
|
129
138
|
<FloatingOverrideContext.Provider value={useFloatingContext}>
|
|
@@ -131,14 +140,16 @@ export const Tooltip = withStaticProperties(
|
|
|
131
140
|
<Popper size="$2" {...popperScope} {...restProps}>
|
|
132
141
|
<__PopoverProviderInternal
|
|
133
142
|
scope={__scopePopover}
|
|
134
|
-
contentId={
|
|
143
|
+
contentId={contentId}
|
|
135
144
|
triggerRef={triggerRef}
|
|
145
|
+
sheetBreakpoint={false}
|
|
146
|
+
scopeKey=""
|
|
136
147
|
open={open}
|
|
137
148
|
onOpenChange={setOpen}
|
|
138
149
|
onOpenToggle={voidFn}
|
|
139
150
|
hasCustomAnchor={hasCustomAnchor}
|
|
140
|
-
onCustomAnchorAdd={
|
|
141
|
-
onCustomAnchorRemove={
|
|
151
|
+
onCustomAnchorAdd={onCustomAnchorAdd}
|
|
152
|
+
onCustomAnchorRemove={onCustomAnchorRemove}
|
|
142
153
|
>
|
|
143
154
|
{children}
|
|
144
155
|
</__PopoverProviderInternal>
|
|
@@ -156,58 +167,4 @@ export const Tooltip = withStaticProperties(
|
|
|
156
167
|
|
|
157
168
|
Tooltip.displayName = 'Tooltip'
|
|
158
169
|
|
|
159
|
-
|
|
160
|
-
label?: React.ReactNode
|
|
161
|
-
children?: React.ReactNode
|
|
162
|
-
contentProps?: SizableStackProps
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export const TooltipSimple: React.FC<TooltipSimpleProps> = ({
|
|
166
|
-
label,
|
|
167
|
-
children,
|
|
168
|
-
contentProps,
|
|
169
|
-
...tooltipProps
|
|
170
|
-
}) => {
|
|
171
|
-
let context
|
|
172
|
-
try {
|
|
173
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
174
|
-
context = useDelayGroupContext()
|
|
175
|
-
} catch {
|
|
176
|
-
// ok
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const contents = (
|
|
180
|
-
<Tooltip {...tooltipProps}>
|
|
181
|
-
<Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
|
|
182
|
-
<Tooltip.Content
|
|
183
|
-
enterStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }}
|
|
184
|
-
exitStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }}
|
|
185
|
-
x={0}
|
|
186
|
-
scale={1}
|
|
187
|
-
y={0}
|
|
188
|
-
elevation="$1"
|
|
189
|
-
opacity={1}
|
|
190
|
-
animation={[
|
|
191
|
-
'bouncy',
|
|
192
|
-
{
|
|
193
|
-
opacity: {
|
|
194
|
-
overshootClamping: true,
|
|
195
|
-
},
|
|
196
|
-
},
|
|
197
|
-
]}
|
|
198
|
-
{...contentProps}
|
|
199
|
-
>
|
|
200
|
-
<Tooltip.Arrow />
|
|
201
|
-
<Paragraph size="$2" lineHeight="$1">
|
|
202
|
-
{label}
|
|
203
|
-
</Paragraph>
|
|
204
|
-
</Tooltip.Content>
|
|
205
|
-
</Tooltip>
|
|
206
|
-
)
|
|
207
|
-
|
|
208
|
-
if (!context) {
|
|
209
|
-
return <TooltipGroup delay={{ open: 3000, close: 100 }}>{contents}</TooltipGroup>
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return contents
|
|
213
|
-
}
|
|
170
|
+
const voidFn = () => {}
|