@oxyhq/bloom 0.69.1 → 0.71.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/lib/commonjs/context-menu/index.web.js +51 -3
- package/lib/commonjs/context-menu/index.web.js.map +1 -1
- package/lib/commonjs/dialog/SheetShell.js +7 -1
- package/lib/commonjs/dialog/SheetShell.js.map +1 -1
- package/lib/commonjs/menu/index.web.js +47 -10
- package/lib/commonjs/menu/index.web.js.map +1 -1
- package/lib/commonjs/overlay/dropdown-placement.js +62 -0
- package/lib/commonjs/overlay/dropdown-placement.js.map +1 -0
- package/lib/commonjs/select/index.web.js +82 -5
- package/lib/commonjs/select/index.web.js.map +1 -1
- package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js +32 -18
- package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
- package/lib/module/context-menu/index.web.js +52 -4
- package/lib/module/context-menu/index.web.js.map +1 -1
- package/lib/module/dialog/SheetShell.js +7 -1
- package/lib/module/dialog/SheetShell.js.map +1 -1
- package/lib/module/menu/index.web.js +47 -10
- package/lib/module/menu/index.web.js.map +1 -1
- package/lib/module/overlay/dropdown-placement.js +58 -0
- package/lib/module/overlay/dropdown-placement.js.map +1 -0
- package/lib/module/select/index.web.js +83 -6
- package/lib/module/select/index.web.js.map +1 -1
- package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js +33 -19
- package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
- package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/SheetShell.d.ts.map +1 -1
- package/lib/typescript/commonjs/menu/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/overlay/dropdown-placement.d.ts +55 -0
- package/lib/typescript/commonjs/overlay/dropdown-placement.d.ts.map +1 -0
- package/lib/typescript/commonjs/select/index.web.d.ts +1 -1
- package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/select/types.d.ts +6 -0
- package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
- package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/SheetShell.d.ts.map +1 -1
- package/lib/typescript/module/menu/index.web.d.ts.map +1 -1
- package/lib/typescript/module/overlay/dropdown-placement.d.ts +55 -0
- package/lib/typescript/module/overlay/dropdown-placement.d.ts.map +1 -0
- package/lib/typescript/module/select/index.web.d.ts +1 -1
- package/lib/typescript/module/select/index.web.d.ts.map +1 -1
- package/lib/typescript/module/select/types.d.ts +6 -0
- package/lib/typescript/module/select/types.d.ts.map +1 -1
- package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/SelectItemLabel.test.tsx +46 -0
- package/src/__tests__/SheetShell.test.tsx +82 -0
- package/src/__tests__/dropdown-placement.test.ts +90 -0
- package/src/__tests__/optional-peer-imports.test.ts +31 -12
- package/src/context-menu/index.web.tsx +47 -3
- package/src/dialog/SheetShell.tsx +5 -0
- package/src/menu/index.web.tsx +45 -16
- package/src/overlay/dropdown-placement.ts +88 -0
- package/src/select/index.web.tsx +92 -5
- package/src/select/types.ts +6 -0
- package/src/zoomable-image-gallery/ZoomableImageGallery.tsx +29 -16
|
@@ -7,6 +7,7 @@ import { Text } from "../typography/index.js";
|
|
|
7
7
|
import { Portal } from "../portal/index.web.js";
|
|
8
8
|
import { createDropdownZIndex } from "../styles/z-index.js";
|
|
9
9
|
import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
|
|
10
|
+
import { resolveDropdownPlacement } from "../overlay/dropdown-placement.js";
|
|
10
11
|
import { bloomShadowStyle } from '../design-tokens/shadows';
|
|
11
12
|
import { MenuContext, ItemContext, useMenuContext, useMenuItemContext } from "./context.js";
|
|
12
13
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -140,24 +141,49 @@ export function MenuContent({
|
|
|
140
141
|
const theme = useTheme();
|
|
141
142
|
const context = useMenuContext();
|
|
142
143
|
const [position, setPosition] = useState(null);
|
|
144
|
+
// The mounted dropdown node, as STATE rather than a bare ref: positioning has
|
|
145
|
+
// to measure it, and `Portal` renders null on its first pass (it resolves its
|
|
146
|
+
// host in its own layout effect), so the node lands one render after
|
|
147
|
+
// `isOpen` flips. An effect keyed only on `isOpen` would measure nothing.
|
|
148
|
+
const [dropdownNode, setDropdownNode] = useState(null);
|
|
149
|
+
const attachDropdown = useCallback(node => {
|
|
150
|
+
// The shared ref stays in sync — `Menu`'s outside-pointerdown check reads it.
|
|
151
|
+
if (context.dropdownRef) {
|
|
152
|
+
context.dropdownRef.current = node;
|
|
153
|
+
}
|
|
154
|
+
setDropdownNode(node);
|
|
155
|
+
}, [context.dropdownRef]);
|
|
143
156
|
useLayoutEffect(() => {
|
|
144
157
|
if (!context.isOpen || typeof window === 'undefined') {
|
|
145
158
|
return;
|
|
146
159
|
}
|
|
147
160
|
const triggerNode = context.triggerRef?.current;
|
|
148
|
-
if (!triggerNode?.getBoundingClientRect) {
|
|
161
|
+
if (!triggerNode?.getBoundingClientRect || !dropdownNode) {
|
|
149
162
|
return;
|
|
150
163
|
}
|
|
151
164
|
const updatePosition = () => {
|
|
152
165
|
const rect = triggerNode.getBoundingClientRect();
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const
|
|
166
|
+
// Measured BEFORE `minWidth` is applied, so the final surface can only be
|
|
167
|
+
// wider than this — and a wider surface wraps less, so the measured height
|
|
168
|
+
// is an upper bound. Erring that way flips early in a tie, never late.
|
|
169
|
+
const surface = dropdownNode.getBoundingClientRect();
|
|
170
|
+
const width = Math.max(surface.width, rect.width);
|
|
157
171
|
setPosition({
|
|
158
172
|
position: WEB_POSITION_FIXED,
|
|
159
|
-
|
|
160
|
-
|
|
173
|
+
...resolveDropdownPlacement({
|
|
174
|
+
anchor: rect,
|
|
175
|
+
size: {
|
|
176
|
+
width,
|
|
177
|
+
height: surface.height
|
|
178
|
+
},
|
|
179
|
+
viewport: {
|
|
180
|
+
width: window.innerWidth,
|
|
181
|
+
height: window.innerHeight
|
|
182
|
+
},
|
|
183
|
+
offset: MENU_OFFSET,
|
|
184
|
+
gutter: VIEWPORT_GUTTER,
|
|
185
|
+
align: 'end'
|
|
186
|
+
}),
|
|
161
187
|
right: undefined,
|
|
162
188
|
bottom: undefined,
|
|
163
189
|
minWidth: width
|
|
@@ -170,13 +196,13 @@ export function MenuContent({
|
|
|
170
196
|
window.removeEventListener('resize', updatePosition);
|
|
171
197
|
window.removeEventListener('scroll', updatePosition, true);
|
|
172
198
|
};
|
|
173
|
-
}, [context.isOpen, context.triggerRef]);
|
|
199
|
+
}, [context.isOpen, context.triggerRef, dropdownNode]);
|
|
174
200
|
if (!context.isOpen) {
|
|
175
201
|
return null;
|
|
176
202
|
}
|
|
177
203
|
return /*#__PURE__*/_jsx(Portal, {
|
|
178
204
|
children: /*#__PURE__*/_jsx(View, {
|
|
179
|
-
ref:
|
|
205
|
+
ref: attachDropdown,
|
|
180
206
|
style: [styles.dropdown, {
|
|
181
207
|
backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
|
|
182
208
|
borderColor: theme.colors.borderLight,
|
|
@@ -285,6 +311,14 @@ const styles = StyleSheet.create({
|
|
|
285
311
|
zIndex: menuZIndex.root
|
|
286
312
|
},
|
|
287
313
|
dropdown: {
|
|
314
|
+
// Fixed from the outset, not only once positioned: the `Portal` root is a
|
|
315
|
+
// block container, so a static child would stretch to the full viewport
|
|
316
|
+
// width and the pre-position measurement would under-read the height (less
|
|
317
|
+
// wrapping at a width the surface never actually has). A fixed box
|
|
318
|
+
// shrink-wraps to the same width it ends up with.
|
|
319
|
+
position: WEB_POSITION_FIXED,
|
|
320
|
+
top: 0,
|
|
321
|
+
left: 0,
|
|
288
322
|
borderRadius: 8,
|
|
289
323
|
padding: 4,
|
|
290
324
|
borderWidth: 1,
|
|
@@ -304,7 +338,10 @@ const styles = StyleSheet.create({
|
|
|
304
338
|
borderRadius: 6,
|
|
305
339
|
overflow: 'hidden',
|
|
306
340
|
paddingHorizontal: 10,
|
|
307
|
-
|
|
341
|
+
// Matches the native sheet row (`index.tsx`). Bloom's web build is what
|
|
342
|
+
// renders on touch tablets, where this dropdown — not the sheet — is the
|
|
343
|
+
// menu, so the row carries the same 44dp target on both platforms.
|
|
344
|
+
minHeight: 44
|
|
308
345
|
},
|
|
309
346
|
webItemText: {
|
|
310
347
|
flex: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Portal","createDropdownZIndex","WEB_POSITION_FIXED","bloomShadowStyle","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Menu","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","MenuTrigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","MenuContent","theme","position","setPosition","window","triggerNode","getBoundingClientRect","updatePosition","rect","width","Math","max","availableRight","innerWidth","left","min","right","top","bottom","innerHeight","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","portaledDropdown","MenuItem","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","MenuItemText","webItemText","color","textTertiary","text","MenuItemIcon","icon","Comp","fill","iconLeft","iconRight","size","textSecondary","MenuGroup","MenuDivider","divider","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","height","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Portal","createDropdownZIndex","WEB_POSITION_FIXED","resolveDropdownPlacement","bloomShadowStyle","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Menu","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","MenuTrigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","MenuContent","theme","position","setPosition","setDropdownNode","attachDropdown","node","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","anchor","size","height","viewport","innerWidth","innerHeight","offset","gutter","align","right","bottom","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","portaledDropdown","MenuItem","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","MenuItemText","webItemText","color","textTertiary","text","MenuItemIcon","icon","Comp","fill","iconLeft","iconRight","textSecondary","MenuGroup","MenuDivider","divider","create","zIndex","top","left","borderRadius","padding","borderWidth","overflow","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Placement arithmetic for a portaled dropdown surface — shared by the web
|
|
5
|
+
* `Menu` and `ContextMenu` forks, which anchor differently (a trigger's rect
|
|
6
|
+
* vs. a right-click point) but need the same fit / flip / clamp decision.
|
|
7
|
+
*
|
|
8
|
+
* Internal: deliberately NOT re-exported from `overlay/index.ts`. The web forks
|
|
9
|
+
* import it directly, the same way `dialog/SheetShell` is shared without
|
|
10
|
+
* becoming public API.
|
|
11
|
+
*
|
|
12
|
+
* Kept as a pure function so the arithmetic is unit-testable on its own — the
|
|
13
|
+
* DOM half (measuring the surface before positioning it) is the call site's
|
|
14
|
+
* job and is verified in a browser.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/** Viewport-relative box the surface is positioned against. A right-click point is a zero-area anchor. */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Clamp into `[min, max]`, resolving an inverted range to `min`.
|
|
21
|
+
*
|
|
22
|
+
* The range inverts exactly when the surface is larger than the viewport minus
|
|
23
|
+
* its gutters. Preferring `min` then pins the surface to the top/left gutter and
|
|
24
|
+
* lets it overflow the far edge, so its FIRST rows stay reachable — the opposite
|
|
25
|
+
* choice would push its start off-screen and strand every row.
|
|
26
|
+
*/
|
|
27
|
+
function clamp(value, min, max) {
|
|
28
|
+
return Math.max(min, Math.min(value, max));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the viewport-relative `top`/`left` for a dropdown surface.
|
|
33
|
+
*
|
|
34
|
+
* Vertical: sit below the anchor when it fits, else flip above it, else clamp
|
|
35
|
+
* into the viewport. Horizontal: align per `align`, then clamp into the
|
|
36
|
+
* viewport.
|
|
37
|
+
*/
|
|
38
|
+
export function resolveDropdownPlacement({
|
|
39
|
+
anchor,
|
|
40
|
+
size,
|
|
41
|
+
viewport,
|
|
42
|
+
offset,
|
|
43
|
+
gutter,
|
|
44
|
+
align
|
|
45
|
+
}) {
|
|
46
|
+
const below = anchor.bottom + offset;
|
|
47
|
+
const above = anchor.top - offset - size.height;
|
|
48
|
+
const fitsBelow = below + size.height <= viewport.height - gutter;
|
|
49
|
+
const fitsAbove = above >= gutter;
|
|
50
|
+
const top = fitsBelow ? below : fitsAbove ? above : clamp(below, gutter, viewport.height - gutter - size.height);
|
|
51
|
+
const preferredLeft = align === 'end' ? anchor.right - size.width : anchor.left;
|
|
52
|
+
const left = clamp(preferredLeft, gutter, viewport.width - gutter - size.width);
|
|
53
|
+
return {
|
|
54
|
+
top,
|
|
55
|
+
left
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=dropdown-placement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["clamp","value","min","max","Math","resolveDropdownPlacement","anchor","size","viewport","offset","gutter","align","below","bottom","above","top","height","fitsBelow","fitsAbove","preferredLeft","right","width","left"],"sourceRoot":"../../../src","sources":["overlay/dropdown-placement.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EAC9D,OAAOC,IAAI,CAACD,GAAG,CAACD,GAAG,EAAEE,IAAI,CAACF,GAAG,CAACD,KAAK,EAAEE,GAAG,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,wBAAwBA,CAAC;EACvCC,MAAM;EACNC,IAAI;EACJC,QAAQ;EACRC,MAAM;EACNC,MAAM;EACNC;AACsB,CAAC,EAAqB;EAC5C,MAAMC,KAAK,GAAGN,MAAM,CAACO,MAAM,GAAGJ,MAAM;EACpC,MAAMK,KAAK,GAAGR,MAAM,CAACS,GAAG,GAAGN,MAAM,GAAGF,IAAI,CAACS,MAAM;EAE/C,MAAMC,SAAS,GAAGL,KAAK,GAAGL,IAAI,CAACS,MAAM,IAAIR,QAAQ,CAACQ,MAAM,GAAGN,MAAM;EACjE,MAAMQ,SAAS,GAAGJ,KAAK,IAAIJ,MAAM;EAEjC,MAAMK,GAAG,GAAGE,SAAS,GACjBL,KAAK,GACLM,SAAS,GACPJ,KAAK,GACLd,KAAK,CAACY,KAAK,EAAEF,MAAM,EAAEF,QAAQ,CAACQ,MAAM,GAAGN,MAAM,GAAGH,IAAI,CAACS,MAAM,CAAC;EAElE,MAAMG,aAAa,GAAGR,KAAK,KAAK,KAAK,GAAGL,MAAM,CAACc,KAAK,GAAGb,IAAI,CAACc,KAAK,GAAGf,MAAM,CAACgB,IAAI;EAC/E,MAAMA,IAAI,GAAGtB,KAAK,CAACmB,aAAa,EAAET,MAAM,EAAEF,QAAQ,CAACa,KAAK,GAAGX,MAAM,GAAGH,IAAI,CAACc,KAAK,CAAC;EAE/E,OAAO;IAAEN,GAAG;IAAEO;EAAK,CAAC;AACtB","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { createContext, useContext, useId, useMemo, useState } from 'react';
|
|
3
|
+
import React, { createContext, useCallback, useContext, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Pressable, StyleSheet, View } from 'react-native';
|
|
5
5
|
import { useTheme } from "../theme/use-theme.js";
|
|
6
6
|
import { Text } from "../typography/index.js";
|
|
@@ -8,6 +8,7 @@ import { Backdrop } from "../overlay/index.js";
|
|
|
8
8
|
import { Portal } from "../portal/index.web.js";
|
|
9
9
|
import { createOverlayZIndex } from "../styles/z-index.js";
|
|
10
10
|
import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
|
|
11
|
+
import { resolveDropdownPlacement } from "../overlay/dropdown-placement.js";
|
|
11
12
|
import { bloomShadowStyle } from '../design-tokens/shadows';
|
|
12
13
|
import { useInteractionState } from "../hooks/useInteractionState.js";
|
|
13
14
|
import { ChevronBottom_Stroke2_Corner0_Rounded as ChevronDownIcon } from "../icons/Chevron.js";
|
|
@@ -16,6 +17,8 @@ import { defaultItemValueExtractor, ItemContext, useSelectItemContext } from "./
|
|
|
16
17
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
18
|
export { useSelectItemContext };
|
|
18
19
|
const selectZIndex = createOverlayZIndex();
|
|
20
|
+
const VIEWPORT_GUTTER = 8;
|
|
21
|
+
const SELECT_OFFSET = 6;
|
|
19
22
|
|
|
20
23
|
// ---------------------------------------------------------------------------
|
|
21
24
|
// Context
|
|
@@ -42,13 +45,15 @@ export function Select({
|
|
|
42
45
|
disabled
|
|
43
46
|
}) {
|
|
44
47
|
const [isOpen, setIsOpen] = useState(false);
|
|
48
|
+
const triggerRef = useRef(null);
|
|
45
49
|
const ctx = useMemo(() => ({
|
|
46
50
|
value,
|
|
47
51
|
onValueChange,
|
|
48
52
|
disabled,
|
|
49
53
|
isOpen,
|
|
50
54
|
open: () => setIsOpen(true),
|
|
51
|
-
close: () => setIsOpen(false)
|
|
55
|
+
close: () => setIsOpen(false),
|
|
56
|
+
triggerRef
|
|
52
57
|
}), [value, onValueChange, disabled, isOpen]);
|
|
53
58
|
return /*#__PURE__*/_jsx(SelectContext.Provider, {
|
|
54
59
|
value: ctx,
|
|
@@ -93,6 +98,7 @@ export function SelectTrigger({
|
|
|
93
98
|
pressed: false
|
|
94
99
|
},
|
|
95
100
|
props: {
|
|
101
|
+
ref: ctx.triggerRef,
|
|
96
102
|
onPress: ctx.open,
|
|
97
103
|
onFocus,
|
|
98
104
|
onBlur,
|
|
@@ -101,6 +107,7 @@ export function SelectTrigger({
|
|
|
101
107
|
});
|
|
102
108
|
}
|
|
103
109
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
110
|
+
ref: ctx.triggerRef,
|
|
104
111
|
onPress: ctx.open,
|
|
105
112
|
onFocus: onFocus,
|
|
106
113
|
onBlur: onBlur,
|
|
@@ -166,6 +173,58 @@ export function SelectContent({
|
|
|
166
173
|
}) {
|
|
167
174
|
const ctx = useSelectContext();
|
|
168
175
|
const theme = useTheme();
|
|
176
|
+
const [position, setPosition] = useState(null);
|
|
177
|
+
// The mounted dropdown node, as STATE rather than a bare ref: positioning has
|
|
178
|
+
// to measure it, and `Portal` renders null on its first pass (it resolves its
|
|
179
|
+
// host in its own layout effect), so the node lands one render after `isOpen`
|
|
180
|
+
// flips. An effect keyed only on `isOpen` would measure nothing.
|
|
181
|
+
const [dropdownNode, setDropdownNode] = useState(null);
|
|
182
|
+
const attachDropdown = useCallback(node => {
|
|
183
|
+
setDropdownNode(node);
|
|
184
|
+
}, []);
|
|
185
|
+
|
|
186
|
+
// Anchored to the trigger, left edges aligned, and never off-screen: sit below
|
|
187
|
+
// when it fits, flip above when it doesn't, clamp when neither. Before this the
|
|
188
|
+
// dropdown had no `top`/`left` at all, so it rendered at the `Portal` root's
|
|
189
|
+
// origin — the viewport's top-left corner — however far from its trigger.
|
|
190
|
+
useLayoutEffect(() => {
|
|
191
|
+
if (!ctx.isOpen || typeof window === 'undefined') return;
|
|
192
|
+
const triggerNode = ctx.triggerRef.current;
|
|
193
|
+
if (!triggerNode?.getBoundingClientRect || !dropdownNode) return;
|
|
194
|
+
const updatePosition = () => {
|
|
195
|
+
const rect = triggerNode.getBoundingClientRect();
|
|
196
|
+
// Measured BEFORE `minWidth` is applied, so the final surface can only be
|
|
197
|
+
// wider than this — and a wider surface wraps less, so the measured height
|
|
198
|
+
// is an upper bound. Erring that way flips early in a tie, never late.
|
|
199
|
+
const surface = dropdownNode.getBoundingClientRect();
|
|
200
|
+
const width = Math.max(surface.width, rect.width);
|
|
201
|
+
setPosition({
|
|
202
|
+
position: WEB_POSITION_FIXED,
|
|
203
|
+
...resolveDropdownPlacement({
|
|
204
|
+
anchor: rect,
|
|
205
|
+
size: {
|
|
206
|
+
width,
|
|
207
|
+
height: surface.height
|
|
208
|
+
},
|
|
209
|
+
viewport: {
|
|
210
|
+
width: window.innerWidth,
|
|
211
|
+
height: window.innerHeight
|
|
212
|
+
},
|
|
213
|
+
offset: SELECT_OFFSET,
|
|
214
|
+
gutter: VIEWPORT_GUTTER,
|
|
215
|
+
align: 'start'
|
|
216
|
+
}),
|
|
217
|
+
minWidth: width
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
updatePosition();
|
|
221
|
+
window.addEventListener('resize', updatePosition);
|
|
222
|
+
window.addEventListener('scroll', updatePosition, true);
|
|
223
|
+
return () => {
|
|
224
|
+
window.removeEventListener('resize', updatePosition);
|
|
225
|
+
window.removeEventListener('scroll', updatePosition, true);
|
|
226
|
+
};
|
|
227
|
+
}, [ctx.isOpen, ctx.triggerRef, dropdownNode]);
|
|
169
228
|
if (!ctx.isOpen) return null;
|
|
170
229
|
return /*#__PURE__*/_jsxs(Portal, {
|
|
171
230
|
children: [/*#__PURE__*/_jsx(Backdrop, {
|
|
@@ -173,13 +232,14 @@ export function SelectContent({
|
|
|
173
232
|
onPress: ctx.close,
|
|
174
233
|
accessibilityLabel: "Close selection"
|
|
175
234
|
}), /*#__PURE__*/_jsx(View, {
|
|
235
|
+
ref: attachDropdown,
|
|
176
236
|
accessibilityRole: "list",
|
|
177
237
|
accessibilityLabel: label,
|
|
178
238
|
style: [styles.dropdown, {
|
|
179
239
|
backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
|
|
180
240
|
borderColor: theme.colors.borderLight,
|
|
181
241
|
...bloomShadowStyle('m')
|
|
182
|
-
}],
|
|
242
|
+
}, position],
|
|
183
243
|
children: items.map((item, index) => /*#__PURE__*/_jsx(React.Fragment, {
|
|
184
244
|
children: renderItem(item, index, ctx.value)
|
|
185
245
|
}, valueExtractor(item)))
|
|
@@ -194,6 +254,7 @@ export function SelectContent({
|
|
|
194
254
|
export function SelectItem({
|
|
195
255
|
ref,
|
|
196
256
|
value,
|
|
257
|
+
label,
|
|
197
258
|
children,
|
|
198
259
|
style
|
|
199
260
|
}) {
|
|
@@ -218,7 +279,12 @@ export function SelectItem({
|
|
|
218
279
|
}), [isSelected, hovered, focused]);
|
|
219
280
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
220
281
|
ref: ref,
|
|
221
|
-
accessibilityRole: "radio"
|
|
282
|
+
accessibilityRole: "radio"
|
|
283
|
+
// The native fork has always applied this; web declared `label` and then
|
|
284
|
+
// dropped it, leaving every option a `role="radio"` with no accessible
|
|
285
|
+
// name for a screen reader to announce.
|
|
286
|
+
,
|
|
287
|
+
accessibilityLabel: label,
|
|
222
288
|
accessibilityState: {
|
|
223
289
|
checked: isSelected
|
|
224
290
|
},
|
|
@@ -322,7 +388,14 @@ const styles = StyleSheet.create({
|
|
|
322
388
|
pointerEvents: 'auto'
|
|
323
389
|
},
|
|
324
390
|
dropdown: {
|
|
325
|
-
|
|
391
|
+
// Fixed from the outset, not only once positioned: the `Portal` root is a
|
|
392
|
+
// block container, so a static child would stretch to the full viewport
|
|
393
|
+
// width and the pre-position measurement would under-read the height (less
|
|
394
|
+
// wrapping at a width the surface never actually has). A fixed box
|
|
395
|
+
// shrink-wraps to the same width it ends up with.
|
|
396
|
+
position: WEB_POSITION_FIXED,
|
|
397
|
+
top: 0,
|
|
398
|
+
left: 0,
|
|
326
399
|
zIndex: selectZIndex.surface,
|
|
327
400
|
borderRadius: 8,
|
|
328
401
|
borderWidth: 1,
|
|
@@ -336,7 +409,11 @@ const styles = StyleSheet.create({
|
|
|
336
409
|
item: {
|
|
337
410
|
position: 'relative',
|
|
338
411
|
flexDirection: 'row',
|
|
339
|
-
|
|
412
|
+
// Matches the native sheet row (`index.tsx`) and the web `Menu` row. Bloom's
|
|
413
|
+
// web build is what renders on touch tablets, where this dropdown — not the
|
|
414
|
+
// sheet — is the select, so the row carries the same 44dp target on both
|
|
415
|
+
// platforms.
|
|
416
|
+
minHeight: 44,
|
|
340
417
|
paddingLeft: 30,
|
|
341
418
|
paddingRight: 8,
|
|
342
419
|
alignItems: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","useId","useMemo","useState","Pressable","StyleSheet","View","useTheme","Text","Backdrop","Portal","createOverlayZIndex","WEB_POSITION_FIXED","bloomShadowStyle","useInteractionState","ChevronBottom_Stroke2_Corner0_Rounded","ChevronDownIcon","Check_Stroke2_Corner0_Rounded","CheckIcon","defaultItemValueExtractor","ItemContext","useSelectItemContext","jsx","_jsx","jsxs","_jsxs","selectZIndex","SelectContext","displayName","useSelectContext","ctx","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","open","close","Provider","SelectTrigger","label","theme","triggerId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","numberOfLines","valueText","color","text","textSecondary","SelectIcon","size","fill","SelectContent","items","renderItem","valueExtractor","backdrop","dropdown","isDark","backgroundSecondary","background","borderLight","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","create","flexDirection","position","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","top","left","right","bottom","zIndex","pointerEvents","surface","overflow","padding","minWidth","minHeight","paddingLeft","paddingRight","width","height","marginVertical"],"sourceRoot":"../../../src","sources":["select/index.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","createContext","useCallback","useContext","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Backdrop","Portal","createOverlayZIndex","WEB_POSITION_FIXED","resolveDropdownPlacement","bloomShadowStyle","useInteractionState","ChevronBottom_Stroke2_Corner0_Rounded","ChevronDownIcon","Check_Stroke2_Corner0_Rounded","CheckIcon","defaultItemValueExtractor","ItemContext","useSelectItemContext","jsx","_jsx","jsxs","_jsxs","selectZIndex","VIEWPORT_GUTTER","SELECT_OFFSET","SelectContext","displayName","useSelectContext","ctx","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","triggerRef","open","close","Provider","SelectTrigger","label","theme","triggerId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","numberOfLines","valueText","color","text","textSecondary","SelectIcon","size","fill","SelectContent","items","renderItem","valueExtractor","position","setPosition","dropdownNode","setDropdownNode","attachDropdown","node","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","anchor","height","viewport","innerWidth","innerHeight","offset","gutter","align","minWidth","addEventListener","removeEventListener","backdrop","dropdown","isDark","backgroundSecondary","background","borderLight","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","create","flexDirection","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","top","left","right","bottom","zIndex","pointerEvents","overflow","padding","minHeight","paddingLeft","paddingRight","marginVertical"],"sourceRoot":"../../../src","sources":["select/index.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { View, Text, StyleSheet, Pressable, Platform, ScrollView, Share, useWindowDimensions } from 'react-native';
|
|
5
5
|
import { Image } from 'expo-image';
|
|
6
6
|
import Animated, { useSharedValue, useAnimatedStyle, withSpring, withTiming, runOnJS, Easing } from 'react-native-reanimated';
|
|
@@ -122,8 +122,6 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
|
|
|
122
122
|
// shrinks back to it. Never overwritten by the drag gesture.
|
|
123
123
|
const originScale = useSharedValue(1);
|
|
124
124
|
const pagerRef = useRef(null);
|
|
125
|
-
// Latch the index the pager must land on once it has mounted + laid out.
|
|
126
|
-
const pendingIndexRef = useRef(0);
|
|
127
125
|
// Mirror of `activeIndex` readable synchronously from callbacks/worklets
|
|
128
126
|
// (`handleDismiss` runs via `runOnJS` and from `Pressable.onPress`, where the
|
|
129
127
|
// state closure can be stale). Kept in lockstep by `setActiveIndexBoth`.
|
|
@@ -315,8 +313,8 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
|
|
|
315
313
|
}, [activeFit, fadeOutCenter, flyBackTo, images, measureThumb, SCREEN_HEIGHT, SCREEN_WIDTH]);
|
|
316
314
|
|
|
317
315
|
// Reveal the swipeable pager once the open animation has settled. The index it
|
|
318
|
-
// lands on is
|
|
319
|
-
//
|
|
316
|
+
// lands on is `activeIndexRef` (set synchronously in `open`), seated by the
|
|
317
|
+
// layout effect below.
|
|
320
318
|
const revealPager = useCallback(() => {
|
|
321
319
|
setPagerReady(true);
|
|
322
320
|
}, []);
|
|
@@ -340,7 +338,6 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
|
|
|
340
338
|
if (r !== undefined) initialRatios[i] = r;
|
|
341
339
|
});
|
|
342
340
|
setPageRatios(initialRatios);
|
|
343
|
-
pendingIndexRef.current = safeIndex;
|
|
344
341
|
|
|
345
342
|
// Resolve the opening ratio if it was not yet known, then re-fit.
|
|
346
343
|
if (knownRatio === undefined) {
|
|
@@ -527,17 +524,35 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
|
|
|
527
524
|
updateIndexFromOffset(event.nativeEvent.contentOffset.x);
|
|
528
525
|
}, [updateIndexFromOffset]);
|
|
529
526
|
|
|
530
|
-
//
|
|
531
|
-
//
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
527
|
+
// Re-seat the pager on the CURRENT page, without animation, whenever it mounts
|
|
528
|
+
// or the page width changes.
|
|
529
|
+
//
|
|
530
|
+
// Rotation is the case that needs this: the pager's retained scroll offset is
|
|
531
|
+
// in PIXELS, so when `SCREEN_WIDTH` changes the page widths change underneath
|
|
532
|
+
// a stale offset and the pager lands between two pages — showing the wrong
|
|
533
|
+
// image while the counter and dots still point at the right one. Nothing else
|
|
534
|
+
// corrects it: `contentOffset` below is only an initial value, and `pageTo`
|
|
535
|
+
// runs only on an explicit page change. Reading the index from
|
|
536
|
+
// `activeIndexRef` (rather than the index the viewer was opened at) is what
|
|
537
|
+
// makes it land on the page the user is actually looking at.
|
|
538
|
+
//
|
|
539
|
+
// This is a layout EFFECT rather than the pager's `onLayout` on purpose. The
|
|
540
|
+
// pages are sized from `SCREEN_WIDTH`, so the scroll offset is only meaningful
|
|
541
|
+
// once React has committed a render carrying the new width. `onLayout` fires
|
|
542
|
+
// from a different signal (the pager's own frame) than the one that resizes
|
|
543
|
+
// the pages (`useWindowDimensions`), and the two are not ordered against each
|
|
544
|
+
// other — so an `onLayout` handler can run holding the previous `SCREEN_WIDTH`
|
|
545
|
+
// and re-seat the pager to the offset it already had. Keying the effect on
|
|
546
|
+
// `SCREEN_WIDTH` makes the two agree by construction, and running it before
|
|
547
|
+
// paint keeps the corrected offset from being visible as a jump.
|
|
548
|
+
useLayoutEffect(() => {
|
|
549
|
+
if (!pagerReady) return;
|
|
550
|
+
pagerRef.current?.scrollTo({
|
|
551
|
+
x: activeIndexRef.current * SCREEN_WIDTH,
|
|
552
|
+
y: 0,
|
|
553
|
+
animated: false
|
|
554
|
+
});
|
|
555
|
+
}, [pagerReady, SCREEN_WIDTH]);
|
|
541
556
|
|
|
542
557
|
// Double-tap toggles zoom: reset when already zoomed, else zoom to the tapped
|
|
543
558
|
// point (biased toward it, clamped near the image center). `x`/`y` are local
|
|
@@ -716,10 +731,9 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
|
|
|
716
731
|
scrollEnabled: !isZoomed,
|
|
717
732
|
showsHorizontalScrollIndicator: false,
|
|
718
733
|
contentOffset: {
|
|
719
|
-
x:
|
|
734
|
+
x: activeIndexRef.current * SCREEN_WIDTH,
|
|
720
735
|
y: 0
|
|
721
736
|
},
|
|
722
|
-
onLayout: onPagerLayout,
|
|
723
737
|
onMomentumScrollEnd: onPagerScroll,
|
|
724
738
|
...(Platform.OS === 'web' ? {
|
|
725
739
|
onScroll: onPagerScroll
|