@radix-ui/react-hover-card 1.0.1-rc.9 → 1.0.1
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/index.d.ts.map +1 -1
- package/dist/index.js +58 -5
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +59 -6
- package/dist/index.module.js.map +1 -1
- package/package.json +6 -7
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;
|
|
1
|
+
{"mappings":";;;;;;AAwBA,OAAA,2FAEE,CAAC;AAgBH;IACE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,OAAA,MAAM,WAAW,MAAM,EAAE,CAAC,cAAc,CA0DvC,CAAC;AAWF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AAC7E,sCAAgC,SAAQ,kBAAkB;CAAG;AAE7D,OAAA,MAAM,iHAqBL,CAAC;AAeF,mBAAmB,MAAM,wBAAwB,CAAC,eAAsB,CAAC,CAAC;AAC1E,qCAA+B,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IACjE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,iBAAiB,MAAM,EAAE,CAAC,oBAAoB,CAcnD,CAAC;AAWF,sCAAgC,SAAQ,yBAAyB;IAC/D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,8GAiBL,CAAC;AAOF,6BAA6B,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACrF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACzF,mCAAoC,SAAQ,kBAAkB;IAC5D;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IACrE;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACzD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CAChE;AA8GD,wBAAwB,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,KAAK,CAAC,CAAC;AACrF,oCAA8B,SAAQ,gBAAgB;CAAG;AAEzD,OAAA,MAAM,yGAML,CAAC;AA6BF,OAAA,MAAM,8BAAgB,CAAC;AACvB,OAAA,MAAM,wGAA0B,CAAC;AACjC,OAAA,MAAM,sCAAwB,CAAC;AAC/B,OAAA,MAAM,qGAA0B,CAAC;AACjC,OAAA,MAAM,gGAAsB,CAAC","sources":["packages/react/hover-card/src/packages/react/hover-card/src/HoverCard.tsx","packages/react/hover-card/src/packages/react/hover-card/src/index.ts","packages/react/hover-card/src/index.ts"],"sourcesContent":[null,null,"export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.js
CHANGED
|
@@ -42,7 +42,8 @@ $parcel$export(module.exports, "Arrow", () => $e5715e9205c1e1fe$export$21b07c8f2
|
|
|
42
42
|
|
|
43
43
|
/* -------------------------------------------------------------------------------------------------
|
|
44
44
|
* HoverCard
|
|
45
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
45
|
+
* -----------------------------------------------------------------------------------------------*/ let $e5715e9205c1e1fe$var$originalBodyUserSelect;
|
|
46
|
+
const $e5715e9205c1e1fe$var$HOVERCARD_NAME = 'HoverCard';
|
|
46
47
|
const [$e5715e9205c1e1fe$var$createHoverCardContext, $e5715e9205c1e1fe$export$47b6998a836b7260] = $eFX7w$radixuireactcontext.createContextScope($e5715e9205c1e1fe$var$HOVERCARD_NAME, [
|
|
47
48
|
$eFX7w$radixuireactpopper.createPopperScope
|
|
48
49
|
]);
|
|
@@ -53,6 +54,8 @@ const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
|
|
|
53
54
|
const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
|
|
54
55
|
const openTimerRef = $eFX7w$react.useRef(0);
|
|
55
56
|
const closeTimerRef = $eFX7w$react.useRef(0);
|
|
57
|
+
const hasSelectionRef = $eFX7w$react.useRef(false);
|
|
58
|
+
const isPointerDownOnContentRef = $eFX7w$react.useRef(false);
|
|
56
59
|
const [open = false, setOpen] = $eFX7w$radixuireactusecontrollablestate.useControllableState({
|
|
57
60
|
prop: openProp,
|
|
58
61
|
defaultProp: defaultOpen,
|
|
@@ -68,7 +71,7 @@ const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
|
|
|
68
71
|
]);
|
|
69
72
|
const handleClose = $eFX7w$react.useCallback(()=>{
|
|
70
73
|
clearTimeout(openTimerRef.current);
|
|
71
|
-
closeTimerRef.current = window.setTimeout(()=>setOpen(false)
|
|
74
|
+
if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) closeTimerRef.current = window.setTimeout(()=>setOpen(false)
|
|
72
75
|
, closeDelay);
|
|
73
76
|
}, [
|
|
74
77
|
closeDelay,
|
|
@@ -90,7 +93,9 @@ const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
|
|
|
90
93
|
onOpenChange: setOpen,
|
|
91
94
|
onOpen: handleOpen,
|
|
92
95
|
onClose: handleClose,
|
|
93
|
-
onDismiss: handleDismiss
|
|
96
|
+
onDismiss: handleDismiss,
|
|
97
|
+
hasSelectionRef: hasSelectionRef,
|
|
98
|
+
isPointerDownOnContentRef: isPointerDownOnContentRef
|
|
94
99
|
}, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Root, popperScope, children));
|
|
95
100
|
};
|
|
96
101
|
/*#__PURE__*/ Object.assign($e5715e9205c1e1fe$export$57a077cc9fbe653e, {
|
|
@@ -169,6 +174,43 @@ const $e5715e9205c1e1fe$export$aa4724a5938c586 = /*#__PURE__*/ $eFX7w$react.forw
|
|
|
169
174
|
const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
|
|
170
175
|
const ref = $eFX7w$react.useRef(null);
|
|
171
176
|
const composedRefs = $eFX7w$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
177
|
+
const [containSelection, setContainSelection] = $eFX7w$react.useState(false);
|
|
178
|
+
$eFX7w$react.useEffect(()=>{
|
|
179
|
+
if (containSelection) {
|
|
180
|
+
const body = document.body; // Safari requires prefix
|
|
181
|
+
$e5715e9205c1e1fe$var$originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;
|
|
182
|
+
body.style.userSelect = 'none';
|
|
183
|
+
body.style.webkitUserSelect = 'none';
|
|
184
|
+
return ()=>{
|
|
185
|
+
body.style.userSelect = $e5715e9205c1e1fe$var$originalBodyUserSelect;
|
|
186
|
+
body.style.webkitUserSelect = $e5715e9205c1e1fe$var$originalBodyUserSelect;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}, [
|
|
190
|
+
containSelection
|
|
191
|
+
]);
|
|
192
|
+
$eFX7w$react.useEffect(()=>{
|
|
193
|
+
if (ref.current) {
|
|
194
|
+
const handlePointerUp = ()=>{
|
|
195
|
+
setContainSelection(false);
|
|
196
|
+
context.isPointerDownOnContentRef.current = false; // Delay a frame to ensure we always access the latest selection
|
|
197
|
+
setTimeout(()=>{
|
|
198
|
+
var _document$getSelectio;
|
|
199
|
+
const hasSelection = ((_document$getSelectio = document.getSelection()) === null || _document$getSelectio === void 0 ? void 0 : _document$getSelectio.toString()) !== '';
|
|
200
|
+
if (hasSelection) context.hasSelectionRef.current = true;
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
document.addEventListener('pointerup', handlePointerUp);
|
|
204
|
+
return ()=>{
|
|
205
|
+
document.removeEventListener('pointerup', handlePointerUp);
|
|
206
|
+
context.hasSelectionRef.current = false;
|
|
207
|
+
context.isPointerDownOnContentRef.current = false;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
}, [
|
|
211
|
+
context.isPointerDownOnContentRef,
|
|
212
|
+
context.hasSelectionRef
|
|
213
|
+
]);
|
|
172
214
|
$eFX7w$react.useEffect(()=>{
|
|
173
215
|
if (ref.current) {
|
|
174
216
|
const tabbables = $e5715e9205c1e1fe$var$getTabbableNodes(ref.current);
|
|
@@ -182,14 +224,25 @@ const $e5715e9205c1e1fe$export$aa4724a5938c586 = /*#__PURE__*/ $eFX7w$react.forw
|
|
|
182
224
|
onInteractOutside: onInteractOutside,
|
|
183
225
|
onEscapeKeyDown: onEscapeKeyDown,
|
|
184
226
|
onPointerDownOutside: onPointerDownOutside,
|
|
185
|
-
onFocusOutside: onFocusOutside,
|
|
227
|
+
onFocusOutside: $eFX7w$radixuiprimitive.composeEventHandlers(onFocusOutside, (event)=>{
|
|
228
|
+
event.preventDefault();
|
|
229
|
+
}),
|
|
186
230
|
onDismiss: context.onDismiss
|
|
187
231
|
}, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Content, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({}, popperScope, contentProps, {
|
|
232
|
+
onPointerDown: $eFX7w$radixuiprimitive.composeEventHandlers(contentProps.onPointerDown, (event)=>{
|
|
233
|
+
// Contain selection to current layer
|
|
234
|
+
if (event.currentTarget.contains(event.target)) setContainSelection(true);
|
|
235
|
+
context.hasSelectionRef.current = false;
|
|
236
|
+
context.isPointerDownOnContentRef.current = true;
|
|
237
|
+
}),
|
|
188
238
|
ref: composedRefs,
|
|
189
239
|
style: {
|
|
190
240
|
...contentProps.style,
|
|
191
241
|
// re-namespace exposed content custom property
|
|
192
|
-
['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)'
|
|
242
|
+
['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)',
|
|
243
|
+
userSelect: containSelection ? 'text' : undefined,
|
|
244
|
+
// Safari requires prefix
|
|
245
|
+
WebkitUserSelect: containSelection ? 'text' : undefined
|
|
193
246
|
}
|
|
194
247
|
})));
|
|
195
248
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\n data-state={context.open ? 'open' : 'closed'}\n {...triggerProps}\n ref={forwardedRef}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n onFocus={composeEventHandlers(props.onFocus, context.onOpen)}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\n data-state={context.open ? 'open' : 'closed'}\n {...contentProps}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","style","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nlet originalBodyUserSelect: string;\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n hasSelectionRef: React.MutableRefObject<boolean>;\n isPointerDownOnContentRef: React.MutableRefObject<boolean>;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const hasSelectionRef = React.useRef(false);\n const isPointerDownOnContentRef = React.useRef(false);\n\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n hasSelectionRef={hasSelectionRef}\n isPointerDownOnContentRef={isPointerDownOnContentRef}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\n data-state={context.open ? 'open' : 'closed'}\n {...triggerProps}\n ref={forwardedRef}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n onFocus={composeEventHandlers(props.onFocus, context.onOpen)}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\n data-state={context.open ? 'open' : 'closed'}\n {...contentProps}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n\n body.style.userSelect = 'none';\n body.style.webkitUserSelect = 'none';\n return () => {\n body.style.userSelect = originalBodyUserSelect;\n body.style.webkitUserSelect = originalBodyUserSelect;\n };\n }\n }, [containSelection]);\n\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = () => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n\n // Delay a frame to ensure we always access the latest selection\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== '';\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n };\n\n document.addEventListener('pointerup', handlePointerUp);\n return () => {\n document.removeEventListener('pointerup', handlePointerUp);\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = false;\n };\n }\n }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n })}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n onPointerDown={composeEventHandlers(contentProps.onPointerDown, (event) => {\n // Contain selection to current layer\n if (event.currentTarget.contains(event.target as HTMLElement)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n })}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n userSelect: containSelection ? 'text' : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? 'text' : undefined,\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","originalBodyUserSelect","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","hasSelectionRef","isPointerDownOnContentRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","containSelection","setContainSelection","useState","body","document","style","userSelect","webkitUserSelect","handlePointerUp","hasSelection","getSelection","toString","addEventListener","removeEventListener","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","onPointerDown","currentTarget","contains","target","WebkitUserSelect","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.js.map"}
|
package/dist/index.module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import $eRSIW$babelruntimehelpersesmextends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import {useRef as $eRSIW$useRef, useCallback as $eRSIW$useCallback, useEffect as $eRSIW$useEffect, createElement as $eRSIW$createElement, forwardRef as $eRSIW$forwardRef} from "react";
|
|
2
|
+
import {useRef as $eRSIW$useRef, useCallback as $eRSIW$useCallback, useEffect as $eRSIW$useEffect, createElement as $eRSIW$createElement, forwardRef as $eRSIW$forwardRef, useState as $eRSIW$useState} from "react";
|
|
3
3
|
import {composeEventHandlers as $eRSIW$composeEventHandlers} from "@radix-ui/primitive";
|
|
4
4
|
import {createContextScope as $eRSIW$createContextScope} from "@radix-ui/react-context";
|
|
5
5
|
import {useControllableState as $eRSIW$useControllableState} from "@radix-ui/react-use-controllable-state";
|
|
@@ -24,7 +24,8 @@ import {DismissableLayer as $eRSIW$DismissableLayer} from "@radix-ui/react-dismi
|
|
|
24
24
|
|
|
25
25
|
/* -------------------------------------------------------------------------------------------------
|
|
26
26
|
* HoverCard
|
|
27
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
27
|
+
* -----------------------------------------------------------------------------------------------*/ let $cef8881cdc69808e$var$originalBodyUserSelect;
|
|
28
|
+
const $cef8881cdc69808e$var$HOVERCARD_NAME = 'HoverCard';
|
|
28
29
|
const [$cef8881cdc69808e$var$createHoverCardContext, $cef8881cdc69808e$export$47b6998a836b7260] = $eRSIW$createContextScope($cef8881cdc69808e$var$HOVERCARD_NAME, [
|
|
29
30
|
$eRSIW$createPopperScope
|
|
30
31
|
]);
|
|
@@ -35,6 +36,8 @@ const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
|
|
|
35
36
|
const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
|
|
36
37
|
const openTimerRef = $eRSIW$useRef(0);
|
|
37
38
|
const closeTimerRef = $eRSIW$useRef(0);
|
|
39
|
+
const hasSelectionRef = $eRSIW$useRef(false);
|
|
40
|
+
const isPointerDownOnContentRef = $eRSIW$useRef(false);
|
|
38
41
|
const [open = false, setOpen] = $eRSIW$useControllableState({
|
|
39
42
|
prop: openProp,
|
|
40
43
|
defaultProp: defaultOpen,
|
|
@@ -50,7 +53,7 @@ const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
|
|
|
50
53
|
]);
|
|
51
54
|
const handleClose = $eRSIW$useCallback(()=>{
|
|
52
55
|
clearTimeout(openTimerRef.current);
|
|
53
|
-
closeTimerRef.current = window.setTimeout(()=>setOpen(false)
|
|
56
|
+
if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) closeTimerRef.current = window.setTimeout(()=>setOpen(false)
|
|
54
57
|
, closeDelay);
|
|
55
58
|
}, [
|
|
56
59
|
closeDelay,
|
|
@@ -72,7 +75,9 @@ const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
|
|
|
72
75
|
onOpenChange: setOpen,
|
|
73
76
|
onOpen: handleOpen,
|
|
74
77
|
onClose: handleClose,
|
|
75
|
-
onDismiss: handleDismiss
|
|
78
|
+
onDismiss: handleDismiss,
|
|
79
|
+
hasSelectionRef: hasSelectionRef,
|
|
80
|
+
isPointerDownOnContentRef: isPointerDownOnContentRef
|
|
76
81
|
}, /*#__PURE__*/ $eRSIW$createElement($eRSIW$Root, popperScope, children));
|
|
77
82
|
};
|
|
78
83
|
/*#__PURE__*/ Object.assign($cef8881cdc69808e$export$57a077cc9fbe653e, {
|
|
@@ -151,6 +156,43 @@ const $cef8881cdc69808e$export$aa4724a5938c586 = /*#__PURE__*/ $eRSIW$forwardRef
|
|
|
151
156
|
const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
|
|
152
157
|
const ref = $eRSIW$useRef(null);
|
|
153
158
|
const composedRefs = $eRSIW$useComposedRefs(forwardedRef, ref);
|
|
159
|
+
const [containSelection, setContainSelection] = $eRSIW$useState(false);
|
|
160
|
+
$eRSIW$useEffect(()=>{
|
|
161
|
+
if (containSelection) {
|
|
162
|
+
const body = document.body; // Safari requires prefix
|
|
163
|
+
$cef8881cdc69808e$var$originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;
|
|
164
|
+
body.style.userSelect = 'none';
|
|
165
|
+
body.style.webkitUserSelect = 'none';
|
|
166
|
+
return ()=>{
|
|
167
|
+
body.style.userSelect = $cef8881cdc69808e$var$originalBodyUserSelect;
|
|
168
|
+
body.style.webkitUserSelect = $cef8881cdc69808e$var$originalBodyUserSelect;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}, [
|
|
172
|
+
containSelection
|
|
173
|
+
]);
|
|
174
|
+
$eRSIW$useEffect(()=>{
|
|
175
|
+
if (ref.current) {
|
|
176
|
+
const handlePointerUp = ()=>{
|
|
177
|
+
setContainSelection(false);
|
|
178
|
+
context.isPointerDownOnContentRef.current = false; // Delay a frame to ensure we always access the latest selection
|
|
179
|
+
setTimeout(()=>{
|
|
180
|
+
var _document$getSelectio;
|
|
181
|
+
const hasSelection = ((_document$getSelectio = document.getSelection()) === null || _document$getSelectio === void 0 ? void 0 : _document$getSelectio.toString()) !== '';
|
|
182
|
+
if (hasSelection) context.hasSelectionRef.current = true;
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
document.addEventListener('pointerup', handlePointerUp);
|
|
186
|
+
return ()=>{
|
|
187
|
+
document.removeEventListener('pointerup', handlePointerUp);
|
|
188
|
+
context.hasSelectionRef.current = false;
|
|
189
|
+
context.isPointerDownOnContentRef.current = false;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}, [
|
|
193
|
+
context.isPointerDownOnContentRef,
|
|
194
|
+
context.hasSelectionRef
|
|
195
|
+
]);
|
|
154
196
|
$eRSIW$useEffect(()=>{
|
|
155
197
|
if (ref.current) {
|
|
156
198
|
const tabbables = $cef8881cdc69808e$var$getTabbableNodes(ref.current);
|
|
@@ -164,14 +206,25 @@ const $cef8881cdc69808e$export$aa4724a5938c586 = /*#__PURE__*/ $eRSIW$forwardRef
|
|
|
164
206
|
onInteractOutside: onInteractOutside,
|
|
165
207
|
onEscapeKeyDown: onEscapeKeyDown,
|
|
166
208
|
onPointerDownOutside: onPointerDownOutside,
|
|
167
|
-
onFocusOutside: onFocusOutside,
|
|
209
|
+
onFocusOutside: $eRSIW$composeEventHandlers(onFocusOutside, (event)=>{
|
|
210
|
+
event.preventDefault();
|
|
211
|
+
}),
|
|
168
212
|
onDismiss: context.onDismiss
|
|
169
213
|
}, /*#__PURE__*/ $eRSIW$createElement($eRSIW$Content, $eRSIW$babelruntimehelpersesmextends({}, popperScope, contentProps, {
|
|
214
|
+
onPointerDown: $eRSIW$composeEventHandlers(contentProps.onPointerDown, (event)=>{
|
|
215
|
+
// Contain selection to current layer
|
|
216
|
+
if (event.currentTarget.contains(event.target)) setContainSelection(true);
|
|
217
|
+
context.hasSelectionRef.current = false;
|
|
218
|
+
context.isPointerDownOnContentRef.current = true;
|
|
219
|
+
}),
|
|
170
220
|
ref: composedRefs,
|
|
171
221
|
style: {
|
|
172
222
|
...contentProps.style,
|
|
173
223
|
// re-namespace exposed content custom property
|
|
174
|
-
['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)'
|
|
224
|
+
['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)',
|
|
225
|
+
userSelect: containSelection ? 'text' : undefined,
|
|
226
|
+
// Safari requires prefix
|
|
227
|
+
WebkitUserSelect: containSelection ? 'text' : undefined
|
|
175
228
|
}
|
|
176
229
|
})));
|
|
177
230
|
});
|
package/dist/index.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\n data-state={context.open ? 'open' : 'closed'}\n {...triggerProps}\n ref={forwardedRef}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n onFocus={composeEventHandlers(props.onFocus, context.onOpen)}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\n data-state={context.open ? 'open' : 'closed'}\n {...contentProps}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","style","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nlet originalBodyUserSelect: string;\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n hasSelectionRef: React.MutableRefObject<boolean>;\n isPointerDownOnContentRef: React.MutableRefObject<boolean>;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const hasSelectionRef = React.useRef(false);\n const isPointerDownOnContentRef = React.useRef(false);\n\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n hasSelectionRef={hasSelectionRef}\n isPointerDownOnContentRef={isPointerDownOnContentRef}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\n data-state={context.open ? 'open' : 'closed'}\n {...triggerProps}\n ref={forwardedRef}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n onFocus={composeEventHandlers(props.onFocus, context.onOpen)}\n onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\n data-state={context.open ? 'open' : 'closed'}\n {...contentProps}\n onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n\n body.style.userSelect = 'none';\n body.style.webkitUserSelect = 'none';\n return () => {\n body.style.userSelect = originalBodyUserSelect;\n body.style.webkitUserSelect = originalBodyUserSelect;\n };\n }\n }, [containSelection]);\n\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = () => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n\n // Delay a frame to ensure we always access the latest selection\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== '';\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n };\n\n document.addEventListener('pointerup', handlePointerUp);\n return () => {\n document.removeEventListener('pointerup', handlePointerUp);\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = false;\n };\n }\n }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n })}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n onPointerDown={composeEventHandlers(contentProps.onPointerDown, (event) => {\n // Contain selection to current layer\n if (event.currentTarget.contains(event.target as HTMLElement)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n })}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n userSelect: containSelection ? 'text' : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? 'text' : undefined,\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","originalBodyUserSelect","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","hasSelectionRef","isPointerDownOnContentRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","containSelection","setContainSelection","useState","body","document","style","userSelect","webkitUserSelect","handlePointerUp","hasSelection","getSelection","toString","addEventListener","removeEventListener","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","onPointerDown","currentTarget","contains","target","WebkitUserSelect","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.module.js.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radix-ui/react-hover-card",
|
|
3
|
-
"version": "1.0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"@radix-ui/primitive": "1.0.0",
|
|
21
21
|
"@radix-ui/react-compose-refs": "1.0.0",
|
|
22
22
|
"@radix-ui/react-context": "1.0.0",
|
|
23
|
-
"@radix-ui/react-dismissable-layer": "1.0.1
|
|
24
|
-
"@radix-ui/react-popper": "1.0.1
|
|
25
|
-
"@radix-ui/react-portal": "1.0.1
|
|
23
|
+
"@radix-ui/react-dismissable-layer": "1.0.1",
|
|
24
|
+
"@radix-ui/react-popper": "1.0.1",
|
|
25
|
+
"@radix-ui/react-portal": "1.0.1",
|
|
26
26
|
"@radix-ui/react-presence": "1.0.0",
|
|
27
|
-
"@radix-ui/react-primitive": "1.0.1
|
|
27
|
+
"@radix-ui/react-primitive": "1.0.1",
|
|
28
28
|
"@radix-ui/react-use-controllable-state": "1.0.0"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
@@ -38,6 +38,5 @@
|
|
|
38
38
|
},
|
|
39
39
|
"bugs": {
|
|
40
40
|
"url": "https://github.com/radix-ui/primitives/issues"
|
|
41
|
-
}
|
|
42
|
-
"stableVersion": "1.0.0"
|
|
41
|
+
}
|
|
43
42
|
}
|