@oxyhq/bloom 0.8.3 → 0.8.4

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.
@@ -22,11 +22,14 @@ var _react = _interopRequireWildcard(require("react"));
22
22
  var _reactNative = require("react-native");
23
23
  var _useTheme = require("../theme/use-theme.js");
24
24
  var _index = require("../typography/index.js");
25
+ var _indexWeb = require("../portal/index.web.js");
25
26
  var _zIndex = require("../styles/z-index.js");
26
27
  var _context = require("./context.js");
27
28
  var _jsxRuntime = require("react/jsx-runtime");
28
29
  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); }
29
30
  const menuZIndex = (0, _zIndex.createDropdownZIndex)();
31
+ const VIEWPORT_GUTTER = 8;
32
+ const MENU_OFFSET = 6;
30
33
  function useMenuControl() {
31
34
  const id = (0, _react.useId)();
32
35
  const [isOpen, setIsOpen] = (0, _react.useState)(false);
@@ -74,9 +77,13 @@ function Root({
74
77
  const activeControl = control ?? defaultControl;
75
78
  const dialogControl = useMenuControlAsDialogControl(activeControl);
76
79
  const rootRef = (0, _react.useRef)(null);
80
+ const triggerRef = (0, _react.useRef)(null);
81
+ const dropdownRef = (0, _react.useRef)(null);
77
82
  const context = (0, _react.useMemo)(() => ({
78
83
  control: dialogControl,
79
- isOpen: activeControl.isOpen
84
+ isOpen: activeControl.isOpen,
85
+ triggerRef,
86
+ dropdownRef
80
87
  }), [activeControl.isOpen, dialogControl]);
81
88
  (0, _react.useEffect)(() => {
82
89
  if (!activeControl.isOpen || typeof document === 'undefined') {
@@ -84,7 +91,9 @@ function Root({
84
91
  }
85
92
  const handlePointerDown = event => {
86
93
  const rootNode = rootRef.current;
87
- if (rootNode?.contains(event.target)) {
94
+ const dropdownNode = dropdownRef.current;
95
+ const eventTarget = event.target;
96
+ if (rootNode?.contains(eventTarget) || dropdownNode?.contains(eventTarget)) {
88
97
  return;
89
98
  }
90
99
  activeControl.close();
@@ -117,7 +126,8 @@ function Trigger({
117
126
  hint
118
127
  }) {
119
128
  const {
120
- control
129
+ control,
130
+ triggerRef
121
131
  } = (0, _context.useMenuContext)();
122
132
  const [hovered, setHovered] = (0, _react.useState)(false);
123
133
  const [focused, setFocused] = (0, _react.useState)(false);
@@ -129,6 +139,7 @@ function Trigger({
129
139
  pressed: false
130
140
  },
131
141
  props: {
142
+ ref: triggerRef,
132
143
  onPress: () => control.open(),
133
144
  onFocus: () => setFocused(true),
134
145
  onBlur: () => setFocused(false),
@@ -144,18 +155,51 @@ function Outer({
144
155
  }) {
145
156
  const theme = (0, _useTheme.useTheme)();
146
157
  const context = (0, _context.useMenuContext)();
147
- const dropdownRef = (0, _react.useRef)(null);
158
+ const [position, setPosition] = (0, _react.useState)(null);
159
+ (0, _react.useLayoutEffect)(() => {
160
+ if (!context.isOpen || typeof window === 'undefined') {
161
+ return;
162
+ }
163
+ const triggerNode = context.triggerRef?.current;
164
+ if (!triggerNode?.getBoundingClientRect) {
165
+ return;
166
+ }
167
+ const updatePosition = () => {
168
+ const rect = triggerNode.getBoundingClientRect();
169
+ const width = Math.max(180, rect.width);
170
+ const availableRight = window.innerWidth - VIEWPORT_GUTTER;
171
+ const left = Math.min(Math.max(VIEWPORT_GUTTER, rect.right - width), Math.max(VIEWPORT_GUTTER, availableRight - width));
172
+ const top = Math.min(rect.bottom + MENU_OFFSET, Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER));
173
+ setPosition({
174
+ position: 'fixed',
175
+ top,
176
+ left,
177
+ right: undefined,
178
+ bottom: undefined,
179
+ minWidth: width
180
+ });
181
+ };
182
+ updatePosition();
183
+ window.addEventListener('resize', updatePosition);
184
+ window.addEventListener('scroll', updatePosition, true);
185
+ return () => {
186
+ window.removeEventListener('resize', updatePosition);
187
+ window.removeEventListener('scroll', updatePosition, true);
188
+ };
189
+ }, [context.isOpen, context.triggerRef]);
148
190
  if (!context.isOpen) {
149
191
  return null;
150
192
  }
151
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
152
- ref: dropdownRef,
153
- style: [styles.dropdown, {
154
- backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
155
- borderColor: theme.colors.borderLight,
156
- shadowColor: theme.colors.shadow
157
- }, style],
158
- children: children
193
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_indexWeb.Portal, {
194
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
195
+ ref: context.dropdownRef,
196
+ style: [styles.dropdown, {
197
+ backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
198
+ borderColor: theme.colors.borderLight,
199
+ shadowColor: theme.colors.shadow
200
+ }, style, styles.portaledDropdown, position],
201
+ children: children
202
+ })
159
203
  });
160
204
  }
161
205
  function Item({
@@ -270,6 +314,9 @@ const styles = _reactNative.StyleSheet.create({
270
314
  },
271
315
  minWidth: 180
272
316
  },
317
+ portaledDropdown: {
318
+ pointerEvents: 'auto'
319
+ },
273
320
  webItem: {
274
321
  flexDirection: 'row',
275
322
  alignItems: 'center',
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_zIndex","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","menuZIndex","createDropdownZIndex","useMenuControl","id","useId","isOpen","setIsOpen","useState","useMemo","open","close","useMenuControlAsDialogControl","menuControl","ref","useRef","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","context","useEffect","document","undefined","handlePointerDown","event","rootNode","current","contains","target","handleKeyDown","key","addEventListener","removeEventListener","jsx","MenuContext","Provider","value","View","style","styles","root","openRoot","Trigger","label","role","hint","useMenuContext","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","useTheme","dropdownRef","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","Item","rest","handlePress","useCallback","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","Pressable","onMouseEnter","onMouseLeave","webItem","contrast50","ItemContext","ItemText","useMenuItemContext","Text","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","position","fill","iconLeft","iconRight","size","textSecondary","Group","Fragment","Divider","divider","StyleSheet","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","width","height","minWidth","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_indexWeb","_zIndex","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","menuZIndex","createDropdownZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","useId","isOpen","setIsOpen","useState","useMemo","open","close","useMenuControlAsDialogControl","menuControl","ref","useRef","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","useEffect","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","jsx","MenuContext","Provider","value","View","style","styles","root","openRoot","Trigger","label","role","hint","useMenuContext","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","useTheme","position","setPosition","useLayoutEffect","window","triggerNode","getBoundingClientRect","updatePosition","rect","width","Math","max","availableRight","innerWidth","left","min","right","top","bottom","innerHeight","minWidth","Portal","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","portaledDropdown","Item","rest","handlePress","useCallback","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","Pressable","onMouseEnter","onMouseLeave","webItem","contrast50","ItemContext","ItemText","useMenuItemContext","Text","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","fill","iconLeft","iconRight","size","textSecondary","Group","Fragment","Divider","divider","StyleSheet","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","height","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAYA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAKmB,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,wBAAAS,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAX,uBAAA,YAAAA,CAAAS,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;AAYnB,MAAMkB,UAAU,GAAG,IAAAC,4BAAoB,EAAC,CAAC;AACzC,MAAMC,eAAe,GAAG,CAAC;AACzB,MAAMC,WAAW,GAAG,CAAC;AASd,SAASC,cAAcA,CAAA,EAAqB;EACjD,MAAMC,EAAE,GAAG,IAAAC,YAAK,EAAC,CAAC;EAClB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAE3C,OAAO,IAAAC,cAAO,EACZ,OAAO;IACLL,EAAE;IACFE,MAAM;IACNI,IAAIA,CAAA,EAAG;MACLH,SAAS,CAAC,IAAI,CAAC;IACjB,CAAC;IACDI,KAAKA,CAAA,EAAG;MACNJ,SAAS,CAAC,KAAK,CAAC;IAClB;EACF,CAAC,CAAC,EACF,CAACH,EAAE,EAAEE,MAAM,CACb,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASM,6BAA6BA,CACpCC,WAA6B,EACT;EACpB,MAAMC,GAAG,GAAG,IAAAC,aAAM,EAAgE,IAAI,CAAC;EAEvF,OAAO,IAAAN,cAAO,EAAqB,MAAM;IACvC,MAAMO,aAAiC,GAAG;MACxCZ,EAAE,EAAES,WAAW,CAACT,EAAE;MAClBU,GAAG;MACHJ,IAAIA,CAAA,EAAG;QACLG,WAAW,CAACH,IAAI,CAAC,CAAC;MACpB,CAAC;MACDC,KAAKA,CAACM,EAAe,EAAE;QACrBJ,WAAW,CAACF,KAAK,CAAC,CAAC;QACnB,IAAI,OAAOM,EAAE,KAAK,UAAU,EAAE;UAC5BA,EAAE,CAAC,CAAC;QACN;MACF;IACF,CAAC;IACD,OAAOD,aAAa;EACtB,CAAC,EAAE,CAACH,WAAW,CAAC,CAAC;AACnB;AAEO,SAASK,IAAIA,CAAC;EACnBC,QAAQ;EACRC;AAGD,CAAC,EAAE;EACF,MAAMC,cAAc,GAAGlB,cAAc,CAAC,CAAC;EACvC,MAAMmB,aAAa,GAAGF,OAAO,IAAIC,cAAc;EAC/C,MAAML,aAAa,GAAGJ,6BAA6B,CAACU,aAAa,CAAC;EAClE,MAAMC,OAAO,GAAG,IAAAR,aAAM,EAAO,IAAI,CAAC;EAClC,MAAMS,UAAU,GAAG,IAAAT,aAAM,EAAU,IAAI,CAAC;EACxC,MAAMU,WAAW,GAAG,IAAAV,aAAM,EAAU,IAAI,CAAC;EAEzC,MAAMW,OAAO,GAAG,IAAAjB,cAAO,EACrB,OAAO;IACLW,OAAO,EAAEJ,aAAa;IACtBV,MAAM,EAAEgB,aAAa,CAAChB,MAAM;IAC5BkB,UAAU;IACVC;EACF,CAAC,CAAC,EACF,CAACH,aAAa,CAAChB,MAAM,EAAEU,aAAa,CACtC,CAAC;EAED,IAAAW,gBAAS,EAAC,MAAM;IACd,IAAI,CAACL,aAAa,CAAChB,MAAM,IAAI,OAAOsB,QAAQ,KAAK,WAAW,EAAE;MAC5D,OAAOC,SAAS;IAClB;IAEA,MAAMC,iBAAiB,GAAIC,KAAmB,IAAK;MACjD,MAAMC,QAAQ,GAAGT,OAAO,CAACU,OAAwC;MACjE,MAAMC,YAAY,GAAGT,WAAW,CAACQ,OAA6B;MAC9D,MAAME,WAAW,GAAGJ,KAAK,CAACK,MAAc;MACxC,IAAIJ,QAAQ,EAAEK,QAAQ,CAACF,WAAW,CAAC,IAAID,YAAY,EAAEG,QAAQ,CAACF,WAAW,CAAC,EAAE;QAC1E;MACF;MACAb,aAAa,CAACX,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM2B,aAAa,GAAIP,KAAoB,IAAK;MAC9C,IAAIA,KAAK,CAACQ,GAAG,KAAK,QAAQ,EAAE;QAC1BjB,aAAa,CAACX,KAAK,CAAC,CAAC;MACvB;IACF,CAAC;IAEDiB,QAAQ,CAACY,gBAAgB,CAAC,aAAa,EAAEV,iBAAiB,EAAE,IAAI,CAAC;IACjEF,QAAQ,CAACY,gBAAgB,CAAC,SAAS,EAAEF,aAAa,CAAC;IAEnD,OAAO,MAAM;MACXV,QAAQ,CAACa,mBAAmB,CAAC,aAAa,EAAEX,iBAAiB,EAAE,IAAI,CAAC;MACpEF,QAAQ,CAACa,mBAAmB,CAAC,SAAS,EAAEH,aAAa,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAAChB,aAAa,CAAC,CAAC;EAEnB,oBACE,IAAA3C,WAAA,CAAA+D,GAAA,EAAChE,QAAA,CAAAiE,WAAW,CAACC,QAAQ;IAACC,KAAK,EAAEnB,OAAQ;IAAAP,QAAA,eACnC,IAAAxC,WAAA,CAAA+D,GAAA,EAACrE,YAAA,CAAAyE,IAAI;MACHhC,GAAG,EAAES,OAAQ;MACbwB,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAE3B,aAAa,CAAChB,MAAM,IAAI0C,MAAM,CAACE,QAAQ,CAAE;MAAA/B,QAAA,EAE7DA;IAAQ,CACL;EAAC,CACa,CAAC;AAE3B;AAEO,SAASgC,OAAOA,CAAC;EACtBhC,QAAQ;EACRiC,KAAK;EACLC,IAAI,GAAG,QAAQ;EACfC;AACY,CAAC,EAAE;EACf,MAAM;IAAElC,OAAO;IAAEI;EAAW,CAAC,GAAG,IAAA+B,uBAAc,EAAC,CAAC;EAChD,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAjD,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAACkD,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAnD,eAAQ,EAAC,KAAK,CAAC;EAE7C,OAAOW,QAAQ,CAAC;IACdC,OAAO;IACPwC,KAAK,EAAE;MACLJ,OAAO;MACPE,OAAO;MACPG,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;MACLhD,GAAG,EAAEU,UAAU;MACfuC,OAAO,EAAEA,CAAA,KAAM3C,OAAO,CAACV,IAAI,CAAC,CAAC;MAC7BsD,OAAO,EAAEA,CAAA,KAAML,UAAU,CAAC,IAAI,CAAC;MAC/BM,MAAM,EAAEA,CAAA,KAAMN,UAAU,CAAC,KAAK,CAAC;MAC/BO,iBAAiB,EAAEZ,IAAI;MACvBa,kBAAkB,EAAEf,KAAK;MACzBgB,iBAAiB,EAAEf;IACrB;EACF,CAAC,CAAC;AACJ;AAEO,SAASgB,KAAKA,CAAC;EACpBlD,QAAQ;EACR4B;AAID,CAAC,EAAE;EACF,MAAMuB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM7C,OAAO,GAAG,IAAA6B,uBAAc,EAAC,CAAC;EAChC,MAAM,CAACiB,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAjE,eAAQ,EAAmB,IAAI,CAAC;EAEhE,IAAAkE,sBAAe,EAAC,MAAM;IACpB,IAAI,CAAChD,OAAO,CAACpB,MAAM,IAAI,OAAOqE,MAAM,KAAK,WAAW,EAAE;MACpD;IACF;IAEA,MAAMC,WAAW,GAAGlD,OAAO,CAACF,UAAU,EAAES,OAA6B;IACrE,IAAI,CAAC2C,WAAW,EAAEC,qBAAqB,EAAE;MACvC;IACF;IAEA,MAAMC,cAAc,GAAGA,CAAA,KAAM;MAC3B,MAAMC,IAAI,GAAGH,WAAW,CAACC,qBAAqB,CAAC,CAAC;MAChD,MAAMG,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEH,IAAI,CAACC,KAAK,CAAC;MACvC,MAAMG,cAAc,GAAGR,MAAM,CAACS,UAAU,GAAGnF,eAAe;MAC1D,MAAMoF,IAAI,GAAGJ,IAAI,CAACK,GAAG,CACnBL,IAAI,CAACC,GAAG,CAACjF,eAAe,EAAE8E,IAAI,CAACQ,KAAK,GAAGP,KAAK,CAAC,EAC7CC,IAAI,CAACC,GAAG,CAACjF,eAAe,EAAEkF,cAAc,GAAGH,KAAK,CAClD,CAAC;MACD,MAAMQ,GAAG,GAAGP,IAAI,CAACK,GAAG,CAClBP,IAAI,CAACU,MAAM,GAAGvF,WAAW,EACzB+E,IAAI,CAACC,GAAG,CAACjF,eAAe,EAAE0E,MAAM,CAACe,WAAW,GAAGzF,eAAe,CAChE,CAAC;MAEDwE,WAAW,CAAC;QACVD,QAAQ,EAAE,OAAqB;QAC/BgB,GAAG;QACHH,IAAI;QACJE,KAAK,EAAE1D,SAAS;QAChB4D,MAAM,EAAE5D,SAAS;QACjB8D,QAAQ,EAAEX;MACZ,CAAC,CAAC;IACJ,CAAC;IAEDF,cAAc,CAAC,CAAC;IAChBH,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAEsC,cAAc,CAAC;IACjDH,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAEsC,cAAc,EAAE,IAAI,CAAC;IAEvD,OAAO,MAAM;MACXH,MAAM,CAAClC,mBAAmB,CAAC,QAAQ,EAAEqC,cAAc,CAAC;MACpDH,MAAM,CAAClC,mBAAmB,CAAC,QAAQ,EAAEqC,cAAc,EAAE,IAAI,CAAC;IAC5D,CAAC;EACH,CAAC,EAAE,CAACpD,OAAO,CAACpB,MAAM,EAAEoB,OAAO,CAACF,UAAU,CAAC,CAAC;EAExC,IAAI,CAACE,OAAO,CAACpB,MAAM,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,oBACE,IAAA3B,WAAA,CAAA+D,GAAA,EAAClE,SAAA,CAAAoH,MAAM;IAAAzE,QAAA,eACL,IAAAxC,WAAA,CAAA+D,GAAA,EAACrE,YAAA,CAAAyE,IAAI;MACHhC,GAAG,EAAEY,OAAO,CAACD,WAA+B;MAC5CsB,KAAK,EAAE,CACLC,MAAM,CAAC6C,QAAQ,EACf;QACEC,eAAe,EAAExB,KAAK,CAACyB,MAAM,GACzBzB,KAAK,CAAC0B,MAAM,CAACC,mBAAmB,GAChC3B,KAAK,CAAC0B,MAAM,CAACE,UAAU;QAC3BC,WAAW,EAAE7B,KAAK,CAAC0B,MAAM,CAACI,WAAW;QACrCC,WAAW,EAAE/B,KAAK,CAAC0B,MAAM,CAACM;MAC5B,CAAC,EACDvD,KAAK,EACLC,MAAM,CAACuD,gBAAgB,EACvB/B,QAAQ,CACR;MAAArD,QAAA,EAEDA;IAAQ,CACL;EAAC,CACD,CAAC;AAEb;AAEO,SAASqF,IAAIA,CAAC;EAAErF,QAAQ;EAAEiC,KAAK;EAAEW,OAAO;EAAEhB,KAAK;EAAE,GAAG0D;AAAgB,CAAC,EAAE;EAC5E,MAAMnC,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM;IAAEnD;EAAQ,CAAC,GAAG,IAAAmC,uBAAc,EAAC,CAAC;EACpC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAjD,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAACkD,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAnD,eAAQ,EAAC,KAAK,CAAC;EAE7C,MAAMkG,WAAW,GAAG,IAAAC,kBAAW,EAC5B/H,CAA+C,IAAK;IACnDmF,OAAO,CAACnF,CAAC,CAAC;IACV,IAAI,CAACA,CAAC,CAACgI,gBAAgB,EAAE;MACvBxF,OAAO,CAACT,KAAK,CAAC,CAAC;IACjB;EACF,CAAC,EACD,CAACS,OAAO,EAAE2C,OAAO,CACnB,CAAC;EAED,MAAM8C,UAAU,GAAGC,OAAO,CAACL,IAAI,CAACM,QAAQ,CAAC;EACzC,MAAMC,aAAa,GAAG,CAACxD,OAAO,IAAIE,OAAO,KAAK,CAACmD,UAAU;EAEzD,MAAMI,gBAAgB,GAAG,IAAAxG,cAAO,EAC9B,OAAO;IAAEsG,QAAQ,EAAEF;EAAW,CAAC,CAAC,EAChC,CAACA,UAAU,CACb,CAAC;EAED,oBACE,IAAAlI,WAAA,CAAA+D,GAAA,EAACrE,YAAA,CAAA6I,SAAS;IAAA,GACJT,IAAI;IACRvC,iBAAiB,EAAC,EAAE;IACpBC,kBAAkB,EAAEf,KAAM;IAC1BW,OAAO,EAAE2C,WAAY;IACrB1C,OAAO,EAAEA,CAAA,KAAML,UAAU,CAAC,IAAI,CAAE;IAChCM,MAAM,EAAEA,CAAA,KAAMN,UAAU,CAAC,KAAK,CAAE;IAE9BwD,YAAY,EAAEA,CAAA,KAAM1D,UAAU,CAAC,IAAI,CAAC;IACpC2D,YAAY,EAAEA,CAAA,KAAM3D,UAAU,CAAC,KAAK,CAAC;IAEvCV,KAAK,EAAE,CACLC,MAAM,CAACqE,OAAO,EACdL,aAAa,IAAI;MACflB,eAAe,EAAExB,KAAK,CAACyB,MAAM,GACzBzB,KAAK,CAAC0B,MAAM,CAACsB,UAAU,GACvBhD,KAAK,CAAC0B,MAAM,CAACC;IACnB,CAAC,EACDlD,KAAK,CACL;IAAA5B,QAAA,eAEF,IAAAxC,WAAA,CAAA+D,GAAA,EAAChE,QAAA,CAAA6I,WAAW,CAAC3E,QAAQ;MAACC,KAAK,EAAEoE,gBAAiB;MAAA9F,QAAA,EAC3CA;IAAQ,CACW;EAAC,CACd,CAAC;AAEhB;AAEO,SAASqG,QAAQA,CAAC;EAAErG,QAAQ;EAAE4B;AAAqB,CAAC,EAAE;EAC3D,MAAMuB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM;IAAEwC;EAAS,CAAC,GAAG,IAAAU,2BAAkB,EAAC,CAAC;EAEzC,oBACE,IAAA9I,WAAA,CAAA+D,GAAA,EAACnE,MAAA,CAAAmJ,IAAI;IACH3E,KAAK,EAAE,CACLC,MAAM,CAAC2E,WAAW,EAClB;MAAEC,KAAK,EAAEb,QAAQ,GAAGzC,KAAK,CAAC0B,MAAM,CAAC6B,YAAY,GAAGvD,KAAK,CAAC0B,MAAM,CAAC8B;IAAK,CAAC,EACnE,IAAI/E,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAC,CACzB;IAAA5B,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX;AAEO,SAAS4G,QAAQA,CAAC;EAAEC,IAAI,EAAEC,IAAI;EAAEzD,QAAQ,GAAG,MAAM;EAAE0D;AAAoB,CAAC,EAAE;EAC/E,MAAM5D,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM;IAAEwC;EAAS,CAAC,GAAG,IAAAU,2BAAkB,EAAC,CAAC;EAEzC,oBACE,IAAA9I,WAAA,CAAA+D,GAAA,EAACrE,YAAA,CAAAyE,IAAI;IACHC,KAAK,EAAE,CACLyB,QAAQ,KAAK,MAAM,IAAIxB,MAAM,CAACmF,QAAQ,EACtC3D,QAAQ,KAAK,OAAO,IAAIxB,MAAM,CAACoF,SAAS,CACxC;IAAAjH,QAAA,eAEF,IAAAxC,WAAA,CAAA+D,GAAA,EAACuF,IAAI;MACHI,IAAI,EAAC,IAAI;MACTH,IAAI,EACFA,IAAI,GACAA,IAAI,CAAC;QAAEnB;MAAS,CAAC,CAAC,GAClBA,QAAQ,GACNzC,KAAK,CAAC0B,MAAM,CAAC6B,YAAY,GACzBvD,KAAK,CAAC0B,MAAM,CAACsC;IACpB,CACF;EAAC,CACE,CAAC;AAEX;AAEO,SAASC,KAAKA,CAAC;EAAEpH;AAAqB,CAAC,EAAE;EAC9C,oBAAO,IAAAxC,WAAA,CAAA+D,GAAA,EAAA/D,WAAA,CAAA6J,QAAA;IAAArH,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB;AAEO,SAASsH,OAAOA,CAAA,EAAG;EACxB,MAAMnE,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EAExB,oBACE,IAAA5F,WAAA,CAAA+D,GAAA,EAACrE,YAAA,CAAAyE,IAAI;IACHC,KAAK,EAAE,CACLC,MAAM,CAAC0F,OAAO,EACd;MAAE5C,eAAe,EAAExB,KAAK,CAAC0B,MAAM,CAACI;IAAY,CAAC;EAC7C,CACH,CAAC;AAEN;AAEA,MAAMpD,MAAM,GAAG2F,uBAAU,CAACC,MAAM,CAAC;EAC/B3F,IAAI,EAAE;IACJuB,QAAQ,EAAE;EACZ,CAAC;EACDtB,QAAQ,EAAE;IACR2F,MAAM,EAAE9I,UAAU,CAACkD;EACrB,CAAC;EACD4C,QAAQ,EAAE;IACRiD,YAAY,EAAE,CAAC;IACfC,OAAO,EAAE,CAAC;IACVC,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE,QAAQ;IAClBJ,MAAM,EAAE9I,UAAU,CAACmJ,OAAO;IAC1BC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,EAAE;IAChBC,YAAY,EAAE;MAAErE,KAAK,EAAE,CAAC;MAAEsE,MAAM,EAAE;IAAE,CAAC;IACrC3D,QAAQ,EAAE;EACZ,CAAC;EACDY,gBAAgB,EAAE;IAChBgD,aAAa,EAAE;EACjB,CAAC;EACDlC,OAAO,EAAE;IACPmC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,EAAE;IACPC,eAAe,EAAE,CAAC;IAClBb,YAAY,EAAE,CAAC;IACfG,QAAQ,EAAE,QAAQ;IAClBW,iBAAiB,EAAE,EAAE;IACrBC,SAAS,EAAE;EACb,CAAC;EACDlC,WAAW,EAAE;IACXmC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;EACD5B,QAAQ,EAAE;IACR6B,UAAU,EAAE,CAAC;EACf,CAAC;EACD5B,SAAS,EAAE;IACT6B,WAAW,EAAE,CAAC,CAAC;IACfD,UAAU,EAAE;EACd,CAAC;EACDtB,OAAO,EAAE;IACPY,MAAM,EAAE,CAAC;IACTY,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,14 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
3
+ import React, { useCallback, useEffect, 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";
7
+ import { Portal } from "../portal/index.web.js";
7
8
  import { createDropdownZIndex } from "../styles/z-index.js";
8
9
  import { MenuContext, ItemContext, useMenuContext, useMenuItemContext } from "./context.js";
9
10
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
10
11
  export { useMenuContext };
11
12
  const menuZIndex = createDropdownZIndex();
13
+ const VIEWPORT_GUTTER = 8;
14
+ const MENU_OFFSET = 6;
12
15
  export function useMenuControl() {
13
16
  const id = useId();
14
17
  const [isOpen, setIsOpen] = useState(false);
@@ -56,9 +59,13 @@ export function Root({
56
59
  const activeControl = control ?? defaultControl;
57
60
  const dialogControl = useMenuControlAsDialogControl(activeControl);
58
61
  const rootRef = useRef(null);
62
+ const triggerRef = useRef(null);
63
+ const dropdownRef = useRef(null);
59
64
  const context = useMemo(() => ({
60
65
  control: dialogControl,
61
- isOpen: activeControl.isOpen
66
+ isOpen: activeControl.isOpen,
67
+ triggerRef,
68
+ dropdownRef
62
69
  }), [activeControl.isOpen, dialogControl]);
63
70
  useEffect(() => {
64
71
  if (!activeControl.isOpen || typeof document === 'undefined') {
@@ -66,7 +73,9 @@ export function Root({
66
73
  }
67
74
  const handlePointerDown = event => {
68
75
  const rootNode = rootRef.current;
69
- if (rootNode?.contains(event.target)) {
76
+ const dropdownNode = dropdownRef.current;
77
+ const eventTarget = event.target;
78
+ if (rootNode?.contains(eventTarget) || dropdownNode?.contains(eventTarget)) {
70
79
  return;
71
80
  }
72
81
  activeControl.close();
@@ -99,7 +108,8 @@ export function Trigger({
99
108
  hint
100
109
  }) {
101
110
  const {
102
- control
111
+ control,
112
+ triggerRef
103
113
  } = useMenuContext();
104
114
  const [hovered, setHovered] = useState(false);
105
115
  const [focused, setFocused] = useState(false);
@@ -111,6 +121,7 @@ export function Trigger({
111
121
  pressed: false
112
122
  },
113
123
  props: {
124
+ ref: triggerRef,
114
125
  onPress: () => control.open(),
115
126
  onFocus: () => setFocused(true),
116
127
  onBlur: () => setFocused(false),
@@ -126,18 +137,51 @@ export function Outer({
126
137
  }) {
127
138
  const theme = useTheme();
128
139
  const context = useMenuContext();
129
- const dropdownRef = useRef(null);
140
+ const [position, setPosition] = useState(null);
141
+ useLayoutEffect(() => {
142
+ if (!context.isOpen || typeof window === 'undefined') {
143
+ return;
144
+ }
145
+ const triggerNode = context.triggerRef?.current;
146
+ if (!triggerNode?.getBoundingClientRect) {
147
+ return;
148
+ }
149
+ const updatePosition = () => {
150
+ const rect = triggerNode.getBoundingClientRect();
151
+ const width = Math.max(180, rect.width);
152
+ const availableRight = window.innerWidth - VIEWPORT_GUTTER;
153
+ const left = Math.min(Math.max(VIEWPORT_GUTTER, rect.right - width), Math.max(VIEWPORT_GUTTER, availableRight - width));
154
+ const top = Math.min(rect.bottom + MENU_OFFSET, Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER));
155
+ setPosition({
156
+ position: 'fixed',
157
+ top,
158
+ left,
159
+ right: undefined,
160
+ bottom: undefined,
161
+ minWidth: width
162
+ });
163
+ };
164
+ updatePosition();
165
+ window.addEventListener('resize', updatePosition);
166
+ window.addEventListener('scroll', updatePosition, true);
167
+ return () => {
168
+ window.removeEventListener('resize', updatePosition);
169
+ window.removeEventListener('scroll', updatePosition, true);
170
+ };
171
+ }, [context.isOpen, context.triggerRef]);
130
172
  if (!context.isOpen) {
131
173
  return null;
132
174
  }
133
- return /*#__PURE__*/_jsx(View, {
134
- ref: dropdownRef,
135
- style: [styles.dropdown, {
136
- backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
137
- borderColor: theme.colors.borderLight,
138
- shadowColor: theme.colors.shadow
139
- }, style],
140
- children: children
175
+ return /*#__PURE__*/_jsx(Portal, {
176
+ children: /*#__PURE__*/_jsx(View, {
177
+ ref: context.dropdownRef,
178
+ style: [styles.dropdown, {
179
+ backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
180
+ borderColor: theme.colors.borderLight,
181
+ shadowColor: theme.colors.shadow
182
+ }, style, styles.portaledDropdown, position],
183
+ children: children
184
+ })
141
185
  });
142
186
  }
143
187
  export function Item({
@@ -252,6 +296,9 @@ const styles = StyleSheet.create({
252
296
  },
253
297
  minWidth: 180
254
298
  },
299
+ portaledDropdown: {
300
+ pointerEvents: 'auto'
301
+ },
255
302
  webItem: {
256
303
  flexDirection: 'row',
257
304
  alignItems: 'center',
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useId","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","createDropdownZIndex","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","context","document","undefined","handlePointerDown","event","rootNode","current","contains","target","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","Trigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","dropdownRef","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","Item","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","ItemText","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","position","fill","iconLeft","iconRight","size","textSecondary","Group","Divider","divider","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","width","height","minWidth","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","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","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Root","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","Trigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","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","shadowColor","shadow","portaledDropdown","Item","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","ItemText","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","fill","iconLeft","iconRight","size","textSecondary","Group","Divider","divider","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","height","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":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAM3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAI1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CAiDD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAqBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA2BD;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAWN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAM1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CA0DD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAsBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA0ED;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
@@ -1,9 +1,19 @@
1
1
  import type { AccessibilityRole, GestureResponderEvent, PressableProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
2
2
  import type { Props as SVGIconProps } from '../icons/common';
3
3
  import type { DialogControlProps } from '../dialog/types';
4
+ export type MenuAnchorRect = {
5
+ top: number;
6
+ left: number;
7
+ right: number;
8
+ bottom: number;
9
+ width: number;
10
+ height: number;
11
+ };
4
12
  export type MenuContextType = {
5
13
  control: DialogControlProps;
6
14
  isOpen?: boolean;
15
+ triggerRef?: React.RefObject<unknown>;
16
+ dropdownRef?: React.RefObject<unknown>;
7
17
  };
8
18
  export type ItemContextType = {
9
19
  disabled: boolean;
@@ -16,6 +26,7 @@ export type TriggerChildProps = {
16
26
  pressed: boolean;
17
27
  };
18
28
  props: {
29
+ ref?: React.Ref<unknown>;
19
30
  onPress: () => void;
20
31
  onFocus?: () => void;
21
32
  onBlur?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAM3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAI1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CAiDD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAqBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA2BD;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAWN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAM1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CA0DD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAsBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA0ED;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
@@ -1,9 +1,19 @@
1
1
  import type { AccessibilityRole, GestureResponderEvent, PressableProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
2
2
  import type { Props as SVGIconProps } from '../icons/common';
3
3
  import type { DialogControlProps } from '../dialog/types';
4
+ export type MenuAnchorRect = {
5
+ top: number;
6
+ left: number;
7
+ right: number;
8
+ bottom: number;
9
+ width: number;
10
+ height: number;
11
+ };
4
12
  export type MenuContextType = {
5
13
  control: DialogControlProps;
6
14
  isOpen?: boolean;
15
+ triggerRef?: React.RefObject<unknown>;
16
+ dropdownRef?: React.RefObject<unknown>;
7
17
  };
8
18
  export type ItemContextType = {
9
19
  disabled: boolean;
@@ -16,6 +26,7 @@ export type TriggerChildProps = {
16
26
  pressed: boolean;
17
27
  };
18
28
  props: {
29
+ ref?: React.Ref<unknown>;
19
30
  onPress: () => void;
20
31
  onFocus?: () => void;
21
32
  onBlur?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
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",
@@ -5,6 +5,7 @@ import React, {
5
5
  useCallback,
6
6
  useEffect,
7
7
  useId,
8
+ useLayoutEffect,
8
9
  useMemo,
9
10
  useRef,
10
11
  useState,
@@ -14,6 +15,7 @@ import { Pressable, StyleSheet, View, type StyleProp, type ViewStyle } from 'rea
14
15
  import { useTheme } from '../theme/use-theme';
15
16
  import { Text } from '../typography';
16
17
  import type { DialogControlProps } from '../dialog/types';
18
+ import { Portal } from '../portal/index.web';
17
19
  import { createDropdownZIndex } from '../styles/z-index';
18
20
  import {
19
21
  MenuContext,
@@ -33,6 +35,8 @@ import type {
33
35
  export { useMenuContext };
34
36
 
35
37
  const menuZIndex = createDropdownZIndex();
38
+ const VIEWPORT_GUTTER = 8;
39
+ const MENU_OFFSET = 6;
36
40
 
37
41
  export type MenuControlProps = {
38
42
  id: string;
@@ -98,9 +102,16 @@ export function Root({
98
102
  const activeControl = control ?? defaultControl;
99
103
  const dialogControl = useMenuControlAsDialogControl(activeControl);
100
104
  const rootRef = useRef<View>(null);
105
+ const triggerRef = useRef<unknown>(null);
106
+ const dropdownRef = useRef<unknown>(null);
101
107
 
102
108
  const context = useMemo<MenuContextType>(
103
- () => ({ control: dialogControl, isOpen: activeControl.isOpen }),
109
+ () => ({
110
+ control: dialogControl,
111
+ isOpen: activeControl.isOpen,
112
+ triggerRef,
113
+ dropdownRef,
114
+ }),
104
115
  [activeControl.isOpen, dialogControl],
105
116
  );
106
117
 
@@ -111,7 +122,9 @@ export function Root({
111
122
 
112
123
  const handlePointerDown = (event: PointerEvent) => {
113
124
  const rootNode = rootRef.current as unknown as HTMLElement | null;
114
- if (rootNode?.contains(event.target as Node)) {
125
+ const dropdownNode = dropdownRef.current as HTMLElement | null;
126
+ const eventTarget = event.target as Node;
127
+ if (rootNode?.contains(eventTarget) || dropdownNode?.contains(eventTarget)) {
115
128
  return;
116
129
  }
117
130
  activeControl.close();
@@ -150,7 +163,7 @@ export function Trigger({
150
163
  role = 'button',
151
164
  hint,
152
165
  }: TriggerProps) {
153
- const { control } = useMenuContext();
166
+ const { control, triggerRef } = useMenuContext();
154
167
  const [hovered, setHovered] = useState(false);
155
168
  const [focused, setFocused] = useState(false);
156
169
 
@@ -162,6 +175,7 @@ export function Trigger({
162
175
  pressed: false,
163
176
  },
164
177
  props: {
178
+ ref: triggerRef,
165
179
  onPress: () => control.open(),
166
180
  onFocus: () => setFocused(true),
167
181
  onBlur: () => setFocused(false),
@@ -181,29 +195,76 @@ export function Outer({
181
195
  }>) {
182
196
  const theme = useTheme();
183
197
  const context = useMenuContext();
184
- const dropdownRef = useRef<View>(null);
198
+ const [position, setPosition] = useState<ViewStyle | null>(null);
199
+
200
+ useLayoutEffect(() => {
201
+ if (!context.isOpen || typeof window === 'undefined') {
202
+ return;
203
+ }
204
+
205
+ const triggerNode = context.triggerRef?.current as HTMLElement | null;
206
+ if (!triggerNode?.getBoundingClientRect) {
207
+ return;
208
+ }
209
+
210
+ const updatePosition = () => {
211
+ const rect = triggerNode.getBoundingClientRect();
212
+ const width = Math.max(180, rect.width);
213
+ const availableRight = window.innerWidth - VIEWPORT_GUTTER;
214
+ const left = Math.min(
215
+ Math.max(VIEWPORT_GUTTER, rect.right - width),
216
+ Math.max(VIEWPORT_GUTTER, availableRight - width),
217
+ );
218
+ const top = Math.min(
219
+ rect.bottom + MENU_OFFSET,
220
+ Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER),
221
+ );
222
+
223
+ setPosition({
224
+ position: 'fixed' as 'absolute',
225
+ top,
226
+ left,
227
+ right: undefined,
228
+ bottom: undefined,
229
+ minWidth: width,
230
+ });
231
+ };
232
+
233
+ updatePosition();
234
+ window.addEventListener('resize', updatePosition);
235
+ window.addEventListener('scroll', updatePosition, true);
236
+
237
+ return () => {
238
+ window.removeEventListener('resize', updatePosition);
239
+ window.removeEventListener('scroll', updatePosition, true);
240
+ };
241
+ }, [context.isOpen, context.triggerRef]);
185
242
 
186
243
  if (!context.isOpen) {
187
244
  return null;
188
245
  }
189
246
 
190
247
  return (
191
- <View
192
- ref={dropdownRef}
193
- style={[
194
- styles.dropdown,
195
- {
196
- backgroundColor: theme.isDark
197
- ? theme.colors.backgroundSecondary
198
- : theme.colors.background,
199
- borderColor: theme.colors.borderLight,
200
- shadowColor: theme.colors.shadow,
201
- },
202
- style,
203
- ]}
204
- >
205
- {children}
206
- </View>
248
+ <Portal>
249
+ <View
250
+ ref={context.dropdownRef as React.Ref<View>}
251
+ style={[
252
+ styles.dropdown,
253
+ {
254
+ backgroundColor: theme.isDark
255
+ ? theme.colors.backgroundSecondary
256
+ : theme.colors.background,
257
+ borderColor: theme.colors.borderLight,
258
+ shadowColor: theme.colors.shadow,
259
+ },
260
+ style,
261
+ styles.portaledDropdown,
262
+ position,
263
+ ]}
264
+ >
265
+ {children}
266
+ </View>
267
+ </Portal>
207
268
  );
208
269
  }
209
270
 
@@ -337,6 +398,9 @@ const styles = StyleSheet.create({
337
398
  shadowOffset: { width: 0, height: 4 },
338
399
  minWidth: 180,
339
400
  },
401
+ portaledDropdown: {
402
+ pointerEvents: 'auto',
403
+ },
340
404
  webItem: {
341
405
  flexDirection: 'row',
342
406
  alignItems: 'center',
package/src/menu/types.ts CHANGED
@@ -10,9 +10,20 @@ import type {
10
10
  import type { Props as SVGIconProps } from '../icons/common';
11
11
  import type { DialogControlProps } from '../dialog/types';
12
12
 
13
+ export type MenuAnchorRect = {
14
+ top: number;
15
+ left: number;
16
+ right: number;
17
+ bottom: number;
18
+ width: number;
19
+ height: number;
20
+ };
21
+
13
22
  export type MenuContextType = {
14
23
  control: DialogControlProps;
15
24
  isOpen?: boolean;
25
+ triggerRef?: React.RefObject<unknown>;
26
+ dropdownRef?: React.RefObject<unknown>;
16
27
  };
17
28
 
18
29
  export type ItemContextType = {
@@ -27,6 +38,7 @@ export type TriggerChildProps = {
27
38
  pressed: boolean;
28
39
  };
29
40
  props: {
41
+ ref?: React.Ref<unknown>;
30
42
  onPress: () => void;
31
43
  onFocus?: () => void;
32
44
  onBlur?: () => void;