@tamagui/popover 1.0.1-beta.132 → 1.0.1-beta.135
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/Popover.js +66 -10
- package/dist/cjs/Popover.js.map +2 -2
- package/dist/cjs/floating.js +39 -0
- package/dist/cjs/floating.js.map +7 -0
- package/dist/cjs/floating.native.js +59 -0
- package/dist/cjs/floating.native.js.map +7 -0
- package/dist/cjs/index.js +0 -0
- package/dist/cjs/index.js.map +0 -0
- package/dist/esm/Popover.js +71 -14
- package/dist/esm/Popover.js.map +2 -2
- package/dist/esm/floating.js +17 -0
- package/dist/esm/floating.js.map +7 -0
- package/dist/esm/floating.native.js +31 -0
- package/dist/esm/floating.native.js.map +7 -0
- package/dist/esm/index.js +0 -0
- package/dist/esm/index.js.map +0 -0
- package/dist/jsx/Popover.js +59 -15
- package/dist/jsx/Popover.js.map +2 -2
- package/dist/jsx/floating.js +17 -0
- package/dist/jsx/floating.js.map +7 -0
- package/dist/jsx/floating.native.js +31 -0
- package/dist/jsx/floating.native.js.map +7 -0
- package/dist/jsx/index.js +0 -0
- package/dist/jsx/index.js.map +0 -0
- package/package.json +15 -14
- package/src/Popover.tsx +103 -24
- package/src/floating.native.ts +18 -0
- package/src/floating.ts +8 -0
- package/types/Popover.d.ts +84 -8
- package/types/floating.d.ts +2 -0
- package/types/floating.native.d.ts +15 -0
- package/types/index.d.ts +0 -0
package/dist/cjs/Popover.js
CHANGED
|
@@ -26,6 +26,7 @@ __export(Popover_exports, {
|
|
|
26
26
|
PopoverArrow: () => PopoverArrow,
|
|
27
27
|
PopoverClose: () => PopoverClose,
|
|
28
28
|
PopoverContent: () => PopoverContent,
|
|
29
|
+
PopoverSheetContents: () => PopoverSheetContents,
|
|
29
30
|
PopoverTrigger: () => PopoverTrigger,
|
|
30
31
|
__PopoverProviderInternal: () => __PopoverProviderInternal,
|
|
31
32
|
createPopoverScope: () => createPopoverScope,
|
|
@@ -33,7 +34,6 @@ __export(Popover_exports, {
|
|
|
33
34
|
});
|
|
34
35
|
module.exports = __toCommonJS(Popover_exports);
|
|
35
36
|
var import_polyfill_dev = require("@tamagui/polyfill-dev");
|
|
36
|
-
var import_react_dom_interactions = require("@floating-ui/react-dom-interactions");
|
|
37
37
|
var import_animate_presence = require("@tamagui/animate-presence");
|
|
38
38
|
var import_aria_hidden = require("@tamagui/aria-hidden");
|
|
39
39
|
var import_compose_refs = require("@tamagui/compose-refs");
|
|
@@ -43,9 +43,11 @@ var import_focus_scope = require("@tamagui/focus-scope");
|
|
|
43
43
|
var import_popper = require("@tamagui/popper");
|
|
44
44
|
var import_portal = require("@tamagui/portal");
|
|
45
45
|
var import_remove_scroll = require("@tamagui/remove-scroll");
|
|
46
|
+
var import_sheet = require("@tamagui/sheet");
|
|
46
47
|
var import_stacks = require("@tamagui/stacks");
|
|
47
48
|
var import_use_controllable_state = require("@tamagui/use-controllable-state");
|
|
48
49
|
var React = __toESM(require("react"));
|
|
50
|
+
var import_floating = require("./floating");
|
|
49
51
|
const POPOVER_NAME = "Popover";
|
|
50
52
|
const [createPopoverContext, createPopoverScopeInternal] = (0, import_create_context.createContextScope)(POPOVER_NAME, [
|
|
51
53
|
import_popper.createPopperScope
|
|
@@ -147,6 +149,12 @@ const PopoverContentImpl = React.forwardRef((props, forwardedRef) => {
|
|
|
147
149
|
} = props;
|
|
148
150
|
const popperScope = usePopoverScope(__scopePopover);
|
|
149
151
|
const context = usePopoverInternalContext(CONTENT_NAME, popperScope.__scopePopover);
|
|
152
|
+
const showSheet = useShowPopoverSheet(context);
|
|
153
|
+
if (showSheet) {
|
|
154
|
+
return /* @__PURE__ */ React.createElement(import_portal.PortalItem, {
|
|
155
|
+
hostName: `${context.scopeKey}SheetContents`
|
|
156
|
+
}, children);
|
|
157
|
+
}
|
|
150
158
|
return /* @__PURE__ */ React.createElement(import_animate_presence.AnimatePresence, null, !!context.open && /* @__PURE__ */ React.createElement(import_popper.PopperContent, {
|
|
151
159
|
key: "popper-content",
|
|
152
160
|
"data-state": getState(context.open),
|
|
@@ -190,6 +198,14 @@ const PopoverArrow = React.forwardRef((props, forwardedRef) => {
|
|
|
190
198
|
});
|
|
191
199
|
});
|
|
192
200
|
PopoverArrow.displayName = ARROW_NAME;
|
|
201
|
+
const SHEET_CONTENTS_NAME = "PopoverSheetContents";
|
|
202
|
+
const PopoverSheetContents = ({ __scopePopover }) => {
|
|
203
|
+
const context = usePopoverInternalContext(SHEET_CONTENTS_NAME, __scopePopover);
|
|
204
|
+
return /* @__PURE__ */ React.createElement(import_portal.PortalHost, {
|
|
205
|
+
name: `${context.scopeKey}SheetContents`
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
PopoverSheetContents.displayName = SHEET_CONTENTS_NAME;
|
|
193
209
|
const Popover = (0, import_core.withStaticProperties)((props) => {
|
|
194
210
|
const {
|
|
195
211
|
__scopePopover,
|
|
@@ -197,6 +213,7 @@ const Popover = (0, import_core.withStaticProperties)((props) => {
|
|
|
197
213
|
open: openProp,
|
|
198
214
|
defaultOpen,
|
|
199
215
|
onOpenChange,
|
|
216
|
+
sheetBreakpoint = false,
|
|
200
217
|
...restProps
|
|
201
218
|
} = props;
|
|
202
219
|
const popperScope = usePopoverScope(__scopePopover);
|
|
@@ -207,23 +224,28 @@ const Popover = (0, import_core.withStaticProperties)((props) => {
|
|
|
207
224
|
defaultProp: defaultOpen || false,
|
|
208
225
|
onChange: onOpenChange
|
|
209
226
|
});
|
|
227
|
+
const breakpointActive = useSheetBreakpointActive(sheetBreakpoint);
|
|
210
228
|
const useFloatingContext = React.useCallback((props2) => {
|
|
211
|
-
const floating = (0,
|
|
229
|
+
const floating = (0, import_floating.useFloating)({
|
|
212
230
|
...props2,
|
|
213
231
|
open,
|
|
214
232
|
onOpenChange: setOpen
|
|
215
233
|
});
|
|
216
|
-
const { getReferenceProps, getFloatingProps } = (0,
|
|
217
|
-
(0,
|
|
218
|
-
|
|
219
|
-
|
|
234
|
+
const { getReferenceProps, getFloatingProps } = (0, import_floating.useInteractions)([
|
|
235
|
+
(0, import_floating.useFocus)(floating.context, {
|
|
236
|
+
enabled: !breakpointActive
|
|
237
|
+
}),
|
|
238
|
+
(0, import_floating.useRole)(floating.context, { role: "dialog" }),
|
|
239
|
+
(0, import_floating.useDismiss)(floating.context, {
|
|
240
|
+
enabled: !breakpointActive
|
|
241
|
+
})
|
|
220
242
|
]);
|
|
221
243
|
return {
|
|
222
244
|
...floating,
|
|
223
245
|
getReferenceProps,
|
|
224
246
|
getFloatingProps
|
|
225
247
|
};
|
|
226
|
-
}, [open, setOpen]);
|
|
248
|
+
}, [breakpointActive, open, setOpen]);
|
|
227
249
|
return /* @__PURE__ */ React.createElement(import_popper.FloatingOverrideContext.Provider, {
|
|
228
250
|
value: useFloatingContext
|
|
229
251
|
}, /* @__PURE__ */ React.createElement(import_popper.Popper, {
|
|
@@ -231,29 +253,62 @@ const Popover = (0, import_core.withStaticProperties)((props) => {
|
|
|
231
253
|
...restProps
|
|
232
254
|
}, /* @__PURE__ */ React.createElement(PopoverProviderInternal, {
|
|
233
255
|
scope: __scopePopover,
|
|
256
|
+
scopeKey: __scopePopover ? Object.keys(__scopePopover)[0] : "",
|
|
257
|
+
sheetBreakpoint,
|
|
234
258
|
contentId: (0, import_core.useId)(),
|
|
235
259
|
triggerRef,
|
|
236
260
|
open,
|
|
237
261
|
onOpenChange: setOpen,
|
|
238
262
|
onOpenToggle: (0, import_core.useEvent)(() => {
|
|
239
|
-
console.log("
|
|
263
|
+
console.log("wtf");
|
|
264
|
+
if (open && breakpointActive) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
240
267
|
setOpen(!open);
|
|
241
268
|
}),
|
|
242
269
|
hasCustomAnchor,
|
|
243
270
|
onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),
|
|
244
271
|
onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), [])
|
|
245
|
-
},
|
|
272
|
+
}, /* @__PURE__ */ React.createElement(PopoverSheetController, {
|
|
273
|
+
onChangeOpen: setOpen,
|
|
274
|
+
__scopePopover
|
|
275
|
+
}, children))));
|
|
246
276
|
}, {
|
|
247
277
|
Anchor: PopoverAnchor,
|
|
248
278
|
Arrow: PopoverArrow,
|
|
249
279
|
Trigger: PopoverTrigger,
|
|
250
280
|
Content: PopoverContent,
|
|
251
|
-
Close: PopoverClose
|
|
281
|
+
Close: PopoverClose,
|
|
282
|
+
SheetContents: PopoverSheetContents,
|
|
283
|
+
Sheet: import_sheet.Sheet
|
|
252
284
|
});
|
|
253
285
|
Popover.displayName = POPOVER_NAME;
|
|
254
286
|
function getState(open) {
|
|
255
287
|
return open ? "open" : "closed";
|
|
256
288
|
}
|
|
289
|
+
const PopoverSheetController = (props) => {
|
|
290
|
+
const context = usePopoverInternalContext("PopoverSheetController", props.__scopePopover);
|
|
291
|
+
const showSheet = useShowPopoverSheet(context);
|
|
292
|
+
const breakpointActive = useSheetBreakpointActive(context.sheetBreakpoint);
|
|
293
|
+
const getShowSheet = (0, import_core.useGet)(showSheet);
|
|
294
|
+
return /* @__PURE__ */ React.createElement(import_sheet.SheetController, {
|
|
295
|
+
onChangeOpen: (val) => {
|
|
296
|
+
if (getShowSheet()) {
|
|
297
|
+
props.onChangeOpen(val);
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
open: context.open,
|
|
301
|
+
hidden: breakpointActive === false
|
|
302
|
+
}, props.children);
|
|
303
|
+
};
|
|
304
|
+
const useSheetBreakpointActive = (breakpoint) => {
|
|
305
|
+
const media = (0, import_core.useMedia)();
|
|
306
|
+
return breakpoint ? media[breakpoint] : false;
|
|
307
|
+
};
|
|
308
|
+
const useShowPopoverSheet = (context) => {
|
|
309
|
+
const breakpointActive = useSheetBreakpointActive(context.sheetBreakpoint);
|
|
310
|
+
return context.open === false ? false : breakpointActive;
|
|
311
|
+
};
|
|
257
312
|
// Annotate the CommonJS export names for ESM import in node:
|
|
258
313
|
0 && (module.exports = {
|
|
259
314
|
Popover,
|
|
@@ -261,6 +316,7 @@ function getState(open) {
|
|
|
261
316
|
PopoverArrow,
|
|
262
317
|
PopoverClose,
|
|
263
318
|
PopoverContent,
|
|
319
|
+
PopoverSheetContents,
|
|
264
320
|
PopoverTrigger,
|
|
265
321
|
__PopoverProviderInternal,
|
|
266
322
|
createPopoverScope,
|
package/dist/cjs/Popover.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Popover.tsx"],
|
|
4
|
-
"sourcesContent": ["// adapted from radix-ui popover\n\nimport '@tamagui/polyfill-dev'\n\nimport {\n UseFloatingProps,\n useDismiss,\n useFloating,\n useFocus,\n useInteractions,\n useRole,\n} from '@floating-ui/react-dom-interactions'\nimport { AnimatePresence } from '@tamagui/animate-presence'\nimport { hideOthers } from '@tamagui/aria-hidden'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport {\n SizeTokens,\n Theme,\n composeEventHandlers,\n useEvent,\n useId,\n useThemeName,\n withStaticProperties,\n} from '@tamagui/core'\nimport type { Scope } from '@tamagui/create-context'\nimport { createContextScope } from '@tamagui/create-context'\nimport { DismissableProps } from '@tamagui/dismissable'\nimport { FocusScope, FocusScopeProps } from '@tamagui/focus-scope'\nimport {\n FloatingOverrideContext,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperArrowProps,\n PopperContent,\n PopperContentProps,\n PopperProps,\n createPopperScope,\n} from '@tamagui/popper'\nimport { Portal } from '@tamagui/portal'\nimport { RemoveScroll, RemoveScrollProps } from '@tamagui/remove-scroll'\nimport { YStack, YStackProps } from '@tamagui/stacks'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport * as React from 'react'\nimport { View } from 'react-native'\n\nconst POPOVER_NAME = 'Popover'\n\ntype ScopedProps<P> = P & { __scopePopover?: Scope }\nconst [createPopoverContext, createPopoverScopeInternal] = createContextScope(POPOVER_NAME, [\n createPopperScope,\n])\nexport const usePopoverScope = createPopperScope()\nexport const createPopoverScope = createPopoverScopeInternal\n\ntype PopoverContextValue = {\n triggerRef: React.RefObject<HTMLButtonElement>\n contentId?: string\n open: boolean\n onOpenChange(open: boolean): void\n onOpenToggle(): void\n hasCustomAnchor: boolean\n onCustomAnchorAdd(): void\n onCustomAnchorRemove(): void\n size?: SizeTokens\n}\n\nconst [PopoverProviderInternal, usePopoverInternalContext] =\n createPopoverContext<PopoverContextValue>(POPOVER_NAME)\n\nexport const __PopoverProviderInternal = PopoverProviderInternal\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopoverAnchor'\n\ntype PopoverAnchorElement = HTMLElement | View\nexport type PopoverAnchorProps = YStackProps\n\nexport const PopoverAnchor = React.forwardRef<PopoverAnchorElement, PopoverAnchorProps>(\n (props: ScopedProps<PopoverAnchorProps>, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props\n const context = usePopoverInternalContext(ANCHOR_NAME, __scopePopover)\n const popperScope = usePopoverScope(__scopePopover)\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context\n\n React.useEffect(() => {\n onCustomAnchorAdd()\n return () => onCustomAnchorRemove()\n }, [onCustomAnchorAdd, onCustomAnchorRemove])\n\n return <PopperAnchor {...popperScope} {...anchorProps} ref={forwardedRef} />\n }\n)\n\nPopoverAnchor.displayName = ANCHOR_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'PopoverTrigger'\n\ntype PopoverTriggerElement = HTMLElement | View\nexport type PopoverTriggerProps = YStackProps\n\nexport const PopoverTrigger = React.forwardRef<PopoverTriggerElement, PopoverTriggerProps>(\n (props: ScopedProps<PopoverTriggerProps>, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props\n const context = usePopoverInternalContext(TRIGGER_NAME, __scopePopover)\n const popperScope = usePopoverScope(__scopePopover)\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef)\n\n const trigger = (\n <YStack\n aria-haspopup=\"dialog\"\n aria-expanded={context.open}\n aria-controls={context.contentId}\n data-state={getState(context.open)}\n {...triggerProps}\n ref={composedTriggerRef}\n onPress={composeEventHandlers(props.onPress, context.onOpenToggle)}\n />\n )\n\n return context.hasCustomAnchor ? (\n trigger\n ) : (\n <PopperAnchor asChild {...popperScope}>\n {trigger}\n </PopperAnchor>\n )\n }\n)\n\nPopoverTrigger.displayName = TRIGGER_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopoverContent'\n\nexport type PopoverContentProps = PopoverContentTypeProps\n\ntype PopoverContentTypeElement = PopoverContentImplElement\n\nexport interface PopoverContentTypeProps\n extends Omit<PopoverContentImplProps, 'disableOutsidePointerEvents'> {\n /**\n * @see https://github.com/theKashey/react-remove-scroll#usage\n */\n allowPinchZoom?: RemoveScrollProps['allowPinchZoom']\n}\n\nexport const PopoverContent = React.forwardRef<PopoverContentTypeElement, PopoverContentTypeProps>(\n (props: ScopedProps<PopoverContentTypeProps>, forwardedRef) => {\n const { allowPinchZoom, trapFocus, disableRemoveScroll, ...contentModalProps } = props\n const context = usePopoverInternalContext(CONTENT_NAME, props.__scopePopover)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const composedRefs = useComposedRefs(forwardedRef, contentRef)\n const isRightClickOutsideRef = React.useRef(false)\n const themeName = useThemeName()\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n if (!context.open) return\n const content = contentRef.current\n if (content) return hideOthers(content)\n }, [context.open])\n\n return (\n <Portal>\n <Theme name={themeName}>\n <PopoverContentImpl\n {...contentModalProps}\n disableRemoveScroll={disableRemoveScroll}\n ref={composedRefs}\n // we make sure we're not trapping once it's been closed\n // (closed !== unmounted when animating out)\n trapFocus={trapFocus ?? context.open}\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault()\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus()\n })}\n onPointerDownOutside={composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick\n isRightClickOutsideRef.current = isRightClick\n },\n { checkDefaultPrevented: false }\n )}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkDefaultPrevented: false }\n )}\n />\n </Theme>\n </Portal>\n )\n }\n)\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PopoverContentImplElement = React.ElementRef<typeof PopperContent>\n\nexport interface PopoverContentImplProps\n extends PopperContentProps,\n Omit<DismissableProps, 'onDismiss' | 'children'> {\n /**\n * Whether focus should be trapped within the `Popover`\n * (default: false)\n */\n trapFocus?: FocusScopeProps['trapped']\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus']\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus']\n\n disableRemoveScroll?: boolean\n}\n\nconst PopoverContentImpl = React.forwardRef<PopoverContentImplElement, PopoverContentImplProps>(\n (props: ScopedProps<PopoverContentImplProps>, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n children,\n disableRemoveScroll,\n ...contentProps\n } = props\n const popperScope = usePopoverScope(__scopePopover)\n const context = usePopoverInternalContext(CONTENT_NAME, popperScope.__scopePopover)\n // const popperContext = usePopperContext(CONTENT_NAME, popperScope.__scopePopper)\n\n // const handleDismiss = React.useCallback(() => context.onOpenChange(false), [])\n // <Dismissable\n // disableOutsidePointerEvents={disableOutsidePointerEvents}\n // // onInteractOutside={onInteractOutside}\n // onEscapeKeyDown={onEscapeKeyDown}\n // // onPointerDownOutside={onPointerDownOutside}\n // // onFocusOutside={onFocusOutside}\n // onDismiss={handleDismiss}\n // >\n\n return (\n <AnimatePresence>\n {!!context.open && (\n <PopperContent\n key=\"popper-content\"\n data-state={getState(context.open)}\n id={context.contentId}\n pointerEvents=\"auto\"\n {...popperScope}\n {...contentProps}\n ref={forwardedRef}\n >\n <RemoveScroll\n enabled={disableRemoveScroll ? false : context.open}\n allowPinchZoom\n // causes lots of bugs on touch web on site\n removeScrollBar={false}\n >\n {trapFocus === false ? (\n children\n ) : (\n <FocusScope\n loop\n trapped={trapFocus ?? context.open}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n >\n <div style={{ display: 'contents' }}>{children}</div>\n </FocusScope>\n )}\n </RemoveScroll>\n </PopperContent>\n )}\n </AnimatePresence>\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'PopoverClose'\n\ntype PopoverCloseElement = HTMLElement | View\nexport type PopoverCloseProps = YStackProps\n\nexport const PopoverClose = React.forwardRef<PopoverCloseElement, PopoverCloseProps>(\n (props: ScopedProps<PopoverCloseProps>, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props\n const context = usePopoverInternalContext(CLOSE_NAME, __scopePopover)\n return (\n <YStack\n {...closeProps}\n ref={forwardedRef}\n onPress={composeEventHandlers(props.onPress, () => context.onOpenChange(false))}\n />\n )\n }\n)\n\nPopoverClose.displayName = CLOSE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopoverArrow'\n\ntype PopoverArrowElement = HTMLElement | View\nexport type PopoverArrowProps = PopperArrowProps\n\nexport const PopoverArrow = React.forwardRef<PopoverArrowElement, PopoverArrowProps>(\n (props: ScopedProps<PopoverArrowProps>, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props\n const popperScope = usePopoverScope(__scopePopover)\n return <PopperArrow {...popperScope} {...arrowProps} ref={forwardedRef} />\n }\n)\n\nPopoverArrow.displayName = ARROW_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nexport type PopoverProps = PopperProps & {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nexport const Popover = withStaticProperties(\n ((props: ScopedProps<PopoverProps>) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\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 [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange: onOpenChange,\n })\n\n const useFloatingContext = React.useCallback(\n (props: UseFloatingProps) => {\n const floating = useFloating({\n ...props,\n open,\n onOpenChange: setOpen,\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useFocus(floating.context),\n useRole(floating.context, { role: 'dialog' }),\n useDismiss(floating.context),\n ])\n return {\n ...floating,\n getReferenceProps,\n getFloatingProps,\n }\n },\n [open, setOpen]\n )\n\n return (\n <FloatingOverrideContext.Provider value={useFloatingContext as any}>\n <Popper {...popperScope} {...restProps}>\n <PopoverProviderInternal\n scope={__scopePopover}\n contentId={useId()}\n triggerRef={triggerRef}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={useEvent(() => {\n console.log('toggle', open)\n setOpen(!open)\n })}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}\n onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}\n >\n {children}\n </PopoverProviderInternal>\n </Popper>\n </FloatingOverrideContext.Provider>\n )\n }) as React.FC<PopoverProps>,\n {\n Anchor: PopoverAnchor,\n Arrow: PopoverArrow,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n }\n)\n\nPopover.displayName = POPOVER_NAME\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed'\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAO;AAEP,
|
|
4
|
+
"sourcesContent": ["// adapted from radix-ui popover\n\nimport '@tamagui/polyfill-dev'\n\nimport { AnimatePresence } from '@tamagui/animate-presence'\nimport { hideOthers } from '@tamagui/aria-hidden'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport {\n MediaPropKeys,\n SizeTokens,\n Theme,\n composeEventHandlers,\n useEvent,\n useGet,\n useId,\n useMedia,\n useThemeName,\n withStaticProperties,\n} from '@tamagui/core'\nimport type { Scope } from '@tamagui/create-context'\nimport { createContextScope } from '@tamagui/create-context'\nimport { DismissableProps } from '@tamagui/dismissable'\nimport { FocusScope, FocusScopeProps } from '@tamagui/focus-scope'\nimport {\n FloatingOverrideContext,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperArrowProps,\n PopperContent,\n PopperContentProps,\n PopperProps,\n createPopperScope,\n} from '@tamagui/popper'\nimport { Portal, PortalHost, PortalItem } from '@tamagui/portal'\nimport { RemoveScroll, RemoveScrollProps } from '@tamagui/remove-scroll'\nimport { Sheet, SheetController } from '@tamagui/sheet'\nimport { YStack, YStackProps } from '@tamagui/stacks'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport * as React from 'react'\nimport { View } from 'react-native'\n\nimport {\n UseFloatingProps,\n useDismiss,\n useFloating,\n useFocus,\n useInteractions,\n useRole,\n} from './floating'\n\nconst POPOVER_NAME = 'Popover'\n\ntype ScopedProps<P> = P & { __scopePopover?: Scope }\ntype NonNull<A> = Exclude<A, void | null>\n\nexport type PopoverProps = PopperProps & {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n sheetBreakpoint?: MediaPropKeys | false\n}\n\ntype PopoverContextValue = {\n triggerRef: React.RefObject<HTMLButtonElement>\n contentId?: string\n open: boolean\n onOpenChange(open: boolean): void\n onOpenToggle(): void\n hasCustomAnchor: boolean\n onCustomAnchorAdd(): void\n onCustomAnchorRemove(): void\n size?: SizeTokens\n sheetBreakpoint: NonNull<PopoverProps['sheetBreakpoint']>\n scopeKey: string\n}\n\nconst [createPopoverContext, createPopoverScopeInternal] = createContextScope(POPOVER_NAME, [\n createPopperScope,\n])\nexport const usePopoverScope = createPopperScope()\nexport const createPopoverScope = createPopoverScopeInternal\n\nconst [PopoverProviderInternal, usePopoverInternalContext] =\n createPopoverContext<PopoverContextValue>(POPOVER_NAME)\n\nexport const __PopoverProviderInternal = PopoverProviderInternal\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopoverAnchor'\n\ntype PopoverAnchorElement = HTMLElement | View\nexport type PopoverAnchorProps = YStackProps\n\nexport const PopoverAnchor = React.forwardRef<PopoverAnchorElement, PopoverAnchorProps>(\n (props: ScopedProps<PopoverAnchorProps>, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props\n const context = usePopoverInternalContext(ANCHOR_NAME, __scopePopover)\n const popperScope = usePopoverScope(__scopePopover)\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context\n\n React.useEffect(() => {\n onCustomAnchorAdd()\n return () => onCustomAnchorRemove()\n }, [onCustomAnchorAdd, onCustomAnchorRemove])\n\n return <PopperAnchor {...popperScope} {...anchorProps} ref={forwardedRef} />\n }\n)\n\nPopoverAnchor.displayName = ANCHOR_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'PopoverTrigger'\n\ntype PopoverTriggerElement = HTMLElement | View\nexport type PopoverTriggerProps = YStackProps\n\nexport const PopoverTrigger = React.forwardRef<PopoverTriggerElement, PopoverTriggerProps>(\n (props: ScopedProps<PopoverTriggerProps>, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props\n const context = usePopoverInternalContext(TRIGGER_NAME, __scopePopover)\n const popperScope = usePopoverScope(__scopePopover)\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef)\n\n const trigger = (\n <YStack\n aria-haspopup=\"dialog\"\n aria-expanded={context.open}\n aria-controls={context.contentId}\n data-state={getState(context.open)}\n {...triggerProps}\n ref={composedTriggerRef}\n onPress={composeEventHandlers(props.onPress, context.onOpenToggle)}\n />\n )\n\n return context.hasCustomAnchor ? (\n trigger\n ) : (\n <PopperAnchor asChild {...popperScope}>\n {trigger}\n </PopperAnchor>\n )\n }\n)\n\nPopoverTrigger.displayName = TRIGGER_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopoverContent'\n\nexport type PopoverContentProps = PopoverContentTypeProps\n\ntype PopoverContentTypeElement = PopoverContentImplElement\n\nexport interface PopoverContentTypeProps\n extends Omit<PopoverContentImplProps, 'disableOutsidePointerEvents'> {\n /**\n * @see https://github.com/theKashey/react-remove-scroll#usage\n */\n allowPinchZoom?: RemoveScrollProps['allowPinchZoom']\n}\n\nexport const PopoverContent = React.forwardRef<PopoverContentTypeElement, PopoverContentTypeProps>(\n (props: ScopedProps<PopoverContentTypeProps>, forwardedRef) => {\n const { allowPinchZoom, trapFocus, disableRemoveScroll, ...contentModalProps } = props\n const context = usePopoverInternalContext(CONTENT_NAME, props.__scopePopover)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const composedRefs = useComposedRefs(forwardedRef, contentRef)\n const isRightClickOutsideRef = React.useRef(false)\n const themeName = useThemeName()\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n if (!context.open) return\n const content = contentRef.current\n if (content) return hideOthers(content)\n }, [context.open])\n\n return (\n <Portal>\n <Theme name={themeName}>\n <PopoverContentImpl\n {...contentModalProps}\n disableRemoveScroll={disableRemoveScroll}\n ref={composedRefs}\n // we make sure we're not trapping once it's been closed\n // (closed !== unmounted when animating out)\n trapFocus={trapFocus ?? context.open}\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault()\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus()\n })}\n onPointerDownOutside={composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick\n isRightClickOutsideRef.current = isRightClick\n },\n { checkDefaultPrevented: false }\n )}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkDefaultPrevented: false }\n )}\n />\n </Theme>\n </Portal>\n )\n }\n)\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PopoverContentImplElement = React.ElementRef<typeof PopperContent>\n\nexport interface PopoverContentImplProps\n extends PopperContentProps,\n Omit<DismissableProps, 'onDismiss' | 'children'> {\n /**\n * Whether focus should be trapped within the `Popover`\n * (default: false)\n */\n trapFocus?: FocusScopeProps['trapped']\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus']\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus']\n\n disableRemoveScroll?: boolean\n}\n\nconst PopoverContentImpl = React.forwardRef<PopoverContentImplElement, PopoverContentImplProps>(\n (props: ScopedProps<PopoverContentImplProps>, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n children,\n disableRemoveScroll,\n ...contentProps\n } = props\n const popperScope = usePopoverScope(__scopePopover)\n const context = usePopoverInternalContext(CONTENT_NAME, popperScope.__scopePopover)\n const showSheet = useShowPopoverSheet(context)\n // const popperContext = usePopperContext(CONTENT_NAME, popperScope.__scopePopper)\n\n if (showSheet) {\n return <PortalItem hostName={`${context.scopeKey}SheetContents`}>{children}</PortalItem>\n }\n\n // const handleDismiss = React.useCallback(() => context.onOpenChange(false), [])\n // <Dismissable\n // disableOutsidePointerEvents={disableOutsidePointerEvents}\n // // onInteractOutside={onInteractOutside}\n // onEscapeKeyDown={onEscapeKeyDown}\n // // onPointerDownOutside={onPointerDownOutside}\n // // onFocusOutside={onFocusOutside}\n // onDismiss={handleDismiss}\n // >\n\n return (\n <AnimatePresence>\n {!!context.open && (\n <PopperContent\n key=\"popper-content\"\n data-state={getState(context.open)}\n id={context.contentId}\n pointerEvents=\"auto\"\n {...popperScope}\n {...contentProps}\n ref={forwardedRef}\n >\n <RemoveScroll\n enabled={disableRemoveScroll ? false : context.open}\n allowPinchZoom\n // causes lots of bugs on touch web on site\n removeScrollBar={false}\n >\n {trapFocus === false ? (\n children\n ) : (\n <FocusScope\n loop\n trapped={trapFocus ?? context.open}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n >\n <div style={{ display: 'contents' }}>{children}</div>\n </FocusScope>\n )}\n </RemoveScroll>\n </PopperContent>\n )}\n </AnimatePresence>\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'PopoverClose'\n\ntype PopoverCloseElement = HTMLElement | View\nexport type PopoverCloseProps = YStackProps\n\nexport const PopoverClose = React.forwardRef<PopoverCloseElement, PopoverCloseProps>(\n (props: ScopedProps<PopoverCloseProps>, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props\n const context = usePopoverInternalContext(CLOSE_NAME, __scopePopover)\n return (\n <YStack\n {...closeProps}\n ref={forwardedRef}\n onPress={composeEventHandlers(props.onPress, () => context.onOpenChange(false))}\n />\n )\n }\n)\n\nPopoverClose.displayName = CLOSE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopoverArrow'\n\ntype PopoverArrowElement = HTMLElement | View\nexport type PopoverArrowProps = PopperArrowProps\n\nexport const PopoverArrow = React.forwardRef<PopoverArrowElement, PopoverArrowProps>(\n (props: ScopedProps<PopoverArrowProps>, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props\n const popperScope = usePopoverScope(__scopePopover)\n return <PopperArrow {...popperScope} {...arrowProps} ref={forwardedRef} />\n }\n)\n\nPopoverArrow.displayName = ARROW_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverSheetContents\n * -----------------------------------------------------------------------------------------------*/\n\nconst SHEET_CONTENTS_NAME = 'PopoverSheetContents'\n\nexport const PopoverSheetContents = ({ __scopePopover }: ScopedProps<{}>) => {\n const context = usePopoverInternalContext(SHEET_CONTENTS_NAME, __scopePopover)\n return <PortalHost name={`${context.scopeKey}SheetContents`}></PortalHost>\n}\n\nPopoverSheetContents.displayName = SHEET_CONTENTS_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nexport const Popover = withStaticProperties(\n ((props: ScopedProps<PopoverProps>) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n sheetBreakpoint = false,\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 [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange: onOpenChange,\n })\n\n const breakpointActive = useSheetBreakpointActive(sheetBreakpoint)\n\n const useFloatingContext = React.useCallback(\n (props: UseFloatingProps) => {\n const floating = useFloating({\n ...props,\n open,\n onOpenChange: setOpen,\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useFocus(floating.context, {\n enabled: !breakpointActive,\n }),\n useRole(floating.context, { role: 'dialog' }),\n useDismiss(floating.context, {\n enabled: !breakpointActive,\n }),\n ])\n return {\n ...floating,\n getReferenceProps,\n getFloatingProps,\n }\n },\n [breakpointActive, open, setOpen]\n )\n\n return (\n <FloatingOverrideContext.Provider value={useFloatingContext as any}>\n <Popper {...popperScope} {...restProps}>\n <PopoverProviderInternal\n scope={__scopePopover}\n scopeKey={__scopePopover ? Object.keys(__scopePopover)[0] : ''}\n sheetBreakpoint={sheetBreakpoint}\n contentId={useId()}\n triggerRef={triggerRef}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={useEvent(() => {\n console.log('wtf')\n if (open && breakpointActive) {\n return\n }\n setOpen(!open)\n })}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}\n onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}\n >\n <PopoverSheetController onChangeOpen={setOpen} __scopePopover={__scopePopover}>\n {children}\n </PopoverSheetController>\n </PopoverProviderInternal>\n </Popper>\n </FloatingOverrideContext.Provider>\n )\n }) as React.FC<PopoverProps>,\n {\n Anchor: PopoverAnchor,\n Arrow: PopoverArrow,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n SheetContents: PopoverSheetContents,\n Sheet,\n }\n)\n\nPopover.displayName = POPOVER_NAME\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed'\n}\n\nconst PopoverSheetController = (\n props: ScopedProps<{\n children: React.ReactNode\n onChangeOpen: React.Dispatch<React.SetStateAction<boolean>>\n }>\n) => {\n const context = usePopoverInternalContext('PopoverSheetController', props.__scopePopover)\n const showSheet = useShowPopoverSheet(context)\n const breakpointActive = useSheetBreakpointActive(context.sheetBreakpoint)\n const getShowSheet = useGet(showSheet)\n return (\n <SheetController\n onChangeOpen={(val) => {\n if (getShowSheet()) {\n props.onChangeOpen(val)\n }\n }}\n open={context.open}\n hidden={breakpointActive === false}\n >\n {props.children}\n </SheetController>\n )\n}\n\nconst useSheetBreakpointActive = (breakpoint?: MediaPropKeys | false) => {\n const media = useMedia()\n return breakpoint ? media[breakpoint] : false\n}\n\nconst useShowPopoverSheet = (context: PopoverContextValue) => {\n const breakpointActive = useSheetBreakpointActive(context.sheetBreakpoint)\n return context.open === false ? false : breakpointActive\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var floating_exports = {};
|
|
20
|
+
__export(floating_exports, {
|
|
21
|
+
UseFloatingProps: () => import_react_dom_interactions.UseFloatingProps,
|
|
22
|
+
useDismiss: () => import_react_dom_interactions.useDismiss,
|
|
23
|
+
useFloating: () => import_react_dom_interactions.useFloating,
|
|
24
|
+
useFocus: () => import_react_dom_interactions.useFocus,
|
|
25
|
+
useInteractions: () => import_react_dom_interactions.useInteractions,
|
|
26
|
+
useRole: () => import_react_dom_interactions.useRole
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(floating_exports);
|
|
29
|
+
var import_react_dom_interactions = require("@floating-ui/react-dom-interactions");
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
UseFloatingProps,
|
|
33
|
+
useDismiss,
|
|
34
|
+
useFloating,
|
|
35
|
+
useFocus,
|
|
36
|
+
useInteractions,
|
|
37
|
+
useRole
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=floating.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/floating.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n UseFloatingProps,\n useDismiss,\n useFloating,\n useFocus,\n useInteractions,\n useRole,\n} from '@floating-ui/react-dom-interactions'\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAOO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var floating_native_exports = {};
|
|
20
|
+
__export(floating_native_exports, {
|
|
21
|
+
useDismiss: () => useDismiss,
|
|
22
|
+
useFloating: () => useFloating,
|
|
23
|
+
useFocus: () => useFocus,
|
|
24
|
+
useInteractions: () => useInteractions,
|
|
25
|
+
useRole: () => useRole
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(floating_native_exports);
|
|
28
|
+
const useDismiss = () => {
|
|
29
|
+
};
|
|
30
|
+
const useFloating = () => {
|
|
31
|
+
return {
|
|
32
|
+
context: {},
|
|
33
|
+
reference: () => {
|
|
34
|
+
},
|
|
35
|
+
floating: () => {
|
|
36
|
+
},
|
|
37
|
+
refs: {
|
|
38
|
+
floating: {},
|
|
39
|
+
reference: {}
|
|
40
|
+
},
|
|
41
|
+
middlewareData: {}
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const useFocus = () => {
|
|
45
|
+
};
|
|
46
|
+
const useInteractions = () => {
|
|
47
|
+
return {};
|
|
48
|
+
};
|
|
49
|
+
const useRole = () => {
|
|
50
|
+
};
|
|
51
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
52
|
+
0 && (module.exports = {
|
|
53
|
+
useDismiss,
|
|
54
|
+
useFloating,
|
|
55
|
+
useFocus,
|
|
56
|
+
useInteractions,
|
|
57
|
+
useRole
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=floating.native.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/floating.native.ts"],
|
|
4
|
+
"sourcesContent": ["export const useDismiss = () => {}\nexport const useFloating = () => {\n return {\n context: {},\n reference: () => {},\n floating: () => {},\n refs: {\n floating: {},\n reference: {},\n },\n middlewareData: {},\n }\n}\nexport const useFocus = () => {}\nexport const useInteractions = () => {\n return {}\n}\nexport const useRole = () => {}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,aAAa,MAAM;AAAC;AAC1B,MAAM,cAAc,MAAM;AAC/B,SAAO;AAAA,IACL,SAAS,CAAC;AAAA,IACV,WAAW,MAAM;AAAA,IAAC;AAAA,IAClB,UAAU,MAAM;AAAA,IAAC;AAAA,IACjB,MAAM;AAAA,MACJ,UAAU,CAAC;AAAA,MACX,WAAW,CAAC;AAAA,IACd;AAAA,IACA,gBAAgB,CAAC;AAAA,EACnB;AACF;AACO,MAAM,WAAW,MAAM;AAAC;AACxB,MAAM,kBAAkB,MAAM;AACnC,SAAO,CAAC;AACV;AACO,MAAM,UAAU,MAAM;AAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
File without changes
|
package/dist/cjs/index.js.map
CHANGED
|
File without changes
|
package/dist/esm/Popover.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import "@tamagui/polyfill-dev";
|
|
2
|
-
import {
|
|
3
|
-
useDismiss,
|
|
4
|
-
useFloating,
|
|
5
|
-
useFocus,
|
|
6
|
-
useInteractions,
|
|
7
|
-
useRole
|
|
8
|
-
} from "@floating-ui/react-dom-interactions";
|
|
9
2
|
import { AnimatePresence } from "@tamagui/animate-presence";
|
|
10
3
|
import { hideOthers } from "@tamagui/aria-hidden";
|
|
11
4
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
@@ -13,7 +6,9 @@ import {
|
|
|
13
6
|
Theme,
|
|
14
7
|
composeEventHandlers,
|
|
15
8
|
useEvent,
|
|
9
|
+
useGet,
|
|
16
10
|
useId,
|
|
11
|
+
useMedia,
|
|
17
12
|
useThemeName,
|
|
18
13
|
withStaticProperties
|
|
19
14
|
} from "@tamagui/core";
|
|
@@ -27,11 +22,19 @@ import {
|
|
|
27
22
|
PopperContent,
|
|
28
23
|
createPopperScope
|
|
29
24
|
} from "@tamagui/popper";
|
|
30
|
-
import { Portal } from "@tamagui/portal";
|
|
25
|
+
import { Portal, PortalHost, PortalItem } from "@tamagui/portal";
|
|
31
26
|
import { RemoveScroll } from "@tamagui/remove-scroll";
|
|
27
|
+
import { Sheet, SheetController } from "@tamagui/sheet";
|
|
32
28
|
import { YStack } from "@tamagui/stacks";
|
|
33
29
|
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
34
30
|
import * as React from "react";
|
|
31
|
+
import {
|
|
32
|
+
useDismiss,
|
|
33
|
+
useFloating,
|
|
34
|
+
useFocus,
|
|
35
|
+
useInteractions,
|
|
36
|
+
useRole
|
|
37
|
+
} from "./floating";
|
|
35
38
|
const POPOVER_NAME = "Popover";
|
|
36
39
|
const [createPopoverContext, createPopoverScopeInternal] = createContextScope(POPOVER_NAME, [
|
|
37
40
|
createPopperScope
|
|
@@ -133,6 +136,12 @@ const PopoverContentImpl = React.forwardRef((props, forwardedRef) => {
|
|
|
133
136
|
} = props;
|
|
134
137
|
const popperScope = usePopoverScope(__scopePopover);
|
|
135
138
|
const context = usePopoverInternalContext(CONTENT_NAME, popperScope.__scopePopover);
|
|
139
|
+
const showSheet = useShowPopoverSheet(context);
|
|
140
|
+
if (showSheet) {
|
|
141
|
+
return /* @__PURE__ */ React.createElement(PortalItem, {
|
|
142
|
+
hostName: `${context.scopeKey}SheetContents`
|
|
143
|
+
}, children);
|
|
144
|
+
}
|
|
136
145
|
return /* @__PURE__ */ React.createElement(AnimatePresence, null, !!context.open && /* @__PURE__ */ React.createElement(PopperContent, {
|
|
137
146
|
key: "popper-content",
|
|
138
147
|
"data-state": getState(context.open),
|
|
@@ -176,6 +185,14 @@ const PopoverArrow = React.forwardRef((props, forwardedRef) => {
|
|
|
176
185
|
});
|
|
177
186
|
});
|
|
178
187
|
PopoverArrow.displayName = ARROW_NAME;
|
|
188
|
+
const SHEET_CONTENTS_NAME = "PopoverSheetContents";
|
|
189
|
+
const PopoverSheetContents = ({ __scopePopover }) => {
|
|
190
|
+
const context = usePopoverInternalContext(SHEET_CONTENTS_NAME, __scopePopover);
|
|
191
|
+
return /* @__PURE__ */ React.createElement(PortalHost, {
|
|
192
|
+
name: `${context.scopeKey}SheetContents`
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
PopoverSheetContents.displayName = SHEET_CONTENTS_NAME;
|
|
179
196
|
const Popover = withStaticProperties((props) => {
|
|
180
197
|
const {
|
|
181
198
|
__scopePopover,
|
|
@@ -183,6 +200,7 @@ const Popover = withStaticProperties((props) => {
|
|
|
183
200
|
open: openProp,
|
|
184
201
|
defaultOpen,
|
|
185
202
|
onOpenChange,
|
|
203
|
+
sheetBreakpoint = false,
|
|
186
204
|
...restProps
|
|
187
205
|
} = props;
|
|
188
206
|
const popperScope = usePopoverScope(__scopePopover);
|
|
@@ -193,6 +211,7 @@ const Popover = withStaticProperties((props) => {
|
|
|
193
211
|
defaultProp: defaultOpen || false,
|
|
194
212
|
onChange: onOpenChange
|
|
195
213
|
});
|
|
214
|
+
const breakpointActive = useSheetBreakpointActive(sheetBreakpoint);
|
|
196
215
|
const useFloatingContext = React.useCallback((props2) => {
|
|
197
216
|
const floating = useFloating({
|
|
198
217
|
...props2,
|
|
@@ -200,16 +219,20 @@ const Popover = withStaticProperties((props) => {
|
|
|
200
219
|
onOpenChange: setOpen
|
|
201
220
|
});
|
|
202
221
|
const { getReferenceProps, getFloatingProps } = useInteractions([
|
|
203
|
-
useFocus(floating.context
|
|
222
|
+
useFocus(floating.context, {
|
|
223
|
+
enabled: !breakpointActive
|
|
224
|
+
}),
|
|
204
225
|
useRole(floating.context, { role: "dialog" }),
|
|
205
|
-
useDismiss(floating.context
|
|
226
|
+
useDismiss(floating.context, {
|
|
227
|
+
enabled: !breakpointActive
|
|
228
|
+
})
|
|
206
229
|
]);
|
|
207
230
|
return {
|
|
208
231
|
...floating,
|
|
209
232
|
getReferenceProps,
|
|
210
233
|
getFloatingProps
|
|
211
234
|
};
|
|
212
|
-
}, [open, setOpen]);
|
|
235
|
+
}, [breakpointActive, open, setOpen]);
|
|
213
236
|
return /* @__PURE__ */ React.createElement(FloatingOverrideContext.Provider, {
|
|
214
237
|
value: useFloatingContext
|
|
215
238
|
}, /* @__PURE__ */ React.createElement(Popper, {
|
|
@@ -217,35 +240,69 @@ const Popover = withStaticProperties((props) => {
|
|
|
217
240
|
...restProps
|
|
218
241
|
}, /* @__PURE__ */ React.createElement(PopoverProviderInternal, {
|
|
219
242
|
scope: __scopePopover,
|
|
243
|
+
scopeKey: __scopePopover ? Object.keys(__scopePopover)[0] : "",
|
|
244
|
+
sheetBreakpoint,
|
|
220
245
|
contentId: useId(),
|
|
221
246
|
triggerRef,
|
|
222
247
|
open,
|
|
223
248
|
onOpenChange: setOpen,
|
|
224
249
|
onOpenToggle: useEvent(() => {
|
|
225
|
-
console.log("
|
|
250
|
+
console.log("wtf");
|
|
251
|
+
if (open && breakpointActive) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
226
254
|
setOpen(!open);
|
|
227
255
|
}),
|
|
228
256
|
hasCustomAnchor,
|
|
229
257
|
onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),
|
|
230
258
|
onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), [])
|
|
231
|
-
},
|
|
259
|
+
}, /* @__PURE__ */ React.createElement(PopoverSheetController, {
|
|
260
|
+
onChangeOpen: setOpen,
|
|
261
|
+
__scopePopover
|
|
262
|
+
}, children))));
|
|
232
263
|
}, {
|
|
233
264
|
Anchor: PopoverAnchor,
|
|
234
265
|
Arrow: PopoverArrow,
|
|
235
266
|
Trigger: PopoverTrigger,
|
|
236
267
|
Content: PopoverContent,
|
|
237
|
-
Close: PopoverClose
|
|
268
|
+
Close: PopoverClose,
|
|
269
|
+
SheetContents: PopoverSheetContents,
|
|
270
|
+
Sheet
|
|
238
271
|
});
|
|
239
272
|
Popover.displayName = POPOVER_NAME;
|
|
240
273
|
function getState(open) {
|
|
241
274
|
return open ? "open" : "closed";
|
|
242
275
|
}
|
|
276
|
+
const PopoverSheetController = (props) => {
|
|
277
|
+
const context = usePopoverInternalContext("PopoverSheetController", props.__scopePopover);
|
|
278
|
+
const showSheet = useShowPopoverSheet(context);
|
|
279
|
+
const breakpointActive = useSheetBreakpointActive(context.sheetBreakpoint);
|
|
280
|
+
const getShowSheet = useGet(showSheet);
|
|
281
|
+
return /* @__PURE__ */ React.createElement(SheetController, {
|
|
282
|
+
onChangeOpen: (val) => {
|
|
283
|
+
if (getShowSheet()) {
|
|
284
|
+
props.onChangeOpen(val);
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
open: context.open,
|
|
288
|
+
hidden: breakpointActive === false
|
|
289
|
+
}, props.children);
|
|
290
|
+
};
|
|
291
|
+
const useSheetBreakpointActive = (breakpoint) => {
|
|
292
|
+
const media = useMedia();
|
|
293
|
+
return breakpoint ? media[breakpoint] : false;
|
|
294
|
+
};
|
|
295
|
+
const useShowPopoverSheet = (context) => {
|
|
296
|
+
const breakpointActive = useSheetBreakpointActive(context.sheetBreakpoint);
|
|
297
|
+
return context.open === false ? false : breakpointActive;
|
|
298
|
+
};
|
|
243
299
|
export {
|
|
244
300
|
Popover,
|
|
245
301
|
PopoverAnchor,
|
|
246
302
|
PopoverArrow,
|
|
247
303
|
PopoverClose,
|
|
248
304
|
PopoverContent,
|
|
305
|
+
PopoverSheetContents,
|
|
249
306
|
PopoverTrigger,
|
|
250
307
|
__PopoverProviderInternal,
|
|
251
308
|
createPopoverScope,
|