@oxyhq/bloom 0.70.0 → 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.
@@ -26,6 +26,7 @@ var _index2 = require("../overlay/index.js");
26
26
  var _indexWeb = require("../portal/index.web.js");
27
27
  var _zIndex = require("../styles/z-index.js");
28
28
  var _webViewStyle = require("../styles/web-view-style.js");
29
+ var _dropdownPlacement = require("../overlay/dropdown-placement.js");
29
30
  var _shadows = require("../design-tokens/shadows");
30
31
  var _useInteractionState = require("../hooks/useInteractionState.js");
31
32
  var _Chevron = require("../icons/Chevron.js");
@@ -34,6 +35,8 @@ var _common = require("./common.js");
34
35
  var _jsxRuntime = require("react/jsx-runtime");
35
36
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
36
37
  const selectZIndex = (0, _zIndex.createOverlayZIndex)();
38
+ const VIEWPORT_GUTTER = 8;
39
+ const SELECT_OFFSET = 6;
37
40
 
38
41
  // ---------------------------------------------------------------------------
39
42
  // Context
@@ -60,13 +63,15 @@ function Select({
60
63
  disabled
61
64
  }) {
62
65
  const [isOpen, setIsOpen] = (0, _react.useState)(false);
66
+ const triggerRef = (0, _react.useRef)(null);
63
67
  const ctx = (0, _react.useMemo)(() => ({
64
68
  value,
65
69
  onValueChange,
66
70
  disabled,
67
71
  isOpen,
68
72
  open: () => setIsOpen(true),
69
- close: () => setIsOpen(false)
73
+ close: () => setIsOpen(false),
74
+ triggerRef
70
75
  }), [value, onValueChange, disabled, isOpen]);
71
76
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SelectContext.Provider, {
72
77
  value: ctx,
@@ -111,6 +116,7 @@ function SelectTrigger({
111
116
  pressed: false
112
117
  },
113
118
  props: {
119
+ ref: ctx.triggerRef,
114
120
  onPress: ctx.open,
115
121
  onFocus,
116
122
  onBlur,
@@ -119,6 +125,7 @@ function SelectTrigger({
119
125
  });
120
126
  }
121
127
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
128
+ ref: ctx.triggerRef,
122
129
  onPress: ctx.open,
123
130
  onFocus: onFocus,
124
131
  onBlur: onBlur,
@@ -184,6 +191,58 @@ function SelectContent({
184
191
  }) {
185
192
  const ctx = useSelectContext();
186
193
  const theme = (0, _useTheme.useTheme)();
194
+ const [position, setPosition] = (0, _react.useState)(null);
195
+ // The mounted dropdown node, as STATE rather than a bare ref: positioning has
196
+ // to measure it, and `Portal` renders null on its first pass (it resolves its
197
+ // host in its own layout effect), so the node lands one render after `isOpen`
198
+ // flips. An effect keyed only on `isOpen` would measure nothing.
199
+ const [dropdownNode, setDropdownNode] = (0, _react.useState)(null);
200
+ const attachDropdown = (0, _react.useCallback)(node => {
201
+ setDropdownNode(node);
202
+ }, []);
203
+
204
+ // Anchored to the trigger, left edges aligned, and never off-screen: sit below
205
+ // when it fits, flip above when it doesn't, clamp when neither. Before this the
206
+ // dropdown had no `top`/`left` at all, so it rendered at the `Portal` root's
207
+ // origin — the viewport's top-left corner — however far from its trigger.
208
+ (0, _react.useLayoutEffect)(() => {
209
+ if (!ctx.isOpen || typeof window === 'undefined') return;
210
+ const triggerNode = ctx.triggerRef.current;
211
+ if (!triggerNode?.getBoundingClientRect || !dropdownNode) return;
212
+ const updatePosition = () => {
213
+ const rect = triggerNode.getBoundingClientRect();
214
+ // Measured BEFORE `minWidth` is applied, so the final surface can only be
215
+ // wider than this — and a wider surface wraps less, so the measured height
216
+ // is an upper bound. Erring that way flips early in a tie, never late.
217
+ const surface = dropdownNode.getBoundingClientRect();
218
+ const width = Math.max(surface.width, rect.width);
219
+ setPosition({
220
+ position: _webViewStyle.WEB_POSITION_FIXED,
221
+ ...(0, _dropdownPlacement.resolveDropdownPlacement)({
222
+ anchor: rect,
223
+ size: {
224
+ width,
225
+ height: surface.height
226
+ },
227
+ viewport: {
228
+ width: window.innerWidth,
229
+ height: window.innerHeight
230
+ },
231
+ offset: SELECT_OFFSET,
232
+ gutter: VIEWPORT_GUTTER,
233
+ align: 'start'
234
+ }),
235
+ minWidth: width
236
+ });
237
+ };
238
+ updatePosition();
239
+ window.addEventListener('resize', updatePosition);
240
+ window.addEventListener('scroll', updatePosition, true);
241
+ return () => {
242
+ window.removeEventListener('resize', updatePosition);
243
+ window.removeEventListener('scroll', updatePosition, true);
244
+ };
245
+ }, [ctx.isOpen, ctx.triggerRef, dropdownNode]);
187
246
  if (!ctx.isOpen) return null;
188
247
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_indexWeb.Portal, {
189
248
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.Backdrop, {
@@ -191,13 +250,14 @@ function SelectContent({
191
250
  onPress: ctx.close,
192
251
  accessibilityLabel: "Close selection"
193
252
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
253
+ ref: attachDropdown,
194
254
  accessibilityRole: "list",
195
255
  accessibilityLabel: label,
196
256
  style: [styles.dropdown, {
197
257
  backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
198
258
  borderColor: theme.colors.borderLight,
199
259
  ...(0, _shadows.bloomShadowStyle)('m')
200
- }],
260
+ }, position],
201
261
  children: items.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
202
262
  children: renderItem(item, index, ctx.value)
203
263
  }, valueExtractor(item)))
@@ -212,6 +272,7 @@ function SelectContent({
212
272
  function SelectItem({
213
273
  ref,
214
274
  value,
275
+ label,
215
276
  children,
216
277
  style
217
278
  }) {
@@ -236,7 +297,12 @@ function SelectItem({
236
297
  }), [isSelected, hovered, focused]);
237
298
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
238
299
  ref: ref,
239
- accessibilityRole: "radio",
300
+ accessibilityRole: "radio"
301
+ // The native fork has always applied this; web declared `label` and then
302
+ // dropped it, leaving every option a `role="radio"` with no accessible
303
+ // name for a screen reader to announce.
304
+ ,
305
+ accessibilityLabel: label,
240
306
  accessibilityState: {
241
307
  checked: isSelected
242
308
  },
@@ -340,7 +406,14 @@ const styles = _reactNative.StyleSheet.create({
340
406
  pointerEvents: 'auto'
341
407
  },
342
408
  dropdown: {
343
- position: 'absolute',
409
+ // Fixed from the outset, not only once positioned: the `Portal` root is a
410
+ // block container, so a static child would stretch to the full viewport
411
+ // width and the pre-position measurement would under-read the height (less
412
+ // wrapping at a width the surface never actually has). A fixed box
413
+ // shrink-wraps to the same width it ends up with.
414
+ position: _webViewStyle.WEB_POSITION_FIXED,
415
+ top: 0,
416
+ left: 0,
344
417
  zIndex: selectZIndex.surface,
345
418
  borderRadius: 8,
346
419
  borderWidth: 1,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_index2","_indexWeb","_zIndex","_webViewStyle","_shadows","_useInteractionState","_Chevron","_Check","_common","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","selectZIndex","createOverlayZIndex","SelectContext","createContext","displayName","useSelectContext","ctx","useContext","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","useState","useMemo","open","close","jsx","Provider","SelectTrigger","label","theme","useTheme","triggerId","useId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","useInteractionState","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","Pressable","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","Text","numberOfLines","valueText","color","text","textSecondary","SelectIcon","ChevronBottom_Stroke2_Corner0_Rounded","size","fill","SelectContent","items","renderItem","valueExtractor","defaultItemValueExtractor","jsxs","Portal","Backdrop","backdrop","View","dropdown","isDark","backgroundSecondary","background","borderLight","bloomShadowStyle","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","ItemContext","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","CheckIcon","useSelectItemContext","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","StyleSheet","create","flexDirection","position","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","WEB_POSITION_FIXED","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","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_index2","_indexWeb","_zIndex","_webViewStyle","_dropdownPlacement","_shadows","_useInteractionState","_Chevron","_Check","_common","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","selectZIndex","createOverlayZIndex","VIEWPORT_GUTTER","SELECT_OFFSET","SelectContext","createContext","displayName","useSelectContext","ctx","useContext","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","useState","triggerRef","useRef","useMemo","open","close","jsx","Provider","SelectTrigger","label","theme","useTheme","triggerId","useId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","useInteractionState","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","Pressable","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","Text","numberOfLines","valueText","color","text","textSecondary","SelectIcon","ChevronBottom_Stroke2_Corner0_Rounded","size","fill","SelectContent","items","renderItem","valueExtractor","defaultItemValueExtractor","position","setPosition","dropdownNode","setDropdownNode","attachDropdown","useCallback","node","useLayoutEffect","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","WEB_POSITION_FIXED","resolveDropdownPlacement","anchor","height","viewport","innerWidth","innerHeight","offset","gutter","align","minWidth","addEventListener","removeEventListener","jsxs","Portal","Backdrop","backdrop","View","dropdown","isDark","backgroundSecondary","background","borderLight","bloomShadowStyle","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","ItemContext","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","CheckIcon","useSelectItemContext","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","StyleSheet","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":";;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAUA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AAEA,IAAAU,oBAAA,GAAAV,OAAA;AACA,IAAAW,QAAA,GAAAX,OAAA;AAGA,IAAAY,MAAA,GAAAZ,OAAA;AACA,IAAAa,OAAA,GAAAb,OAAA;AAAwF,IAAAc,WAAA,GAAAd,OAAA;AAAA,SAAAD,wBAAAgB,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAlB,uBAAA,YAAAA,CAAAgB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAexF,MAAMkB,YAAY,GAAG,IAAAC,2BAAmB,EAAC,CAAC;AAC1C,MAAMC,eAAe,GAAG,CAAC;AACzB,MAAMC,aAAa,GAAG,CAAC;;AAEvB;AACA;AACA;;AAUA,MAAMC,aAAa,gBAAG,IAAAC,oBAAa,EAA4B,IAAI,CAAC;AACpED,aAAa,CAACE,WAAW,GAAG,eAAe;AAE3C,SAASC,gBAAgBA,CAAA,EAAuB;EAC9C,MAAMC,GAAG,GAAG,IAAAC,iBAAU,EAACL,aAAa,CAAC;EACrC,IAAI,CAACI,GAAG,EAAE;IACR,MAAM,IAAIE,KAAK,CAAC,gDAAgD,CAAC;EACnE;EACA,OAAOF,GAAG;AACZ;;AAEA;AACA;AACA;;AAEO,SAASG,MAAMA,CAAC;EAAEC,QAAQ;EAAEC,KAAK;EAAEC,aAAa;EAAEC;AAAsB,CAAC,EAAE;EAChF,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAC3C,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAAU,IAAI,CAAC;EAExC,MAAMZ,GAAG,GAAG,IAAAa,cAAO,EACjB,OAAO;IACLR,KAAK;IACLC,aAAa;IACbC,QAAQ;IACRC,MAAM;IACNM,IAAI,EAAEA,CAAA,KAAML,SAAS,CAAC,IAAI,CAAC;IAC3BM,KAAK,EAAEA,CAAA,KAAMN,SAAS,CAAC,KAAK,CAAC;IAC7BE;EACF,CAAC,CAAC,EACF,CAACN,KAAK,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,MAAM,CACzC,CAAC;EAED,oBAAO,IAAApC,WAAA,CAAA4C,GAAA,EAACpB,aAAa,CAACqB,QAAQ;IAACZ,KAAK,EAAEL,GAAI;IAAAI,QAAA,EAAEA;EAAQ,CAAyB,CAAC;AAChF;;AAEA;AACA;AACA;;AAEO,SAASc,aAAaA,CAAC;EAAEd,QAAQ;EAAEe;AAA0B,CAAC,EAAE;EACrE,MAAMnB,GAAG,GAAGD,gBAAgB,CAAC,CAAC;EAC9B,MAAMqB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAMC,SAAS,GAAG,IAAAC,YAAK,EAAC,CAAC;EACzB,MAAM;IACJC,KAAK,EAAEC,OAAO;IACdC,IAAI,EAAEC,YAAY;IAClBC,KAAK,EAAEC;EACT,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EACzB,MAAM;IAAEN,KAAK,EAAEO,OAAO;IAAEL,IAAI,EAAEM,OAAO;IAAEJ,KAAK,EAAEK;EAAO,CAAC,GAAG,IAAAH,wCAAmB,EAAC,CAAC;EAE9E,IAAI,OAAO1B,QAAQ,KAAK,UAAU,EAAE;IAClC,OAAOA,QAAQ,CAAC;MACd8B,OAAO,EAAE;QACPC,EAAE,EAAEb,SAAS;QACbc,GAAG,EAAE;UAAEC,OAAO,EAAE;QAAK,CAAC;QACtBvB,IAAI,EAAEd,GAAG,CAACc,IAAI;QACdC,KAAK,EAAEf,GAAG,CAACe;MACb,CAAC;MACDS,KAAK,EAAE;QACLC,OAAO;QACPM,OAAO;QACPO,OAAO,EAAE;MACX,CAAC;MACDC,KAAK,EAAE;QACLH,GAAG,EAAEpC,GAAG,CAACW,UAAU;QACnB6B,OAAO,EAAExC,GAAG,CAACc,IAAI;QACjBkB,OAAO;QACPC,MAAM;QACNQ,kBAAkB,EAAEtB;MACtB;IACF,CAAC,CAAC;EACJ;EAEA,oBACE,IAAA/C,WAAA,CAAA4C,GAAA,EAACzD,YAAA,CAAAmF,SAAS;IACRN,GAAG,EAAEpC,GAAG,CAACW,UAA8B;IACvC6B,OAAO,EAAExC,GAAG,CAACc,IAAK;IAClBkB,OAAO,EAAEA,OAAQ;IACjBC,MAAM,EAAEA,MAAO;IACfQ,kBAAkB,EAAEtB,KAAM;IAC1BwB,iBAAiB,EAAC,QAAQ;IAExBhB,YAAY;IACZE,YAAY;IAEde,KAAK,EAAE,CACLC,MAAM,CAACC,OAAO,EACd;MACEC,eAAe,EAAE3B,KAAK,CAAC4B,MAAM,CAACC,UAAU;MACxCC,WAAW,EAAEnB,OAAO,GAAGX,KAAK,CAAC4B,MAAM,CAACG,OAAO,GAAG/B,KAAK,CAAC4B,MAAM,CAACC;IAC7D,CAAC,CACD;IAAA7C,QAAA,EAEDA;EAAQ,CACA,CAAC;AAEhB;;AAEA;AACA;AACA;;AAEO,SAASgD,WAAWA,CAAC;EAC1BhD,QAAQ,EAAEiD,YAAY;EACtBC,WAAW;EACXV;AACgB,CAAC,EAAE;EACnB,MAAM;IAAEvC;EAAM,CAAC,GAAGN,gBAAgB,CAAC,CAAC;EACpC,MAAMqB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EAExB,MAAMkC,OAAO,GAAGlD,KAAK,IAAIiD,WAAW,IAAI,EAAE;EAE1C,oBACE,IAAAlF,WAAA,CAAA4C,GAAA,EAACvD,MAAA,CAAA+F,IAAI;IACHC,aAAa,EAAE,CAAE;IACjBb,KAAK,EAAE,CACLC,MAAM,CAACa,SAAS,EAChB;MAAEC,KAAK,EAAEtD,KAAK,GAAGe,KAAK,CAAC4B,MAAM,CAACY,IAAI,GAAGxC,KAAK,CAAC4B,MAAM,CAACa;IAAc,CAAC,EACjE,IAAIjB,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAC,CACzB;IAAAxC,QAAA,EAEDiD,YAAY,IAAIhD,KAAK,GAAGgD,YAAY,CAAChD,KAAK,CAAC,GAAGkD;EAAO,CAClD,CAAC;AAEX;;AAEA;AACA;AACA;;AAEO,SAASO,UAAUA,CAAC;EAAElB;AAAuB,CAAC,EAAE;EACrD,MAAMxB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,oBAAO,IAAAjD,WAAA,CAAA4C,GAAA,EAAC/C,QAAA,CAAA8F,qCAAe;IAACnB,KAAK,EAAEA,KAAM;IAACoB,IAAI,EAAC,IAAI;IAACC,IAAI,EAAE7C,KAAK,CAAC4B,MAAM,CAACa;EAAc,CAAE,CAAC;AACtF;;AAEA;AACA;AACA;;AAEO,SAASK,aAAaA,CAAI;EAC/BC,KAAK;EACLC,UAAU;EACVjD,KAAK,GAAG,kBAAkB;EAC1BkD,cAAc,GAAGC;AACI,CAAC,EAAE;EACxB,MAAMtE,GAAG,GAAGD,gBAAgB,CAAC,CAAC;EAC9B,MAAMqB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM,CAACkD,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAA9D,eAAQ,EAAmB,IAAI,CAAC;EAChE;EACA;EACA;EACA;EACA,MAAM,CAAC+D,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAhE,eAAQ,EAAqB,IAAI,CAAC;EAE1E,MAAMiE,cAAc,GAAG,IAAAC,kBAAW,EAAEC,IAAiB,IAAK;IACxDH,eAAe,CAACG,IAAqC,CAAC;EACxD,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA;EACA;EACA;EACA,IAAAC,sBAAe,EAAC,MAAM;IACpB,IAAI,CAAC9E,GAAG,CAACQ,MAAM,IAAI,OAAOuE,MAAM,KAAK,WAAW,EAAE;IAElD,MAAMC,WAAW,GAAGhF,GAAG,CAACW,UAAU,CAAC0B,OAA6B;IAChE,IAAI,CAAC2C,WAAW,EAAEC,qBAAqB,IAAI,CAACR,YAAY,EAAE;IAE1D,MAAMS,cAAc,GAAGA,CAAA,KAAM;MAC3B,MAAMC,IAAI,GAAGH,WAAW,CAACC,qBAAqB,CAAC,CAAC;MAChD;MACA;MACA;MACA,MAAMG,OAAO,GAAGX,YAAY,CAACQ,qBAAqB,CAAC,CAAC;MACpD,MAAMI,KAAK,GAAGC,IAAI,CAACC,GAAG,CAACH,OAAO,CAACC,KAAK,EAAEF,IAAI,CAACE,KAAK,CAAC;MAEjDb,WAAW,CAAC;QACVD,QAAQ,EAAEiB,gCAAkB;QAC5B,GAAG,IAAAC,2CAAwB,EAAC;UAC1BC,MAAM,EAAEP,IAAI;UACZnB,IAAI,EAAE;YAAEqB,KAAK;YAAEM,MAAM,EAAEP,OAAO,CAACO;UAAO,CAAC;UACvCC,QAAQ,EAAE;YAAEP,KAAK,EAAEN,MAAM,CAACc,UAAU;YAAEF,MAAM,EAAEZ,MAAM,CAACe;UAAY,CAAC;UAClEC,MAAM,EAAEpG,aAAa;UACrBqG,MAAM,EAAEtG,eAAe;UACvBuG,KAAK,EAAE;QACT,CAAC,CAAC;QACFC,QAAQ,EAAEb;MACZ,CAAC,CAAC;IACJ,CAAC;IAEDH,cAAc,CAAC,CAAC;IAChBH,MAAM,CAACoB,gBAAgB,CAAC,QAAQ,EAAEjB,cAAc,CAAC;IACjDH,MAAM,CAACoB,gBAAgB,CAAC,QAAQ,EAAEjB,cAAc,EAAE,IAAI,CAAC;IAEvD,OAAO,MAAM;MACXH,MAAM,CAACqB,mBAAmB,CAAC,QAAQ,EAAElB,cAAc,CAAC;MACpDH,MAAM,CAACqB,mBAAmB,CAAC,QAAQ,EAAElB,cAAc,EAAE,IAAI,CAAC;IAC5D,CAAC;EACH,CAAC,EAAE,CAAClF,GAAG,CAACQ,MAAM,EAAER,GAAG,CAACW,UAAU,EAAE8D,YAAY,CAAC,CAAC;EAE9C,IAAI,CAACzE,GAAG,CAACQ,MAAM,EAAE,OAAO,IAAI;EAE5B,oBACE,IAAApC,WAAA,CAAAiI,IAAA,EAAC1I,SAAA,CAAA2I,MAAM;IAAAlG,QAAA,gBACL,IAAAhC,WAAA,CAAA4C,GAAA,EAACtD,OAAA,CAAA6I,QAAQ;MACP3D,KAAK,EAAEC,MAAM,CAAC2D,QAAS;MACvBhE,OAAO,EAAExC,GAAG,CAACe,KAAM;MACnB0B,kBAAkB,EAAC;IAAiB,CACrC,CAAC,eACF,IAAArE,WAAA,CAAA4C,GAAA,EAACzD,YAAA,CAAAkJ,IAAI;MACHrE,GAAG,EAAEuC,cAAe;MACpBhC,iBAAiB,EAAC,MAAM;MACxBF,kBAAkB,EAAEtB,KAAM;MAC1ByB,KAAK,EAAE,CACLC,MAAM,CAAC6D,QAAQ,EACf;QACE3D,eAAe,EAAE3B,KAAK,CAACuF,MAAM,GACzBvF,KAAK,CAAC4B,MAAM,CAAC4D,mBAAmB,GAChCxF,KAAK,CAAC4B,MAAM,CAAC6D,UAAU;QAC3B3D,WAAW,EAAE9B,KAAK,CAAC4B,MAAM,CAAC8D,WAAW;QACrC,GAAG,IAAAC,yBAAgB,EAAC,GAAG;MACzB,CAAC,EACDxC,QAAQ,CACR;MAAAnE,QAAA,EAED+D,KAAK,CAAC6C,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACrB,IAAA9I,WAAA,CAAA4C,GAAA,EAAC5D,MAAA,CAAA2B,OAAK,CAACoI,QAAQ;QAAA/G,QAAA,EACZgE,UAAU,CAAC6C,IAAI,EAAEC,KAAK,EAAElH,GAAG,CAACK,KAAK;MAAC,GADhBgE,cAAc,CAAC4C,IAAI,CAExB,CACjB;IAAC,CACE,CAAC;EAAA,CACD,CAAC;AAEb;;AAEA;AACA;AACA;;AAEO,SAASG,UAAUA,CAAC;EAAEhF,GAAG;EAAE/B,KAAK;EAAEc,KAAK;EAAEf,QAAQ;EAAEwC;AAAuB,CAAC,EAAE;EAClF,MAAMxB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAMrB,GAAG,GAAGD,gBAAgB,CAAC,CAAC;EAC9B,MAAM;IACJyB,KAAK,EAAEC,OAAO;IACdC,IAAI,EAAEC,YAAY;IAClBC,KAAK,EAAEC;EACT,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EACzB,MAAM;IAAEN,KAAK,EAAEO,OAAO;IAAEL,IAAI,EAAEM,OAAO;IAAEJ,KAAK,EAAEK;EAAO,CAAC,GAAG,IAAAH,wCAAmB,EAAC,CAAC;EAE9E,MAAMuF,UAAU,GAAGrH,GAAG,CAACK,KAAK,KAAKA,KAAK;EAEtC,MAAMiH,OAAO,GAAG,IAAAzG,cAAO,EACrB,OAAO;IAAE0G,QAAQ,EAAEF,UAAU;IAAE5F,OAAO;IAAEM,OAAO;IAAEO,OAAO,EAAE;EAAM,CAAC,CAAC,EAClE,CAAC+E,UAAU,EAAE5F,OAAO,EAAEM,OAAO,CAC/B,CAAC;EAED,oBACE,IAAA3D,WAAA,CAAA4C,GAAA,EAACzD,YAAA,CAAAmF,SAAS;IACRN,GAAG,EAAEA,GAAI;IACTO,iBAAiB,EAAC;IAClB;IACA;IACA;IAAA;IACAF,kBAAkB,EAAEtB,KAAM;IAC1BqG,kBAAkB,EAAE;MAAEC,OAAO,EAAEJ;IAAW,CAAE;IAC5C7E,OAAO,EAAEA,CAAA,KAAM;MACbxC,GAAG,CAACM,aAAa,GAAGD,KAAK,CAAC;MAC1BL,GAAG,CAACe,KAAK,CAAC,CAAC;IACb,CAAE;IACFiB,OAAO,EAAEA,OAAQ;IACjBC,MAAM,EAAEA,MAAO;IAEbN,YAAY;IACZE,YAAY;IAEde,KAAK,EAAE,CACLC,MAAM,CAACoE,IAAI,EACX,CAACxF,OAAO,IAAIM,OAAO,KAAK;MAAEgB,eAAe,EAAE3B,KAAK,CAAC4B,MAAM,CAAC0E;IAAa,CAAC,EACtE9E,KAAK,CACL;IAAAxC,QAAA,eAEF,IAAAhC,WAAA,CAAA4C,GAAA,EAAC7C,OAAA,CAAAwJ,WAAW,CAAC1G,QAAQ;MAACZ,KAAK,EAAEiH,OAAQ;MAAAlH,QAAA,EAAEA;IAAQ,CAAuB;EAAC,CAC9D,CAAC;AAEhB;;AAEA;AACA;AACA;;AAEO,SAASwH,cAAcA,CAAC;EAAExH,QAAQ;EAAEwC;AAA2B,CAAC,EAAE;EACvE,oBACE,IAAAxE,WAAA,CAAA4C,GAAA,EAACvD,MAAA,CAAA+F,IAAI;IAACZ,KAAK,EAAE,CAACC,MAAM,CAACgF,QAAQ,EAAE,IAAIjF,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAC,CAAE;IAAAxC,QAAA,EACvDA;EAAQ,CACL,CAAC;AAEX;;AAEA;AACA;AACA;;AAEO,SAAS0H,mBAAmBA,CAAC;EAAEC,IAAI,EAAEC,aAAa,GAAGC;AAAoC,CAAC,EAAE;EACjG,MAAM;IAAEV;EAAS,CAAC,GAAG,IAAAW,4BAAoB,EAAC,CAAC;EAE3C,IAAI,CAACX,QAAQ,EAAE;IACb,oBAAO,IAAAnJ,WAAA,CAAA4C,GAAA,EAACzD,YAAA,CAAAkJ,IAAI;MAAC7D,KAAK,EAAEC,MAAM,CAACsF;IAAyB,CAAE,CAAC;EACzD;EAEA,oBACE,IAAA/J,WAAA,CAAA4C,GAAA,EAACzD,YAAA,CAAAkJ,IAAI;IAAC7D,KAAK,EAAEC,MAAM,CAACuF,sBAAuB;IAAAhI,QAAA,eACzC,IAAAhC,WAAA,CAAA4C,GAAA,EAACgH,aAAa;MAAChE,IAAI,EAAC;IAAI,CAAE;EAAC,CACvB,CAAC;AAEX;;AAEA;AACA;AACA;;AAEO,SAASqE,eAAeA,CAAA,EAAG;EAChC,MAAMjH,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EAExB,oBACE,IAAAjD,WAAA,CAAA4C,GAAA,EAACzD,YAAA,CAAAkJ,IAAI;IACH7D,KAAK,EAAE,CACLC,MAAM,CAACyF,SAAS,EAChB;MAAEvF,eAAe,EAAE3B,KAAK,CAAC4B,MAAM,CAAC8D;IAAY,CAAC;EAC7C,CACH,CAAC;AAEN;;AAEA;AACA;AACA;;AAEA,MAAMjE,MAAM,GAAG0F,uBAAU,CAACC,MAAM,CAAC;EAC/B1F,OAAO,EAAE;IACP2F,aAAa,EAAE,KAAK;IACpBlE,QAAQ,EAAE,UAAU;IACpBmE,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,CAAC;IACNC,cAAc,EAAE,eAAe;IAC/BC,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE,EAAE;IACrBC,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE,GAAG;IACbC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE;EACf,CAAC;EACDxF,SAAS,EAAE;IACTyF,QAAQ,EAAE;EACZ,CAAC;EACD3C,QAAQ,EAAE;IACRjC,QAAQ,EAAEiB,gCAAkB;IAC5B4D,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAEhK,YAAY,CAACgH,QAAQ;IAC7B;IACAiD,aAAa,EAAE;EACjB,CAAC;EACD/C,QAAQ,EAAE;IACR;IACA;IACA;IACA;IACA;IACAnC,QAAQ,EAAEiB,gCAAkB;IAC5B4D,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPG,MAAM,EAAEhK,YAAY,CAAC4F,OAAO;IAC5B2D,YAAY,EAAE,CAAC;IACfE,WAAW,EAAE,CAAC;IACdS,QAAQ,EAAE,QAAQ;IAClBC,OAAO,EAAE,CAAC;IACVzD,QAAQ,EAAE,GAAG;IACb;IACA;IACAuD,aAAa,EAAE;EACjB,CAAC;EACDxC,IAAI,EAAE;IACJ1C,QAAQ,EAAE,UAAU;IACpBkE,aAAa,EAAE,KAAK;IACpB;IACA;IACA;IACA;IACAmB,SAAS,EAAE,EAAE;IACbC,WAAW,EAAE,EAAE;IACfC,YAAY,EAAE,CAAC;IACfpB,UAAU,EAAE,QAAQ;IACpBK,YAAY,EAAE,CAAC;IACfF,eAAe,EAAE;EACnB,CAAC;EACDhB,QAAQ,EAAE;IACRsB,QAAQ,EAAE;EACZ,CAAC;EACDhB,wBAAwB,EAAE;IACxB5D,QAAQ,EAAE,UAAU;IACpB8E,IAAI,EAAE,CAAC;IACPhE,KAAK,EAAE;EACT,CAAC;EACD+C,sBAAsB,EAAE;IACtB7D,QAAQ,EAAE,UAAU;IACpB8E,IAAI,EAAE,CAAC;IACPhE,KAAK,EAAE,EAAE;IACTqD,UAAU,EAAE,QAAQ;IACpBE,cAAc,EAAE;EAClB,CAAC;EACDN,SAAS,EAAE;IACT3C,MAAM,EAAE,CAAC;IACToE,cAAc,EAAE,CAAC;IACjB1E,KAAK,EAAE;EACT;AACF,CAAC,CAAC","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
- position: 'absolute',
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,
@@ -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":[]}
@@ -7,7 +7,7 @@ export declare function SelectTrigger({ children, label }: SelectTriggerProps):
7
7
  export declare function SelectValue({ children: extractLabel, placeholder, style, }: SelectValueProps): import("react/jsx-runtime").JSX.Element;
8
8
  export declare function SelectIcon({ style }: SelectIconProps): import("react/jsx-runtime").JSX.Element;
9
9
  export declare function SelectContent<T>({ items, renderItem, label, valueExtractor, }: SelectContentProps<T>): import("react/jsx-runtime").JSX.Element | null;
10
- export declare function SelectItem({ ref, value, children, style }: SelectItemProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function SelectItem({ ref, value, label, children, style }: SelectItemProps): import("react/jsx-runtime").JSX.Element;
11
11
  export declare function SelectItemText({ children, style }: SelectItemTextProps): import("react/jsx-runtime").JSX.Element;
12
12
  export declare function SelectItemIndicator({ icon: IconComponent }: SelectItemIndicatorProps): import("react/jsx-runtime").JSX.Element;
13
13
  export declare function SelectSeparator(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/select/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAgBnF,OAAO,EAA0C,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,WAAW,EAEX,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,CAAC;AA6BhC,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW,2CAgB/E;AAMD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,yTAuDpE;AAMD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CAkBlB;AAMD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CAGpD;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,KAAK,EACL,UAAU,EACV,KAA0B,EAC1B,cAA0C,GAC3C,EAAE,kBAAkB,CAAC,CAAC,CAAC,kDAmCvB;AAMD,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,2CAyC1E;AAMD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,mBAAmB,2CAMtE;AAMD,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAyB,EAAE,EAAE,wBAAwB,2CAYhG;AAMD,wBAAgB,eAAe,4CAW9B"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/select/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAiBf,OAAO,EAA0C,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,WAAW,EAEX,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAiChC,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW,2CAkB/E;AAMD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,yTAyDpE;AAMD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CAkBlB;AAMD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CAGpD;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,KAAK,EACL,UAAU,EACV,KAA0B,EAC1B,cAA0C,GAC3C,EAAE,kBAAkB,CAAC,CAAC,CAAC,kDAyFvB;AAMD,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,2CA6CjF;AAMD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,mBAAmB,2CAMtE;AAMD,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAyB,EAAE,EAAE,wBAAwB,2CAYhG;AAMD,wBAAgB,eAAe,4CAW9B"}
@@ -19,6 +19,12 @@ export type TriggerChildProps = {
19
19
  pressed: boolean;
20
20
  };
21
21
  props: {
22
+ /**
23
+ * Attach this to the element the trigger actually renders. On web the
24
+ * dropdown is positioned against its measured rect; a trigger that drops
25
+ * it falls back to the viewport's top-left corner.
26
+ */
27
+ ref?: React.Ref<unknown>;
22
28
  onPress: () => void;
23
29
  onFocus: () => void;
24
30
  onBlur: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/select/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/select/types.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare function SelectTrigger({ children, label }: SelectTriggerProps):
7
7
  export declare function SelectValue({ children: extractLabel, placeholder, style, }: SelectValueProps): import("react/jsx-runtime").JSX.Element;
8
8
  export declare function SelectIcon({ style }: SelectIconProps): import("react/jsx-runtime").JSX.Element;
9
9
  export declare function SelectContent<T>({ items, renderItem, label, valueExtractor, }: SelectContentProps<T>): import("react/jsx-runtime").JSX.Element | null;
10
- export declare function SelectItem({ ref, value, children, style }: SelectItemProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function SelectItem({ ref, value, label, children, style }: SelectItemProps): import("react/jsx-runtime").JSX.Element;
11
11
  export declare function SelectItemText({ children, style }: SelectItemTextProps): import("react/jsx-runtime").JSX.Element;
12
12
  export declare function SelectItemIndicator({ icon: IconComponent }: SelectItemIndicatorProps): import("react/jsx-runtime").JSX.Element;
13
13
  export declare function SelectSeparator(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/select/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAgBnF,OAAO,EAA0C,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,WAAW,EAEX,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,CAAC;AA6BhC,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW,2CAgB/E;AAMD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,yTAuDpE;AAMD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CAkBlB;AAMD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CAGpD;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,KAAK,EACL,UAAU,EACV,KAA0B,EAC1B,cAA0C,GAC3C,EAAE,kBAAkB,CAAC,CAAC,CAAC,kDAmCvB;AAMD,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,2CAyC1E;AAMD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,mBAAmB,2CAMtE;AAMD,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAyB,EAAE,EAAE,wBAAwB,2CAYhG;AAMD,wBAAgB,eAAe,4CAW9B"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/select/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAiBf,OAAO,EAA0C,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,WAAW,EAEX,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAiChC,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW,2CAkB/E;AAMD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,yTAyDpE;AAMD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EAAE,YAAY,EACtB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,2CAkBlB;AAMD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CAGpD;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,KAAK,EACL,UAAU,EACV,KAA0B,EAC1B,cAA0C,GAC3C,EAAE,kBAAkB,CAAC,CAAC,CAAC,kDAyFvB;AAMD,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,2CA6CjF;AAMD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,mBAAmB,2CAMtE;AAMD,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAyB,EAAE,EAAE,wBAAwB,2CAYhG;AAMD,wBAAgB,eAAe,4CAW9B"}
@@ -19,6 +19,12 @@ export type TriggerChildProps = {
19
19
  pressed: boolean;
20
20
  };
21
21
  props: {
22
+ /**
23
+ * Attach this to the element the trigger actually renders. On web the
24
+ * dropdown is positioned against its measured rect; a trigger that drops
25
+ * it falls back to the viewport's top-left corner.
26
+ */
27
+ ref?: React.Ref<unknown>;
22
28
  onPress: () => void;
23
29
  onFocus: () => void;
24
30
  onBlur: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/select/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/select/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.70.0",
3
+ "version": "0.71.0",
4
4
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react-native';
3
+
4
+ import { BloomThemeProvider } from '../theme/BloomThemeProvider';
5
+ // Imported by explicit filename: jest has no platform-extension resolution, so
6
+ // `'../select'` would silently exercise the NATIVE fork — which has always
7
+ // applied the label — and the suite would pass no matter what the web fork did.
8
+ import {
9
+ Select as WebSelect,
10
+ SelectItem as WebSelectItem,
11
+ SelectItemText as WebSelectItemText,
12
+ } from '../select/index.web';
13
+ import {
14
+ Select as NativeSelect,
15
+ SelectItem as NativeSelectItem,
16
+ SelectItemText as NativeSelectItemText,
17
+ } from '../select/index';
18
+
19
+ /**
20
+ * `SelectItem` renders `accessibilityRole="radio"`. A radio with no accessible
21
+ * name is announced as nothing at all, and the web fork declared `label` in its
22
+ * props type and then dropped it on the floor — invisible to `tsc`, since an
23
+ * unused destructured prop is not an error.
24
+ *
25
+ * Both forks are asserted from one file so the platforms cannot drift again.
26
+ */
27
+ describe.each([
28
+ ['web', WebSelect, WebSelectItem, WebSelectItemText] as const,
29
+ ['native', NativeSelect, NativeSelectItem, NativeSelectItemText] as const,
30
+ ])('SelectItem (%s fork)', (_platform, Select, SelectItem, SelectItemText) => {
31
+ it('exposes its label as the accessible name', () => {
32
+ const { getByLabelText } = render(
33
+ <BloomThemeProvider mode="light" colorPreset="teal">
34
+ <Select value="a">
35
+ <SelectItem value="a" label="Option A">
36
+ <SelectItemText>Option A</SelectItemText>
37
+ </SelectItem>
38
+ </Select>
39
+ </BloomThemeProvider>,
40
+ );
41
+
42
+ const item = getByLabelText('Option A');
43
+ expect(item).toBeTruthy();
44
+ expect(item.props.accessibilityRole).toBe('radio');
45
+ });
46
+ });
@@ -1,5 +1,14 @@
1
- import React, { createContext, useContext, useId, useMemo, useState } from 'react';
2
- import { Pressable, StyleSheet, View } from 'react-native';
1
+ import React, {
2
+ createContext,
3
+ useCallback,
4
+ useContext,
5
+ useId,
6
+ useLayoutEffect,
7
+ useMemo,
8
+ useRef,
9
+ useState,
10
+ } from 'react';
11
+ import { Pressable, StyleSheet, View, type ViewStyle } from 'react-native';
3
12
 
4
13
  import { useTheme } from '../theme/use-theme';
5
14
  import { Text } from '../typography';
@@ -7,6 +16,7 @@ import { Backdrop } from '../overlay';
7
16
  import { Portal } from '../portal/index.web';
8
17
  import { createOverlayZIndex } from '../styles/z-index';
9
18
  import { WEB_POSITION_FIXED } from '../styles/web-view-style';
19
+ import { resolveDropdownPlacement } from '../overlay/dropdown-placement';
10
20
  import { bloomShadowStyle } from '../design-tokens/shadows';
11
21
  import { RadioIndicator } from '../radio-indicator';
12
22
  import { useInteractionState } from '../hooks/useInteractionState';
@@ -30,6 +40,8 @@ import type {
30
40
  export { useSelectItemContext };
31
41
 
32
42
  const selectZIndex = createOverlayZIndex();
43
+ const VIEWPORT_GUTTER = 8;
44
+ const SELECT_OFFSET = 6;
33
45
 
34
46
  // ---------------------------------------------------------------------------
35
47
  // Context
@@ -39,6 +51,8 @@ type SelectContextValue = Pick<SelectProps, 'value' | 'onValueChange' | 'disable
39
51
  isOpen: boolean;
40
52
  open: () => void;
41
53
  close: () => void;
54
+ /** The trigger element, so `SelectContent` can position itself against it. */
55
+ triggerRef: React.RefObject<unknown>;
42
56
  };
43
57
 
44
58
  const SelectContext = createContext<SelectContextValue | null>(null);
@@ -58,6 +72,7 @@ function useSelectContext(): SelectContextValue {
58
72
 
59
73
  export function Select({ children, value, onValueChange, disabled }: SelectProps) {
60
74
  const [isOpen, setIsOpen] = useState(false);
75
+ const triggerRef = useRef<unknown>(null);
61
76
 
62
77
  const ctx = useMemo<SelectContextValue>(
63
78
  () => ({
@@ -67,6 +82,7 @@ export function Select({ children, value, onValueChange, disabled }: SelectProps
67
82
  isOpen,
68
83
  open: () => setIsOpen(true),
69
84
  close: () => setIsOpen(false),
85
+ triggerRef,
70
86
  }),
71
87
  [value, onValueChange, disabled, isOpen],
72
88
  );
@@ -103,6 +119,7 @@ export function SelectTrigger({ children, label }: SelectTriggerProps) {
103
119
  pressed: false,
104
120
  },
105
121
  props: {
122
+ ref: ctx.triggerRef,
106
123
  onPress: ctx.open,
107
124
  onFocus,
108
125
  onBlur,
@@ -113,6 +130,7 @@ export function SelectTrigger({ children, label }: SelectTriggerProps) {
113
130
 
114
131
  return (
115
132
  <Pressable
133
+ ref={ctx.triggerRef as React.Ref<View>}
116
134
  onPress={ctx.open}
117
135
  onFocus={onFocus}
118
136
  onBlur={onBlur}
@@ -184,6 +202,58 @@ export function SelectContent<T>({
184
202
  }: SelectContentProps<T>) {
185
203
  const ctx = useSelectContext();
186
204
  const theme = useTheme();
205
+ const [position, setPosition] = useState<ViewStyle | null>(null);
206
+ // The mounted dropdown node, as STATE rather than a bare ref: positioning has
207
+ // to measure it, and `Portal` renders null on its first pass (it resolves its
208
+ // host in its own layout effect), so the node lands one render after `isOpen`
209
+ // flips. An effect keyed only on `isOpen` would measure nothing.
210
+ const [dropdownNode, setDropdownNode] = useState<HTMLElement | null>(null);
211
+
212
+ const attachDropdown = useCallback((node: View | null) => {
213
+ setDropdownNode(node as unknown as HTMLElement | null);
214
+ }, []);
215
+
216
+ // Anchored to the trigger, left edges aligned, and never off-screen: sit below
217
+ // when it fits, flip above when it doesn't, clamp when neither. Before this the
218
+ // dropdown had no `top`/`left` at all, so it rendered at the `Portal` root's
219
+ // origin — the viewport's top-left corner — however far from its trigger.
220
+ useLayoutEffect(() => {
221
+ if (!ctx.isOpen || typeof window === 'undefined') return;
222
+
223
+ const triggerNode = ctx.triggerRef.current as HTMLElement | null;
224
+ if (!triggerNode?.getBoundingClientRect || !dropdownNode) return;
225
+
226
+ const updatePosition = () => {
227
+ const rect = triggerNode.getBoundingClientRect();
228
+ // Measured BEFORE `minWidth` is applied, so the final surface can only be
229
+ // wider than this — and a wider surface wraps less, so the measured height
230
+ // is an upper bound. Erring that way flips early in a tie, never late.
231
+ const surface = dropdownNode.getBoundingClientRect();
232
+ const width = Math.max(surface.width, rect.width);
233
+
234
+ setPosition({
235
+ position: WEB_POSITION_FIXED,
236
+ ...resolveDropdownPlacement({
237
+ anchor: rect,
238
+ size: { width, height: surface.height },
239
+ viewport: { width: window.innerWidth, height: window.innerHeight },
240
+ offset: SELECT_OFFSET,
241
+ gutter: VIEWPORT_GUTTER,
242
+ align: 'start',
243
+ }),
244
+ minWidth: width,
245
+ });
246
+ };
247
+
248
+ updatePosition();
249
+ window.addEventListener('resize', updatePosition);
250
+ window.addEventListener('scroll', updatePosition, true);
251
+
252
+ return () => {
253
+ window.removeEventListener('resize', updatePosition);
254
+ window.removeEventListener('scroll', updatePosition, true);
255
+ };
256
+ }, [ctx.isOpen, ctx.triggerRef, dropdownNode]);
187
257
 
188
258
  if (!ctx.isOpen) return null;
189
259
 
@@ -195,6 +265,7 @@ export function SelectContent<T>({
195
265
  accessibilityLabel="Close selection"
196
266
  />
197
267
  <View
268
+ ref={attachDropdown}
198
269
  accessibilityRole="list"
199
270
  accessibilityLabel={label}
200
271
  style={[
@@ -206,6 +277,7 @@ export function SelectContent<T>({
206
277
  borderColor: theme.colors.borderLight,
207
278
  ...bloomShadowStyle('m'),
208
279
  },
280
+ position,
209
281
  ]}
210
282
  >
211
283
  {items.map((item, index) => (
@@ -222,7 +294,7 @@ export function SelectContent<T>({
222
294
  // SelectItem
223
295
  // ---------------------------------------------------------------------------
224
296
 
225
- export function SelectItem({ ref, value, children, style }: SelectItemProps) {
297
+ export function SelectItem({ ref, value, label, children, style }: SelectItemProps) {
226
298
  const theme = useTheme();
227
299
  const ctx = useSelectContext();
228
300
  const {
@@ -243,6 +315,10 @@ export function SelectItem({ ref, value, children, style }: SelectItemProps) {
243
315
  <Pressable
244
316
  ref={ref}
245
317
  accessibilityRole="radio"
318
+ // The native fork has always applied this; web declared `label` and then
319
+ // dropped it, leaving every option a `role="radio"` with no accessible
320
+ // name for a screen reader to announce.
321
+ accessibilityLabel={label}
246
322
  accessibilityState={{ checked: isSelected }}
247
323
  onPress={() => {
248
324
  ctx.onValueChange?.(value);
@@ -344,7 +420,14 @@ const styles = StyleSheet.create({
344
420
  pointerEvents: 'auto',
345
421
  },
346
422
  dropdown: {
347
- position: 'absolute',
423
+ // Fixed from the outset, not only once positioned: the `Portal` root is a
424
+ // block container, so a static child would stretch to the full viewport
425
+ // width and the pre-position measurement would under-read the height (less
426
+ // wrapping at a width the surface never actually has). A fixed box
427
+ // shrink-wraps to the same width it ends up with.
428
+ position: WEB_POSITION_FIXED,
429
+ top: 0,
430
+ left: 0,
348
431
  zIndex: selectZIndex.surface,
349
432
  borderRadius: 8,
350
433
  borderWidth: 1,
@@ -23,6 +23,12 @@ export type TriggerChildProps = {
23
23
  pressed: boolean;
24
24
  };
25
25
  props: {
26
+ /**
27
+ * Attach this to the element the trigger actually renders. On web the
28
+ * dropdown is positioned against its measured rect; a trigger that drops
29
+ * it falls back to the viewport's top-left corner.
30
+ */
31
+ ref?: React.Ref<unknown>;
26
32
  onPress: () => void;
27
33
  onFocus: () => void;
28
34
  onBlur: () => void;