@yahoo/uds-mobile 2.17.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/generateTheme.mjs +7 -2
- package/dist/bin/mobile/scripts/utils/configToRNMappings.mjs +4 -0
- package/dist/components/Popover/Popover.cjs +92 -0
- package/dist/components/Popover/Popover.d.cts +26 -0
- package/dist/components/Popover/Popover.d.cts.map +1 -0
- package/dist/components/Popover/Popover.d.ts +26 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -0
- package/dist/components/Popover/Popover.js +92 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/PopoverContent.cjs +124 -0
- package/dist/components/Popover/PopoverContent.d.cts +15 -0
- package/dist/components/Popover/PopoverContent.d.cts.map +1 -0
- package/dist/components/Popover/PopoverContent.d.ts +15 -0
- package/dist/components/Popover/PopoverContent.d.ts.map +1 -0
- package/dist/components/Popover/PopoverContent.js +124 -0
- package/dist/components/Popover/PopoverContent.js.map +1 -0
- package/dist/components/Popover/PopoverContext.cjs +14 -0
- package/dist/components/Popover/PopoverContext.d.cts +10 -0
- package/dist/components/Popover/PopoverContext.d.cts.map +1 -0
- package/dist/components/Popover/PopoverContext.d.ts +10 -0
- package/dist/components/Popover/PopoverContext.d.ts.map +1 -0
- package/dist/components/Popover/PopoverContext.js +13 -0
- package/dist/components/Popover/PopoverContext.js.map +1 -0
- package/dist/components/Popover/PopoverDescription.cjs +23 -0
- package/dist/components/Popover/PopoverDescription.d.cts +15 -0
- package/dist/components/Popover/PopoverDescription.d.cts.map +1 -0
- package/dist/components/Popover/PopoverDescription.d.ts +15 -0
- package/dist/components/Popover/PopoverDescription.d.ts.map +1 -0
- package/dist/components/Popover/PopoverDescription.js +23 -0
- package/dist/components/Popover/PopoverDescription.js.map +1 -0
- package/dist/components/Popover/PopoverDismiss.cjs +22 -0
- package/dist/components/Popover/PopoverDismiss.d.cts +15 -0
- package/dist/components/Popover/PopoverDismiss.d.cts.map +1 -0
- package/dist/components/Popover/PopoverDismiss.d.ts +15 -0
- package/dist/components/Popover/PopoverDismiss.d.ts.map +1 -0
- package/dist/components/Popover/PopoverDismiss.js +22 -0
- package/dist/components/Popover/PopoverDismiss.js.map +1 -0
- package/dist/components/Popover/PopoverFrame.cjs +56 -0
- package/dist/components/Popover/PopoverFrame.d.cts +23 -0
- package/dist/components/Popover/PopoverFrame.d.cts.map +1 -0
- package/dist/components/Popover/PopoverFrame.d.ts +23 -0
- package/dist/components/Popover/PopoverFrame.d.ts.map +1 -0
- package/dist/components/Popover/PopoverFrame.js +55 -0
- package/dist/components/Popover/PopoverFrame.js.map +1 -0
- package/dist/components/Popover/PopoverPortalLayer.cjs +45 -0
- package/dist/components/Popover/PopoverPortalLayer.d.cts +15 -0
- package/dist/components/Popover/PopoverPortalLayer.d.cts.map +1 -0
- package/dist/components/Popover/PopoverPortalLayer.d.ts +15 -0
- package/dist/components/Popover/PopoverPortalLayer.d.ts.map +1 -0
- package/dist/components/Popover/PopoverPortalLayer.js +45 -0
- package/dist/components/Popover/PopoverPortalLayer.js.map +1 -0
- package/dist/components/Popover/PopoverSurface.cjs +228 -0
- package/dist/components/Popover/PopoverSurface.d.cts +26 -0
- package/dist/components/Popover/PopoverSurface.d.cts.map +1 -0
- package/dist/components/Popover/PopoverSurface.d.ts +26 -0
- package/dist/components/Popover/PopoverSurface.d.ts.map +1 -0
- package/dist/components/Popover/PopoverSurface.js +227 -0
- package/dist/components/Popover/PopoverSurface.js.map +1 -0
- package/dist/components/Popover/PopoverTitle.cjs +23 -0
- package/dist/components/Popover/PopoverTitle.d.cts +15 -0
- package/dist/components/Popover/PopoverTitle.d.cts.map +1 -0
- package/dist/components/Popover/PopoverTitle.d.ts +15 -0
- package/dist/components/Popover/PopoverTitle.d.ts.map +1 -0
- package/dist/components/Popover/PopoverTitle.js +23 -0
- package/dist/components/Popover/PopoverTitle.js.map +1 -0
- package/dist/components/Popover/PopoverTrigger.cjs +88 -0
- package/dist/components/Popover/PopoverTrigger.d.cts +15 -0
- package/dist/components/Popover/PopoverTrigger.d.cts.map +1 -0
- package/dist/components/Popover/PopoverTrigger.d.ts +15 -0
- package/dist/components/Popover/PopoverTrigger.d.ts.map +1 -0
- package/dist/components/Popover/PopoverTrigger.js +88 -0
- package/dist/components/Popover/PopoverTrigger.js.map +1 -0
- package/dist/components/Popover/index.cjs +14 -0
- package/dist/components/Popover/index.d.cts +9 -0
- package/dist/components/Popover/index.d.ts +9 -0
- package/dist/components/Popover/index.js +8 -0
- package/dist/components/Popover/popoverFrameGeometry.cjs +177 -0
- package/dist/components/Popover/popoverFrameGeometry.d.cts +48 -0
- package/dist/components/Popover/popoverFrameGeometry.d.cts.map +1 -0
- package/dist/components/Popover/popoverFrameGeometry.d.ts +48 -0
- package/dist/components/Popover/popoverFrameGeometry.d.ts.map +1 -0
- package/dist/components/Popover/popoverFrameGeometry.js +177 -0
- package/dist/components/Popover/popoverFrameGeometry.js.map +1 -0
- package/dist/components/Popover/popoverLayer.cjs +16 -0
- package/dist/components/Popover/popoverLayer.d.cts +8 -0
- package/dist/components/Popover/popoverLayer.d.cts.map +1 -0
- package/dist/components/Popover/popoverLayer.d.ts +8 -0
- package/dist/components/Popover/popoverLayer.d.ts.map +1 -0
- package/dist/components/Popover/popoverLayer.js +16 -0
- package/dist/components/Popover/popoverLayer.js.map +1 -0
- package/dist/components/Popover/types.cjs +1 -0
- package/dist/components/Popover/types.d.cts +170 -0
- package/dist/components/Popover/types.d.cts.map +1 -0
- package/dist/components/Popover/types.d.ts +170 -0
- package/dist/components/Popover/types.d.ts.map +1 -0
- package/dist/components/Popover/types.js +1 -0
- package/dist/components/Toast/ToastProvider.cjs +1 -1
- package/dist/components/Toast/ToastProvider.js +1 -1
- package/dist/components/internal/Overlay/index.cjs +4 -0
- package/dist/components/internal/Overlay/index.d.cts +4 -2
- package/dist/components/internal/Overlay/index.d.ts +4 -2
- package/dist/components/internal/Overlay/index.js +3 -1
- package/dist/components/internal/Overlay/types.d.cts +47 -1
- package/dist/components/internal/Overlay/types.d.cts.map +1 -1
- package/dist/components/internal/Overlay/types.d.ts +47 -1
- package/dist/components/internal/Overlay/types.d.ts.map +1 -1
- package/dist/components/internal/Overlay/useAnchoredPosition.cjs +225 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.cts +22 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.cts.map +1 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.ts +22 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.ts.map +1 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.js +225 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.js.map +1 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.cjs +22 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.cts +12 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.cts.map +1 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.ts +12 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.ts.map +1 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.js +22 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.js.map +1 -0
- package/dist/jest/mocks/react-native.cjs +14 -0
- package/dist/jest/mocks/react-native.d.cts +29 -1
- package/dist/jest/mocks/react-native.d.cts.map +1 -1
- package/dist/jest/mocks/react-native.d.ts +29 -1
- package/dist/jest/mocks/react-native.d.ts.map +1 -1
- package/dist/jest/mocks/react-native.js +13 -1
- package/dist/jest/mocks/react-native.js.map +1 -1
- package/dist/jest/mocks/styles.cjs +60 -0
- package/dist/jest/mocks/styles.d.cts +5 -2
- package/dist/jest/mocks/styles.d.cts.map +1 -1
- package/dist/jest/mocks/styles.d.ts +5 -2
- package/dist/jest/mocks/styles.d.ts.map +1 -1
- package/dist/jest/mocks/styles.js +58 -1
- package/dist/jest/mocks/styles.js.map +1 -1
- package/dist/jest/setup.cjs +46 -3
- package/dist/jest/setup.d.cts.map +1 -1
- package/dist/jest/setup.d.ts.map +1 -1
- package/dist/jest/setup.js +46 -3
- package/dist/jest/setup.js.map +1 -1
- package/dist/types/dist/index.d.cts.map +1 -1
- package/dist/types/dist/index.d.ts.map +1 -1
- package/generated/styles.cjs +6 -0
- package/generated/styles.d.ts +13 -1
- package/generated/styles.mjs +6 -0
- package/generated/unistyles.d.ts +13 -0
- package/package.json +11 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
//#region src/components/Popover/PopoverContext.tsx
|
|
4
|
+
const PopoverContext = createContext(null);
|
|
5
|
+
function usePopoverContext() {
|
|
6
|
+
const context = useContext(PopoverContext);
|
|
7
|
+
if (!context) throw new Error("Popover components must be used inside a Popover.");
|
|
8
|
+
return context;
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { PopoverContext, usePopoverContext };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=PopoverContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverContext.js","names":[],"sources":["../../../src/components/Popover/PopoverContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { PopoverContextValue } from './types';\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext(): PopoverContextValue {\n const context = useContext(PopoverContext);\n\n if (!context) {\n throw new Error('Popover components must be used inside a Popover.');\n }\n\n return context;\n}\n\nexport { PopoverContext, usePopoverContext };\n"],"mappings":";;;AAIA,MAAM,iBAAiB,cAA0C,KAAK;AAEtE,SAAS,oBAAyC;CAChD,MAAM,UAAU,WAAW,eAAe;CAE1C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,oDAAoD;CAGtE,OAAO"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_Text = require("../Text.cjs");
|
|
5
|
+
let react = require("react");
|
|
6
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
+
//#region src/components/Popover/PopoverDescription.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Description text for {@link PopoverContent}.
|
|
10
|
+
*
|
|
11
|
+
* Provides the default popover body typography while accepting the standard
|
|
12
|
+
* mobile {@link Text} props.
|
|
13
|
+
*/
|
|
14
|
+
const PopoverDescription = (0, react.memo)(function PopoverDescription({ variant = "label2", color = "secondary", ...props }) {
|
|
15
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_Text.Text, {
|
|
16
|
+
variant,
|
|
17
|
+
color,
|
|
18
|
+
...props
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
PopoverDescription.displayName = "PopoverDescription";
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.PopoverDescription = PopoverDescription;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import { TextProps } from "../Text.cjs";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Popover/PopoverDescription.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Description text for {@link PopoverContent}.
|
|
8
|
+
*
|
|
9
|
+
* Provides the default popover body typography while accepting the standard
|
|
10
|
+
* mobile {@link Text} props.
|
|
11
|
+
*/
|
|
12
|
+
declare const PopoverDescription: _$react.NamedExoticComponent<TextProps>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverDescription };
|
|
15
|
+
//# sourceMappingURL=PopoverDescription.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverDescription.d.cts","names":[],"sources":["../../../src/components/Popover/PopoverDescription.tsx"],"mappings":";;;;;;;;;AAWwB;;cAAlB,kBAAA,EAAkB,OAAA,CAAA,oBAAA,CAMtB,SAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import { TextProps } from "../Text.js";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Popover/PopoverDescription.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Description text for {@link PopoverContent}.
|
|
8
|
+
*
|
|
9
|
+
* Provides the default popover body typography while accepting the standard
|
|
10
|
+
* mobile {@link Text} props.
|
|
11
|
+
*/
|
|
12
|
+
declare const PopoverDescription: _$react.NamedExoticComponent<TextProps>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverDescription };
|
|
15
|
+
//# sourceMappingURL=PopoverDescription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverDescription.d.ts","names":[],"sources":["../../../src/components/Popover/PopoverDescription.tsx"],"mappings":";;;;;;;;;AAWwB;;cAAlB,kBAAA,EAAkB,OAAA,CAAA,oBAAA,CAMtB,SAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { Text } from "../Text.js";
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/Popover/PopoverDescription.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Description text for {@link PopoverContent}.
|
|
8
|
+
*
|
|
9
|
+
* Provides the default popover body typography while accepting the standard
|
|
10
|
+
* mobile {@link Text} props.
|
|
11
|
+
*/
|
|
12
|
+
const PopoverDescription = memo(function PopoverDescription({ variant = "label2", color = "secondary", ...props }) {
|
|
13
|
+
return /* @__PURE__ */ jsx(Text, {
|
|
14
|
+
variant,
|
|
15
|
+
color,
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
PopoverDescription.displayName = "PopoverDescription";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { PopoverDescription };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=PopoverDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverDescription.js","names":[],"sources":["../../../src/components/Popover/PopoverDescription.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport { Text } from '../Text';\nimport type { PopoverDescriptionProps } from './types';\n\n/**\n * Description text for {@link PopoverContent}.\n *\n * Provides the default popover body typography while accepting the standard\n * mobile {@link Text} props.\n */\nconst PopoverDescription = memo(function PopoverDescription({\n variant = 'label2',\n color = 'secondary',\n ...props\n}: PopoverDescriptionProps) {\n return <Text variant={variant} color={color} {...props} />;\n});\n\nPopoverDescription.displayName = 'PopoverDescription';\n\nexport { PopoverDescription };\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,qBAAqB,KAAK,SAAS,mBAAmB,EAC1D,UAAU,UACV,QAAQ,aACR,GAAG,SACuB;CAC1B,OAAO,oBAAC,MAAD;EAAe;EAAgB;EAAO,GAAI;EAAS,CAAA;EAC1D;AAEF,mBAAmB,cAAc"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_Popover_PopoverContext = require("./PopoverContext.cjs");
|
|
5
|
+
let react = require("react");
|
|
6
|
+
//#region src/components/Popover/PopoverDismiss.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Dismiss control for {@link Popover}.
|
|
9
|
+
*
|
|
10
|
+
* Clones the rendered element with an `onPress` handler that closes the nearest
|
|
11
|
+
* popover.
|
|
12
|
+
*/
|
|
13
|
+
const PopoverDismiss = (0, react.memo)(function PopoverDismiss({ render }) {
|
|
14
|
+
const context = require_components_Popover_PopoverContext.usePopoverContext();
|
|
15
|
+
return (0, react.cloneElement)(render, { onPress: (0, react.useCallback)((event) => {
|
|
16
|
+
render.props.onPress?.(event);
|
|
17
|
+
context.setOpen(false);
|
|
18
|
+
}, [context, render.props]) });
|
|
19
|
+
});
|
|
20
|
+
PopoverDismiss.displayName = "PopoverDismiss";
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.PopoverDismiss = PopoverDismiss;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import { PopoverDismissProps } from "./types.cjs";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Popover/PopoverDismiss.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Dismiss control for {@link Popover}.
|
|
8
|
+
*
|
|
9
|
+
* Clones the rendered element with an `onPress` handler that closes the nearest
|
|
10
|
+
* popover.
|
|
11
|
+
*/
|
|
12
|
+
declare const PopoverDismiss: _$react.NamedExoticComponent<PopoverDismissProps>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverDismiss };
|
|
15
|
+
//# sourceMappingURL=PopoverDismiss.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverDismiss.d.cts","names":[],"sources":["../../../src/components/Popover/PopoverDismiss.tsx"],"mappings":";;;;;;;;AAKmD;;;cAQ7C,cAAA,EAAc,OAAA,CAAA,oBAAA,CAAA,mBAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import { PopoverDismissProps } from "./types.js";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Popover/PopoverDismiss.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Dismiss control for {@link Popover}.
|
|
8
|
+
*
|
|
9
|
+
* Clones the rendered element with an `onPress` handler that closes the nearest
|
|
10
|
+
* popover.
|
|
11
|
+
*/
|
|
12
|
+
declare const PopoverDismiss: _$react.NamedExoticComponent<PopoverDismissProps>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverDismiss };
|
|
15
|
+
//# sourceMappingURL=PopoverDismiss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverDismiss.d.ts","names":[],"sources":["../../../src/components/Popover/PopoverDismiss.tsx"],"mappings":";;;;;;;;AAKmD;;;cAQ7C,cAAA,EAAc,OAAA,CAAA,oBAAA,CAAA,mBAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { usePopoverContext } from "./PopoverContext.js";
|
|
3
|
+
import { cloneElement, memo, useCallback } from "react";
|
|
4
|
+
//#region src/components/Popover/PopoverDismiss.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Dismiss control for {@link Popover}.
|
|
7
|
+
*
|
|
8
|
+
* Clones the rendered element with an `onPress` handler that closes the nearest
|
|
9
|
+
* popover.
|
|
10
|
+
*/
|
|
11
|
+
const PopoverDismiss = memo(function PopoverDismiss({ render }) {
|
|
12
|
+
const context = usePopoverContext();
|
|
13
|
+
return cloneElement(render, { onPress: useCallback((event) => {
|
|
14
|
+
render.props.onPress?.(event);
|
|
15
|
+
context.setOpen(false);
|
|
16
|
+
}, [context, render.props]) });
|
|
17
|
+
});
|
|
18
|
+
PopoverDismiss.displayName = "PopoverDismiss";
|
|
19
|
+
//#endregion
|
|
20
|
+
export { PopoverDismiss };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=PopoverDismiss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverDismiss.js","names":[],"sources":["../../../src/components/Popover/PopoverDismiss.tsx"],"sourcesContent":["/* eslint-disable react/prop-types -- render-prop child props are validated by TypeScript. */\nimport { cloneElement, memo, useCallback } from 'react';\nimport type { GestureResponderEvent } from 'react-native';\n\nimport { usePopoverContext } from './PopoverContext';\nimport type { PopoverDismissProps } from './types';\n\n/**\n * Dismiss control for {@link Popover}.\n *\n * Clones the rendered element with an `onPress` handler that closes the nearest\n * popover.\n */\nconst PopoverDismiss = memo(function PopoverDismiss({ render }: PopoverDismissProps) {\n const context = usePopoverContext();\n\n const handlePress = useCallback(\n (event: GestureResponderEvent) => {\n render.props.onPress?.(event);\n context.setOpen(false);\n },\n [context, render.props],\n );\n\n return cloneElement(render, { onPress: handlePress });\n});\n\nPopoverDismiss.displayName = 'PopoverDismiss';\n\nexport { PopoverDismiss };\n"],"mappings":";;;;;;;;;;AAaA,MAAM,iBAAiB,KAAK,SAAS,eAAe,EAAE,UAA+B;CACnF,MAAM,UAAU,mBAAmB;CAUnC,OAAO,aAAa,QAAQ,EAAE,SARV,aACjB,UAAiC;EAChC,OAAO,MAAM,UAAU,MAAM;EAC7B,QAAQ,QAAQ,MAAM;IAExB,CAAC,SAAS,OAAO,MAAM,CAGyB,EAAE,CAAC;EACrD;AAEF,eAAe,cAAc"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_Popover_popoverFrameGeometry = require("./popoverFrameGeometry.cjs");
|
|
5
|
+
let react = require("react");
|
|
6
|
+
let react_native = require("react-native");
|
|
7
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
|
+
let react_native_svg = require("react-native-svg");
|
|
9
|
+
react_native_svg = require_runtime.__toESM(react_native_svg);
|
|
10
|
+
//#region src/components/Popover/PopoverFrame.tsx
|
|
11
|
+
function getNumber(value) {
|
|
12
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
13
|
+
}
|
|
14
|
+
const PopoverFrame = (0, react.memo)(function PopoverFrame({ arrowHeight, arrowStyle, arrowWidth, borderRadius, fill, placement, stroke = "transparent", strokeWidth = 0, surfaceHeight, surfaceWidth, testID = "uds-popover-frame" }) {
|
|
15
|
+
if (surfaceWidth <= 0 || surfaceHeight <= 0) return null;
|
|
16
|
+
const physicalPlacement = require_components_Popover_popoverFrameGeometry.resolvePopoverFramePlacement(placement, react_native.I18nManager.isRTL);
|
|
17
|
+
const flattenedArrowStyle = react_native.StyleSheet.flatten(arrowStyle) ?? {};
|
|
18
|
+
const { fillPath, frameStyle, strokePath, viewBox } = require_components_Popover_popoverFrameGeometry.getPopoverFrameGeometry({
|
|
19
|
+
arrowHeight,
|
|
20
|
+
arrowOffset: physicalPlacement === "top" || physicalPlacement === "bottom" ? getNumber(flattenedArrowStyle.left) : getNumber(flattenedArrowStyle.top),
|
|
21
|
+
arrowWidth,
|
|
22
|
+
borderRadius,
|
|
23
|
+
placement: physicalPlacement,
|
|
24
|
+
strokeWidth,
|
|
25
|
+
surfaceHeight,
|
|
26
|
+
surfaceWidth
|
|
27
|
+
});
|
|
28
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.View, {
|
|
29
|
+
pointerEvents: "none",
|
|
30
|
+
style: [styles.frame, frameStyle],
|
|
31
|
+
testID,
|
|
32
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_native_svg.default, {
|
|
33
|
+
width: frameStyle.width,
|
|
34
|
+
height: frameStyle.height,
|
|
35
|
+
viewBox,
|
|
36
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native_svg.Path, {
|
|
37
|
+
d: fillPath,
|
|
38
|
+
fill,
|
|
39
|
+
stroke: "none"
|
|
40
|
+
}), strokeWidth > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native_svg.Path, {
|
|
41
|
+
d: strokePath,
|
|
42
|
+
fill: "none",
|
|
43
|
+
stroke,
|
|
44
|
+
strokeLinejoin: "round",
|
|
45
|
+
strokeWidth
|
|
46
|
+
})]
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
const styles = react_native.StyleSheet.create({ frame: {
|
|
51
|
+
position: "absolute",
|
|
52
|
+
zIndex: 2
|
|
53
|
+
} });
|
|
54
|
+
PopoverFrame.displayName = "PopoverFrame";
|
|
55
|
+
//#endregion
|
|
56
|
+
exports.PopoverFrame = PopoverFrame;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
import { AnchoredPlacement } from "../internal/Overlay/types.cjs";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
import { StyleProp, ViewStyle } from "react-native";
|
|
5
|
+
|
|
6
|
+
//#region src/components/Popover/PopoverFrame.d.ts
|
|
7
|
+
interface PopoverFrameProps {
|
|
8
|
+
arrowHeight: number;
|
|
9
|
+
arrowStyle: StyleProp<ViewStyle>;
|
|
10
|
+
arrowWidth: number;
|
|
11
|
+
borderRadius: number;
|
|
12
|
+
fill: string;
|
|
13
|
+
placement: AnchoredPlacement;
|
|
14
|
+
stroke?: string;
|
|
15
|
+
strokeWidth?: number;
|
|
16
|
+
surfaceHeight: number;
|
|
17
|
+
surfaceWidth: number;
|
|
18
|
+
testID?: string;
|
|
19
|
+
}
|
|
20
|
+
declare const PopoverFrame: _$react.NamedExoticComponent<PopoverFrameProps>;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { PopoverFrame };
|
|
23
|
+
//# sourceMappingURL=PopoverFrame.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverFrame.d.cts","names":[],"sources":["../../../src/components/Popover/PopoverFrame.tsx"],"mappings":";;;;;;UAQU,iBAAA;EACR,WAAA;EACA,UAAA,EAAY,SAAA,CAAU,SAAA;EACtB,UAAA;EACA,YAAA;EACA,IAAA;EACA,SAAA,EAAW,iBAAA;EACX,MAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,MAAA;AAAA;AAAA,cAOI,YAAA,EAAY,OAAA,CAAA,oBAAA,CAAA,iBAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
import { AnchoredPlacement } from "../internal/Overlay/types.js";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
import { StyleProp, ViewStyle } from "react-native";
|
|
5
|
+
|
|
6
|
+
//#region src/components/Popover/PopoverFrame.d.ts
|
|
7
|
+
interface PopoverFrameProps {
|
|
8
|
+
arrowHeight: number;
|
|
9
|
+
arrowStyle: StyleProp<ViewStyle>;
|
|
10
|
+
arrowWidth: number;
|
|
11
|
+
borderRadius: number;
|
|
12
|
+
fill: string;
|
|
13
|
+
placement: AnchoredPlacement;
|
|
14
|
+
stroke?: string;
|
|
15
|
+
strokeWidth?: number;
|
|
16
|
+
surfaceHeight: number;
|
|
17
|
+
surfaceWidth: number;
|
|
18
|
+
testID?: string;
|
|
19
|
+
}
|
|
20
|
+
declare const PopoverFrame: _$react.NamedExoticComponent<PopoverFrameProps>;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { PopoverFrame };
|
|
23
|
+
//# sourceMappingURL=PopoverFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverFrame.d.ts","names":[],"sources":["../../../src/components/Popover/PopoverFrame.tsx"],"mappings":";;;;;;UAQU,iBAAA;EACR,WAAA;EACA,UAAA,EAAY,SAAA,CAAU,SAAA;EACtB,UAAA;EACA,YAAA;EACA,IAAA;EACA,SAAA,EAAW,iBAAA;EACX,MAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,MAAA;AAAA;AAAA,cAOI,YAAA,EAAY,OAAA,CAAA,oBAAA,CAAA,iBAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { getPopoverFrameGeometry, resolvePopoverFramePlacement } from "./popoverFrameGeometry.js";
|
|
3
|
+
import { memo } from "react";
|
|
4
|
+
import { I18nManager, StyleSheet, View } from "react-native";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import Svg, { Path } from "react-native-svg";
|
|
7
|
+
//#region src/components/Popover/PopoverFrame.tsx
|
|
8
|
+
function getNumber(value) {
|
|
9
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
10
|
+
}
|
|
11
|
+
const PopoverFrame = memo(function PopoverFrame({ arrowHeight, arrowStyle, arrowWidth, borderRadius, fill, placement, stroke = "transparent", strokeWidth = 0, surfaceHeight, surfaceWidth, testID = "uds-popover-frame" }) {
|
|
12
|
+
if (surfaceWidth <= 0 || surfaceHeight <= 0) return null;
|
|
13
|
+
const physicalPlacement = resolvePopoverFramePlacement(placement, I18nManager.isRTL);
|
|
14
|
+
const flattenedArrowStyle = StyleSheet.flatten(arrowStyle) ?? {};
|
|
15
|
+
const { fillPath, frameStyle, strokePath, viewBox } = getPopoverFrameGeometry({
|
|
16
|
+
arrowHeight,
|
|
17
|
+
arrowOffset: physicalPlacement === "top" || physicalPlacement === "bottom" ? getNumber(flattenedArrowStyle.left) : getNumber(flattenedArrowStyle.top),
|
|
18
|
+
arrowWidth,
|
|
19
|
+
borderRadius,
|
|
20
|
+
placement: physicalPlacement,
|
|
21
|
+
strokeWidth,
|
|
22
|
+
surfaceHeight,
|
|
23
|
+
surfaceWidth
|
|
24
|
+
});
|
|
25
|
+
return /* @__PURE__ */ jsx(View, {
|
|
26
|
+
pointerEvents: "none",
|
|
27
|
+
style: [styles.frame, frameStyle],
|
|
28
|
+
testID,
|
|
29
|
+
children: /* @__PURE__ */ jsxs(Svg, {
|
|
30
|
+
width: frameStyle.width,
|
|
31
|
+
height: frameStyle.height,
|
|
32
|
+
viewBox,
|
|
33
|
+
children: [/* @__PURE__ */ jsx(Path, {
|
|
34
|
+
d: fillPath,
|
|
35
|
+
fill,
|
|
36
|
+
stroke: "none"
|
|
37
|
+
}), strokeWidth > 0 && /* @__PURE__ */ jsx(Path, {
|
|
38
|
+
d: strokePath,
|
|
39
|
+
fill: "none",
|
|
40
|
+
stroke,
|
|
41
|
+
strokeLinejoin: "round",
|
|
42
|
+
strokeWidth
|
|
43
|
+
})]
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
const styles = StyleSheet.create({ frame: {
|
|
48
|
+
position: "absolute",
|
|
49
|
+
zIndex: 2
|
|
50
|
+
} });
|
|
51
|
+
PopoverFrame.displayName = "PopoverFrame";
|
|
52
|
+
//#endregion
|
|
53
|
+
export { PopoverFrame };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=PopoverFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverFrame.js","names":[],"sources":["../../../src/components/Popover/PopoverFrame.tsx"],"sourcesContent":["import { memo } from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { I18nManager, StyleSheet, View } from 'react-native';\nimport Svg, { Path } from 'react-native-svg';\n\nimport type { AnchoredPlacement } from '../internal/Overlay';\nimport { getPopoverFrameGeometry, resolvePopoverFramePlacement } from './popoverFrameGeometry';\n\ninterface PopoverFrameProps {\n arrowHeight: number;\n arrowStyle: StyleProp<ViewStyle>;\n arrowWidth: number;\n borderRadius: number;\n fill: string;\n placement: AnchoredPlacement;\n stroke?: string;\n strokeWidth?: number;\n surfaceHeight: number;\n surfaceWidth: number;\n testID?: string;\n}\n\nfunction getNumber(value: unknown) {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0;\n}\n\nconst PopoverFrame = memo(function PopoverFrame({\n arrowHeight,\n arrowStyle,\n arrowWidth,\n borderRadius,\n fill,\n placement,\n stroke = 'transparent',\n strokeWidth = 0,\n surfaceHeight,\n surfaceWidth,\n testID = 'uds-popover-frame',\n}: PopoverFrameProps) {\n if (surfaceWidth <= 0 || surfaceHeight <= 0) {\n return null;\n }\n\n const physicalPlacement = resolvePopoverFramePlacement(placement, I18nManager.isRTL);\n const flattenedArrowStyle = (StyleSheet.flatten(arrowStyle) ?? {}) as ViewStyle;\n const arrowOffset =\n physicalPlacement === 'top' || physicalPlacement === 'bottom'\n ? getNumber(flattenedArrowStyle.left)\n : getNumber(flattenedArrowStyle.top);\n const { fillPath, frameStyle, strokePath, viewBox } = getPopoverFrameGeometry({\n arrowHeight,\n arrowOffset,\n arrowWidth,\n borderRadius,\n placement: physicalPlacement,\n strokeWidth,\n surfaceHeight,\n surfaceWidth,\n });\n\n return (\n <View pointerEvents=\"none\" style={[styles.frame, frameStyle]} testID={testID}>\n <Svg width={frameStyle.width} height={frameStyle.height} viewBox={viewBox}>\n <Path d={fillPath} fill={fill} stroke=\"none\" />\n {strokeWidth > 0 && (\n <Path\n d={strokePath}\n fill=\"none\"\n stroke={stroke}\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n )}\n </Svg>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n frame: {\n position: 'absolute',\n zIndex: 2,\n },\n});\n\nPopoverFrame.displayName = 'PopoverFrame';\n\nexport { PopoverFrame };\n"],"mappings":";;;;;;;AAsBA,SAAS,UAAU,OAAgB;CACjC,OAAO,OAAO,UAAU,YAAY,OAAO,SAAS,MAAM,GAAG,QAAQ;;AAGvE,MAAM,eAAe,KAAK,SAAS,aAAa,EAC9C,aACA,YACA,YACA,cACA,MACA,WACA,SAAS,eACT,cAAc,GACd,eACA,cACA,SAAS,uBACW;CACpB,IAAI,gBAAgB,KAAK,iBAAiB,GACxC,OAAO;CAGT,MAAM,oBAAoB,6BAA6B,WAAW,YAAY,MAAM;CACpF,MAAM,sBAAuB,WAAW,QAAQ,WAAW,IAAI,EAAE;CAKjE,MAAM,EAAE,UAAU,YAAY,YAAY,YAAY,wBAAwB;EAC5E;EACA,aALA,sBAAsB,SAAS,sBAAsB,WACjD,UAAU,oBAAoB,KAAK,GACnC,UAAU,oBAAoB,IAAI;EAItC;EACA;EACA,WAAW;EACX;EACA;EACA;EACD,CAAC;CAEF,OACE,oBAAC,MAAD;EAAM,eAAc;EAAO,OAAO,CAAC,OAAO,OAAO,WAAW;EAAU;YACpE,qBAAC,KAAD;GAAK,OAAO,WAAW;GAAO,QAAQ,WAAW;GAAiB;aAAlE,CACE,oBAAC,MAAD;IAAM,GAAG;IAAgB;IAAM,QAAO;IAAS,CAAA,EAC9C,cAAc,KACb,oBAAC,MAAD;IACE,GAAG;IACH,MAAK;IACG;IACR,gBAAe;IACF;IACb,CAAA,CAEA;;EACD,CAAA;EAET;AAEF,MAAM,SAAS,WAAW,OAAO,EAC/B,OAAO;CACL,UAAU;CACV,QAAQ;CACT,EACF,CAAC;AAEF,aAAa,cAAc"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_internal_Overlay_OverlayPortal = require("../internal/Overlay/OverlayPortal.cjs");
|
|
5
|
+
const require_components_internal_Overlay_useOverlayDismiss = require("../internal/Overlay/useOverlayDismiss.cjs");
|
|
6
|
+
let react = require("react");
|
|
7
|
+
let react_native = require("react-native");
|
|
8
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
let react_native_gesture_handler = require("react-native-gesture-handler");
|
|
10
|
+
//#region src/components/Popover/PopoverPortalLayer.tsx
|
|
11
|
+
const preventBackdropResponderTermination = () => false;
|
|
12
|
+
const PopoverPortalLayer = (0, react.memo)(function PopoverPortalLayer({ children, dismissible, onDismiss, open }) {
|
|
13
|
+
const dismiss = require_components_internal_Overlay_useOverlayDismiss.useOverlayDismiss({
|
|
14
|
+
open,
|
|
15
|
+
dismissible,
|
|
16
|
+
onDismiss
|
|
17
|
+
});
|
|
18
|
+
const blockScrollGesture = (0, react.useMemo)(() => react_native_gesture_handler.Gesture.Pan().enabled(open).minDistance(1).onBegin(() => {
|
|
19
|
+
"worklet";
|
|
20
|
+
}), [open]);
|
|
21
|
+
const shouldCaptureBackdropResponder = (0, react.useCallback)(() => open, [open]);
|
|
22
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_internal_Overlay_OverlayPortal.OverlayPortal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native_gesture_handler.GestureDetector, {
|
|
23
|
+
gesture: blockScrollGesture,
|
|
24
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_native.View, {
|
|
25
|
+
style: react_native.StyleSheet.absoluteFill,
|
|
26
|
+
pointerEvents: open ? "auto" : "none",
|
|
27
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.Pressable, {
|
|
28
|
+
accessible: false,
|
|
29
|
+
accessibilityElementsHidden: true,
|
|
30
|
+
importantForAccessibility: "no-hide-descendants",
|
|
31
|
+
pointerEvents: open ? "auto" : "none",
|
|
32
|
+
style: react_native.StyleSheet.absoluteFill,
|
|
33
|
+
onMoveShouldSetResponder: shouldCaptureBackdropResponder,
|
|
34
|
+
onMoveShouldSetResponderCapture: shouldCaptureBackdropResponder,
|
|
35
|
+
onPress: dismiss,
|
|
36
|
+
onResponderTerminationRequest: preventBackdropResponderTermination,
|
|
37
|
+
onStartShouldSetResponder: shouldCaptureBackdropResponder,
|
|
38
|
+
onStartShouldSetResponderCapture: shouldCaptureBackdropResponder
|
|
39
|
+
}), children(dismiss)]
|
|
40
|
+
})
|
|
41
|
+
}) });
|
|
42
|
+
});
|
|
43
|
+
PopoverPortalLayer.displayName = "PopoverPortalLayer";
|
|
44
|
+
//#endregion
|
|
45
|
+
exports.PopoverPortalLayer = PopoverPortalLayer;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import * as _$react from "react";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Popover/PopoverPortalLayer.d.ts
|
|
6
|
+
interface PopoverPortalLayerProps {
|
|
7
|
+
children: (dismiss: () => void) => ReactNode;
|
|
8
|
+
dismissible: boolean;
|
|
9
|
+
onDismiss: () => void;
|
|
10
|
+
open: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const PopoverPortalLayer: _$react.NamedExoticComponent<PopoverPortalLayerProps>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverPortalLayer };
|
|
15
|
+
//# sourceMappingURL=PopoverPortalLayer.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverPortalLayer.d.cts","names":[],"sources":["../../../src/components/Popover/PopoverPortalLayer.tsx"],"mappings":";;;;;UAOU,uBAAA;EACR,QAAA,GAAW,OAAA,iBAAwB,SAAA;EACnC,WAAA;EACA,SAAA;EACA,IAAA;AAAA;AAAA,cAKI,kBAAA,EAAkB,OAAA,CAAA,oBAAA,CAAA,uBAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import * as _$react from "react";
|
|
3
|
+
import { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Popover/PopoverPortalLayer.d.ts
|
|
6
|
+
interface PopoverPortalLayerProps {
|
|
7
|
+
children: (dismiss: () => void) => ReactNode;
|
|
8
|
+
dismissible: boolean;
|
|
9
|
+
onDismiss: () => void;
|
|
10
|
+
open: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const PopoverPortalLayer: _$react.NamedExoticComponent<PopoverPortalLayerProps>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PopoverPortalLayer };
|
|
15
|
+
//# sourceMappingURL=PopoverPortalLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverPortalLayer.d.ts","names":[],"sources":["../../../src/components/Popover/PopoverPortalLayer.tsx"],"mappings":";;;;;UAOU,uBAAA;EACR,QAAA,GAAW,OAAA,iBAAwB,SAAA;EACnC,WAAA;EACA,SAAA;EACA,IAAA;AAAA;AAAA,cAKI,kBAAA,EAAkB,OAAA,CAAA,oBAAA,CAAA,uBAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { OverlayPortal } from "../internal/Overlay/OverlayPortal.js";
|
|
3
|
+
import { useOverlayDismiss } from "../internal/Overlay/useOverlayDismiss.js";
|
|
4
|
+
import { memo, useCallback, useMemo } from "react";
|
|
5
|
+
import { Pressable, StyleSheet, View } from "react-native";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Gesture, GestureDetector } from "react-native-gesture-handler";
|
|
8
|
+
//#region src/components/Popover/PopoverPortalLayer.tsx
|
|
9
|
+
const preventBackdropResponderTermination = () => false;
|
|
10
|
+
const PopoverPortalLayer = memo(function PopoverPortalLayer({ children, dismissible, onDismiss, open }) {
|
|
11
|
+
const dismiss = useOverlayDismiss({
|
|
12
|
+
open,
|
|
13
|
+
dismissible,
|
|
14
|
+
onDismiss
|
|
15
|
+
});
|
|
16
|
+
const blockScrollGesture = useMemo(() => Gesture.Pan().enabled(open).minDistance(1).onBegin(() => {
|
|
17
|
+
"worklet";
|
|
18
|
+
}), [open]);
|
|
19
|
+
const shouldCaptureBackdropResponder = useCallback(() => open, [open]);
|
|
20
|
+
return /* @__PURE__ */ jsx(OverlayPortal, { children: /* @__PURE__ */ jsx(GestureDetector, {
|
|
21
|
+
gesture: blockScrollGesture,
|
|
22
|
+
children: /* @__PURE__ */ jsxs(View, {
|
|
23
|
+
style: StyleSheet.absoluteFill,
|
|
24
|
+
pointerEvents: open ? "auto" : "none",
|
|
25
|
+
children: [/* @__PURE__ */ jsx(Pressable, {
|
|
26
|
+
accessible: false,
|
|
27
|
+
accessibilityElementsHidden: true,
|
|
28
|
+
importantForAccessibility: "no-hide-descendants",
|
|
29
|
+
pointerEvents: open ? "auto" : "none",
|
|
30
|
+
style: StyleSheet.absoluteFill,
|
|
31
|
+
onMoveShouldSetResponder: shouldCaptureBackdropResponder,
|
|
32
|
+
onMoveShouldSetResponderCapture: shouldCaptureBackdropResponder,
|
|
33
|
+
onPress: dismiss,
|
|
34
|
+
onResponderTerminationRequest: preventBackdropResponderTermination,
|
|
35
|
+
onStartShouldSetResponder: shouldCaptureBackdropResponder,
|
|
36
|
+
onStartShouldSetResponderCapture: shouldCaptureBackdropResponder
|
|
37
|
+
}), children(dismiss)]
|
|
38
|
+
})
|
|
39
|
+
}) });
|
|
40
|
+
});
|
|
41
|
+
PopoverPortalLayer.displayName = "PopoverPortalLayer";
|
|
42
|
+
//#endregion
|
|
43
|
+
export { PopoverPortalLayer };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=PopoverPortalLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverPortalLayer.js","names":[],"sources":["../../../src/components/Popover/PopoverPortalLayer.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { memo, useCallback, useMemo } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport { Gesture, GestureDetector } from 'react-native-gesture-handler';\n\nimport { OverlayPortal, useOverlayDismiss } from '../internal/Overlay';\n\ninterface PopoverPortalLayerProps {\n children: (dismiss: () => void) => ReactNode;\n dismissible: boolean;\n onDismiss: () => void;\n open: boolean;\n}\n\nconst preventBackdropResponderTermination = () => false;\n\nconst PopoverPortalLayer = memo(function PopoverPortalLayer({\n children,\n dismissible,\n onDismiss,\n open,\n}: PopoverPortalLayerProps) {\n const dismiss = useOverlayDismiss({\n open,\n dismissible,\n onDismiss,\n });\n // Claim active pan gestures while the popover is open so scroll views underneath cannot move\n // away from the anchored trigger.\n const blockScrollGesture = useMemo(\n () =>\n Gesture.Pan()\n .enabled(open)\n .minDistance(1)\n .onBegin(() => {\n 'worklet';\n }),\n [open],\n );\n const shouldCaptureBackdropResponder = useCallback(() => open, [open]);\n\n return (\n <OverlayPortal>\n <GestureDetector gesture={blockScrollGesture}>\n <View style={StyleSheet.absoluteFill} pointerEvents={open ? 'auto' : 'none'}>\n <Pressable\n accessible={false}\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n pointerEvents={open ? 'auto' : 'none'}\n style={StyleSheet.absoluteFill}\n onMoveShouldSetResponder={shouldCaptureBackdropResponder}\n onMoveShouldSetResponderCapture={shouldCaptureBackdropResponder}\n onPress={dismiss}\n onResponderTerminationRequest={preventBackdropResponderTermination}\n onStartShouldSetResponder={shouldCaptureBackdropResponder}\n onStartShouldSetResponderCapture={shouldCaptureBackdropResponder}\n />\n {children(dismiss)}\n </View>\n </GestureDetector>\n </OverlayPortal>\n );\n});\n\nPopoverPortalLayer.displayName = 'PopoverPortalLayer';\n\nexport { PopoverPortalLayer };\n"],"mappings":";;;;;;;;AAcA,MAAM,4CAA4C;AAElD,MAAM,qBAAqB,KAAK,SAAS,mBAAmB,EAC1D,UACA,aACA,WACA,QAC0B;CAC1B,MAAM,UAAU,kBAAkB;EAChC;EACA;EACA;EACD,CAAC;CAGF,MAAM,qBAAqB,cAEvB,QAAQ,KAAK,CACV,QAAQ,KAAK,CACb,YAAY,EAAE,CACd,cAAc;AACb;GACA,EACN,CAAC,KAAK,CACP;CACD,MAAM,iCAAiC,kBAAkB,MAAM,CAAC,KAAK,CAAC;CAEtE,OACE,oBAAC,eAAD,EAAA,UACE,oBAAC,iBAAD;EAAiB,SAAS;YACxB,qBAAC,MAAD;GAAM,OAAO,WAAW;GAAc,eAAe,OAAO,SAAS;aAArE,CACE,oBAAC,WAAD;IACE,YAAY;IACZ,6BAAA;IACA,2BAA0B;IAC1B,eAAe,OAAO,SAAS;IAC/B,OAAO,WAAW;IAClB,0BAA0B;IAC1B,iCAAiC;IACjC,SAAS;IACT,+BAA+B;IAC/B,2BAA2B;IAC3B,kCAAkC;IAClC,CAAA,EACD,SAAS,QAAQ,CACb;;EACS,CAAA,EACJ,CAAA;EAElB;AAEF,mBAAmB,cAAc"}
|